netconsole.c (53aa930dc4bae6aa269951bd37103083145d6691) | netconsole.c (fb3ceec187e8bca474340e361a18163a2e79c0a2) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * linux/drivers/net/netconsole.c 4 * 5 * Copyright (C) 2001 Ingo Molnar <mingo@redhat.com> 6 * 7 * This file contains the implementation of an IRQ-safe, crash-safe 8 * kernel console implementation that outputs kernel messages to the --- 41 unchanged lines hidden (view full) --- 50 51static bool oops_only = false; 52module_param(oops_only, bool, 0600); 53MODULE_PARM_DESC(oops_only, "Only log oops messages"); 54 55#ifndef MODULE 56static int __init option_setup(char *opt) 57{ | 1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * linux/drivers/net/netconsole.c 4 * 5 * Copyright (C) 2001 Ingo Molnar <mingo@redhat.com> 6 * 7 * This file contains the implementation of an IRQ-safe, crash-safe 8 * kernel console implementation that outputs kernel messages to the --- 41 unchanged lines hidden (view full) --- 50 51static bool oops_only = false; 52module_param(oops_only, bool, 0600); 53MODULE_PARM_DESC(oops_only, "Only log oops messages"); 54 55#ifndef MODULE 56static int __init option_setup(char *opt) 57{ |
58 strlcpy(config, opt, MAX_PARAM_LENGTH); | 58 strscpy(config, opt, MAX_PARAM_LENGTH); |
59 return 1; 60} 61__setup("netconsole=", option_setup); 62#endif /* MODULE */ 63 64/* Linked list of all configured targets */ 65static LIST_HEAD(target_list); 66 --- 106 unchanged lines hidden (view full) --- 173 * Allocate and initialize with defaults. 174 * Note that these targets get their config_item fields zeroed-out. 175 */ 176 nt = kzalloc(sizeof(*nt), GFP_KERNEL); 177 if (!nt) 178 goto fail; 179 180 nt->np.name = "netconsole"; | 59 return 1; 60} 61__setup("netconsole=", option_setup); 62#endif /* MODULE */ 63 64/* Linked list of all configured targets */ 65static LIST_HEAD(target_list); 66 --- 106 unchanged lines hidden (view full) --- 173 * Allocate and initialize with defaults. 174 * Note that these targets get their config_item fields zeroed-out. 175 */ 176 nt = kzalloc(sizeof(*nt), GFP_KERNEL); 177 if (!nt) 178 goto fail; 179 180 nt->np.name = "netconsole"; |
181 strlcpy(nt->np.dev_name, "eth0", IFNAMSIZ); | 181 strscpy(nt->np.dev_name, "eth0", IFNAMSIZ); |
182 nt->np.local_port = 6665; 183 nt->np.remote_port = 6666; 184 eth_broadcast_addr(nt->np.remote_mac); 185 186 if (*target_config == '+') { 187 nt->extended = true; 188 target_config++; 189 } --- 219 unchanged lines hidden (view full) --- 409 mutex_lock(&dynamic_netconsole_mutex); 410 if (nt->enabled) { 411 pr_err("target (%s) is enabled, disable to update parameters\n", 412 config_item_name(&nt->item)); 413 mutex_unlock(&dynamic_netconsole_mutex); 414 return -EINVAL; 415 } 416 | 182 nt->np.local_port = 6665; 183 nt->np.remote_port = 6666; 184 eth_broadcast_addr(nt->np.remote_mac); 185 186 if (*target_config == '+') { 187 nt->extended = true; 188 target_config++; 189 } --- 219 unchanged lines hidden (view full) --- 409 mutex_lock(&dynamic_netconsole_mutex); 410 if (nt->enabled) { 411 pr_err("target (%s) is enabled, disable to update parameters\n", 412 config_item_name(&nt->item)); 413 mutex_unlock(&dynamic_netconsole_mutex); 414 return -EINVAL; 415 } 416 |
417 strlcpy(nt->np.dev_name, buf, IFNAMSIZ); | 417 strscpy(nt->np.dev_name, buf, IFNAMSIZ); |
418 419 /* Get rid of possible trailing newline from echo(1) */ 420 len = strnlen(nt->np.dev_name, IFNAMSIZ); 421 if (nt->np.dev_name[len - 1] == '\n') 422 nt->np.dev_name[len - 1] = '\0'; 423 424 mutex_unlock(&dynamic_netconsole_mutex); 425 return strnlen(buf, count); --- 199 unchanged lines hidden (view full) --- 625 * Allocate and initialize with defaults. 626 * Target is disabled at creation (!enabled). 627 */ 628 nt = kzalloc(sizeof(*nt), GFP_KERNEL); 629 if (!nt) 630 return ERR_PTR(-ENOMEM); 631 632 nt->np.name = "netconsole"; | 418 419 /* Get rid of possible trailing newline from echo(1) */ 420 len = strnlen(nt->np.dev_name, IFNAMSIZ); 421 if (nt->np.dev_name[len - 1] == '\n') 422 nt->np.dev_name[len - 1] = '\0'; 423 424 mutex_unlock(&dynamic_netconsole_mutex); 425 return strnlen(buf, count); --- 199 unchanged lines hidden (view full) --- 625 * Allocate and initialize with defaults. 626 * Target is disabled at creation (!enabled). 627 */ 628 nt = kzalloc(sizeof(*nt), GFP_KERNEL); 629 if (!nt) 630 return ERR_PTR(-ENOMEM); 631 632 nt->np.name = "netconsole"; |
633 strlcpy(nt->np.dev_name, "eth0", IFNAMSIZ); | 633 strscpy(nt->np.dev_name, "eth0", IFNAMSIZ); |
634 nt->np.local_port = 6665; 635 nt->np.remote_port = 6666; 636 eth_broadcast_addr(nt->np.remote_mac); 637 638 /* Initialize the config_item member */ 639 config_item_init_type_name(&nt->item, name, &netconsole_target_type); 640 641 /* Adding, but it is disabled */ --- 61 unchanged lines hidden (view full) --- 703 704 spin_lock_irqsave(&target_list_lock, flags); 705restart: 706 list_for_each_entry(nt, &target_list, list) { 707 netconsole_target_get(nt); 708 if (nt->np.dev == dev) { 709 switch (event) { 710 case NETDEV_CHANGENAME: | 634 nt->np.local_port = 6665; 635 nt->np.remote_port = 6666; 636 eth_broadcast_addr(nt->np.remote_mac); 637 638 /* Initialize the config_item member */ 639 config_item_init_type_name(&nt->item, name, &netconsole_target_type); 640 641 /* Adding, but it is disabled */ --- 61 unchanged lines hidden (view full) --- 703 704 spin_lock_irqsave(&target_list_lock, flags); 705restart: 706 list_for_each_entry(nt, &target_list, list) { 707 netconsole_target_get(nt); 708 if (nt->np.dev == dev) { 709 switch (event) { 710 case NETDEV_CHANGENAME: |
711 strlcpy(nt->np.dev_name, dev->name, IFNAMSIZ); | 711 strscpy(nt->np.dev_name, dev->name, IFNAMSIZ); |
712 break; 713 case NETDEV_RELEASE: 714 case NETDEV_JOIN: 715 case NETDEV_UNREGISTER: 716 /* rtnl_lock already held 717 * we might sleep in __netpoll_cleanup() 718 */ 719 spin_unlock_irqrestore(&target_list_lock, flags); --- 255 unchanged lines hidden --- | 712 break; 713 case NETDEV_RELEASE: 714 case NETDEV_JOIN: 715 case NETDEV_UNREGISTER: 716 /* rtnl_lock already held 717 * we might sleep in __netpoll_cleanup() 718 */ 719 spin_unlock_irqrestore(&target_list_lock, flags); --- 255 unchanged lines hidden --- |