RE: WARNING in kobject_add_internal
Hi, I have a question, "can syzbot auto test each tree with newest changeset" ? > -Original Message- > From: netdev-ow...@vger.kernel.org [mailto:netdev-ow...@vger.kernel.org] > On Behalf Of Dmitry Vyukov > Sent: Wednesday, April 11, 2018 10:58 PM > To: syzbot > Cc: bri...@lists.linux-foundation.org; David Miller; Greg Kroah-Hartman; > LKML; netdev; stephen hemminger; syzkaller-bugs > Subject: Re: WARNING in kobject_add_internal > > On Fri, Jan 5, 2018 at 10:41 PM, syzbot >il.com> > wrote: > > syzkaller has found reproducer for the following crash on > > 89876f275e8d562912d9c238cd888b52065cf25c > > git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/master > > compiler: gcc (GCC) 7.1.1 20170620 > > .config is attached > > Raw console output is attached. > > C reproducer is attached > > syzkaller reproducer is attached. See https://goo.gl/kgGztJ > > for information about syzkaller reproducers > > > > > > IMPORTANT: if you fix the bug, please add the following tag to the commit: > > Reported-by: > > > syzbot+e204ced820ef739d71ef5438f5e1976a874abc8d@syzkaller.appspotmail > .com > > It will help syzbot understand when the bug is fixed. > > #syz dup: WARNING: kobject bug in device_add > > > [ cut here ] > > kobject_add_internal failed for (error: -12 parent: net) > > WARNING: CPU: 1 PID: 3494 at lib/kobject.c:244 > > kobject_add_internal+0x3f6/0xbc0 lib/kobject.c:242 > > Kernel panic - not syncing: panic_on_warn set ... > > > > CPU: 1 PID: 3494 Comm: syzkaller425998 Not tainted 4.15.0-rc6+ #249 > > Hardware name: Google Google Compute Engine/Google Compute Engine, > BIOS > > Google 01/01/2011 > > Call Trace: > > __dump_stack lib/dump_stack.c:17 [inline] > > dump_stack+0x194/0x257 lib/dump_stack.c:53 > > panic+0x1e4/0x41c kernel/panic.c:183 > > __warn+0x1dc/0x200 kernel/panic.c:547 > > report_bug+0x211/0x2d0 lib/bug.c:184 > > fixup_bug.part.11+0x37/0x80 arch/x86/kernel/traps.c:178 > > fixup_bug arch/x86/kernel/traps.c:247 [inline] > > do_error_trap+0x2d7/0x3e0 arch/x86/kernel/traps.c:296 > > do_invalid_op+0x1b/0x20 arch/x86/kernel/traps.c:315 > > invalid_op+0x22/0x40 arch/x86/entry/entry_64.S:1079 > > RIP: 0010:kobject_add_internal+0x3f6/0xbc0 lib/kobject.c:242 > > RSP: 0018:8801c53c76f0 EFLAGS: 00010286 > > RAX: dc08 RBX: 8801bf5a88d8 RCX: 8159da9e > > RDX: RSI: 110038a78e99 RDI: 8801c53c73f8 > > RBP: 8801c53c77e8 R08: 110038a78e5b R09: > > R10: 8801c53c74b0 R11: R12: 110038a78ee4 > > R13: fff4 R14: 8801d8359a80 R15: 86201980 > > kobject_add_varg lib/kobject.c:366 [inline] > > kobject_add+0x132/0x1f0 lib/kobject.c:411 > > device_add+0x35d/0x1650 drivers/base/core.c:1787 > > netdev_register_kobject+0x183/0x360 net/core/net-sysfs.c:1604 > > register_netdevice+0xb2b/0x1010 net/core/dev.c:7698 > > tun_set_iff drivers/net/tun.c:2319 [inline] > > __tun_chr_ioctl+0x1d89/0x3dd0 drivers/net/tun.c:2524 > > tun_chr_ioctl+0x2a/0x40 drivers/net/tun.c:2773 > > vfs_ioctl fs/ioctl.c:46 [inline] > > do_vfs_ioctl+0x1b1/0x1520 fs/ioctl.c:686 > > SYSC_ioctl fs/ioctl.c:701 [inline] > > SyS_ioctl+0x8f/0xc0 fs/ioctl.c:692 > > entry_SYSCALL_64_fastpath+0x23/0x9a > > RIP: 0033:0x444fc9 > > RSP: 002b:7fff53389dc8 EFLAGS: 0246 ORIG_RAX: > 0010 > > RAX: ffda RBX: 0001 RCX: 00444fc9 > > RDX: 20533000 RSI: 400454ca RDI: 0004 > > RBP: 0005 R08: 0002 R09: 006f3131 > > R10: R11: 0246 R12: 00402500 > > R13: 00402590 R14: R15: > > > > Dumping ftrace buffer: > >(ftrace buffer empty) > > Kernel Offset: disabled > > Rebooting in 86400 seconds.. > >
RE: WARNING in kobject_add_internal
Hi, I have a question, "can syzbot auto test each tree with newest changeset" ? > -Original Message- > From: netdev-ow...@vger.kernel.org [mailto:netdev-ow...@vger.kernel.org] > On Behalf Of Dmitry Vyukov > Sent: Wednesday, April 11, 2018 10:58 PM > To: syzbot > Cc: bri...@lists.linux-foundation.org; David Miller; Greg Kroah-Hartman; > LKML; netdev; stephen hemminger; syzkaller-bugs > Subject: Re: WARNING in kobject_add_internal > > On Fri, Jan 5, 2018 at 10:41 PM, syzbot > il.com> > wrote: > > syzkaller has found reproducer for the following crash on > > 89876f275e8d562912d9c238cd888b52065cf25c > > git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/master > > compiler: gcc (GCC) 7.1.1 20170620 > > .config is attached > > Raw console output is attached. > > C reproducer is attached > > syzkaller reproducer is attached. See https://goo.gl/kgGztJ > > for information about syzkaller reproducers > > > > > > IMPORTANT: if you fix the bug, please add the following tag to the commit: > > Reported-by: > > > syzbot+e204ced820ef739d71ef5438f5e1976a874abc8d@syzkaller.appspotmail > .com > > It will help syzbot understand when the bug is fixed. > > #syz dup: WARNING: kobject bug in device_add > > > [ cut here ] > > kobject_add_internal failed for (error: -12 parent: net) > > WARNING: CPU: 1 PID: 3494 at lib/kobject.c:244 > > kobject_add_internal+0x3f6/0xbc0 lib/kobject.c:242 > > Kernel panic - not syncing: panic_on_warn set ... > > > > CPU: 1 PID: 3494 Comm: syzkaller425998 Not tainted 4.15.0-rc6+ #249 > > Hardware name: Google Google Compute Engine/Google Compute Engine, > BIOS > > Google 01/01/2011 > > Call Trace: > > __dump_stack lib/dump_stack.c:17 [inline] > > dump_stack+0x194/0x257 lib/dump_stack.c:53 > > panic+0x1e4/0x41c kernel/panic.c:183 > > __warn+0x1dc/0x200 kernel/panic.c:547 > > report_bug+0x211/0x2d0 lib/bug.c:184 > > fixup_bug.part.11+0x37/0x80 arch/x86/kernel/traps.c:178 > > fixup_bug arch/x86/kernel/traps.c:247 [inline] > > do_error_trap+0x2d7/0x3e0 arch/x86/kernel/traps.c:296 > > do_invalid_op+0x1b/0x20 arch/x86/kernel/traps.c:315 > > invalid_op+0x22/0x40 arch/x86/entry/entry_64.S:1079 > > RIP: 0010:kobject_add_internal+0x3f6/0xbc0 lib/kobject.c:242 > > RSP: 0018:8801c53c76f0 EFLAGS: 00010286 > > RAX: dc08 RBX: 8801bf5a88d8 RCX: 8159da9e > > RDX: RSI: 110038a78e99 RDI: 8801c53c73f8 > > RBP: 8801c53c77e8 R08: 110038a78e5b R09: > > R10: 8801c53c74b0 R11: R12: 110038a78ee4 > > R13: fff4 R14: 8801d8359a80 R15: 86201980 > > kobject_add_varg lib/kobject.c:366 [inline] > > kobject_add+0x132/0x1f0 lib/kobject.c:411 > > device_add+0x35d/0x1650 drivers/base/core.c:1787 > > netdev_register_kobject+0x183/0x360 net/core/net-sysfs.c:1604 > > register_netdevice+0xb2b/0x1010 net/core/dev.c:7698 > > tun_set_iff drivers/net/tun.c:2319 [inline] > > __tun_chr_ioctl+0x1d89/0x3dd0 drivers/net/tun.c:2524 > > tun_chr_ioctl+0x2a/0x40 drivers/net/tun.c:2773 > > vfs_ioctl fs/ioctl.c:46 [inline] > > do_vfs_ioctl+0x1b1/0x1520 fs/ioctl.c:686 > > SYSC_ioctl fs/ioctl.c:701 [inline] > > SyS_ioctl+0x8f/0xc0 fs/ioctl.c:692 > > entry_SYSCALL_64_fastpath+0x23/0x9a > > RIP: 0033:0x444fc9 > > RSP: 002b:7fff53389dc8 EFLAGS: 0246 ORIG_RAX: > 0010 > > RAX: ffda RBX: 0001 RCX: 00444fc9 > > RDX: 20533000 RSI: 400454ca RDI: 0004 > > RBP: 0005 R08: 0002 R09: 006f3131 > > R10: R11: 0246 R12: 00402500 > > R13: 00402590 R14: R15: > > > > Dumping ftrace buffer: > >(ftrace buffer empty) > > Kernel Offset: disabled > > Rebooting in 86400 seconds.. > >
[PATCH for-next v2] tracing: optimize trace_buffer_iter()
From: yuan linyu <linyu.y...@alcatel-sbell.com.cn> use conditional operation. Signed-off-by: yuan linyu <linyu.y...@alcatel-sbell.com.cn> --- kernel/trace/trace.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 6fb46a06c9dc..bda717ab2095 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -582,9 +582,7 @@ static __always_inline void trace_clear_recursion(int bit) static inline struct ring_buffer_iter * trace_buffer_iter(struct trace_iterator *iter, int cpu) { - if (iter->buffer_iter && iter->buffer_iter[cpu]) - return iter->buffer_iter[cpu]; - return NULL; + return iter->buffer_iter ? iter->buffer_iter[cpu] : NULL; } int tracer_init(struct tracer *t, struct trace_array *tr); -- 2.14.1
[PATCH for-next v2] tracing: optimize trace_buffer_iter()
From: yuan linyu use conditional operation. Signed-off-by: yuan linyu --- kernel/trace/trace.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 6fb46a06c9dc..bda717ab2095 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -582,9 +582,7 @@ static __always_inline void trace_clear_recursion(int bit) static inline struct ring_buffer_iter * trace_buffer_iter(struct trace_iterator *iter, int cpu) { - if (iter->buffer_iter && iter->buffer_iter[cpu]) - return iter->buffer_iter[cpu]; - return NULL; + return iter->buffer_iter ? iter->buffer_iter[cpu] : NULL; } int tracer_init(struct tracer *t, struct trace_array *tr); -- 2.14.1
[RFC linux v2] init: make all setup_arch() output string to boot_command_line[]
From: yuan linyu <linyu.y...@alcatel-sbell.com.cn> then all arch boot parameter handled in the same way in start_kernel() Signed-off-by: yuan linyu <linyu.y...@alcatel-sbell.com.cn> --- v2: fix kbuild issue of parisc arch/alpha/kernel/setup.c | 4 +--- arch/arc/kernel/setup.c| 5 + arch/arm/kernel/setup.c| 7 +-- arch/arm64/kernel/setup.c | 4 +--- arch/c6x/kernel/setup.c| 5 + arch/h8300/kernel/setup.c | 3 +-- arch/hexagon/kernel/setup.c| 16 +--- arch/ia64/kernel/setup.c | 15 --- arch/m68k/kernel/setup_mm.c| 5 ++--- arch/m68k/kernel/setup_no.c| 3 +-- arch/microblaze/kernel/setup.c | 4 +--- arch/mips/kernel/setup.c | 11 +++ arch/nds32/kernel/setup.c | 3 +-- arch/nios2/kernel/setup.c | 5 + arch/openrisc/kernel/setup.c | 4 +--- arch/parisc/kernel/setup.c | 11 +++ arch/powerpc/kernel/setup-common.c | 4 +--- arch/riscv/kernel/setup.c | 4 +--- arch/s390/kernel/setup.c | 6 +- arch/sh/kernel/setup.c | 7 --- arch/sparc/kernel/setup_32.c | 9 + arch/sparc/kernel/setup_64.c | 8 arch/um/kernel/um_arch.c | 3 +-- arch/unicore32/kernel/setup.c | 8 +--- arch/x86/kernel/setup.c| 6 +- arch/xtensa/kernel/setup.c | 9 + include/linux/init.h | 2 +- init/main.c| 14 +++--- 28 files changed, 60 insertions(+), 125 deletions(-) diff --git a/arch/alpha/kernel/setup.c b/arch/alpha/kernel/setup.c index 5576f7646fb6..c74675cf7129 100644 --- a/arch/alpha/kernel/setup.c +++ b/arch/alpha/kernel/setup.c @@ -505,8 +505,7 @@ register_cpus(void) arch_initcall(register_cpus); -void __init -setup_arch(char **cmdline_p) +void __init setup_arch(void) { extern char _end[]; @@ -566,7 +565,6 @@ setup_arch(char **cmdline_p) strlcpy(command_line, COMMAND_LINE, sizeof command_line); } strcpy(boot_command_line, command_line); - *cmdline_p = command_line; /* * Process command-line arguments. diff --git a/arch/arc/kernel/setup.c b/arch/arc/kernel/setup.c index b2cae79a25d7..9cfdcf42bf28 100644 --- a/arch/arc/kernel/setup.c +++ b/arch/arc/kernel/setup.c @@ -456,7 +456,7 @@ static inline int is_kernel(unsigned long addr) return 0; } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { #ifdef CONFIG_ARC_UBOOT_SUPPORT /* make sure that uboot passed pointer to cmdline/dtb is valid */ @@ -487,9 +487,6 @@ void __init setup_arch(char **cmdline_p) } } - /* Save unparsed command line copy for /proc/cmdline */ - *cmdline_p = boot_command_line; - /* To force early parsing of things like mem=xxx */ parse_early_param(); diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index fc40a2b40595..1025e3a37689 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -153,7 +153,6 @@ EXPORT_SYMBOL(elf_platform); static const char *cpu_name; static const char *machine_name; -static char __initdata cmd_line[COMMAND_LINE_SIZE]; const struct machine_desc *machine_desc __initdata; static union { char c[4]; unsigned long l; } endian_test __initdata = { { 'l', '?', '?', 'b' } }; @@ -1061,7 +1060,7 @@ void __init hyp_mode_check(void) #endif } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { const struct machine_desc *mdesc; @@ -1091,10 +1090,6 @@ void __init setup_arch(char **cmdline_p) init_mm.end_data = (unsigned long) _edata; init_mm.brk= (unsigned long) _end; - /* populate cmd_line too for later use, preserving boot_command_line */ - strlcpy(cmd_line, boot_command_line, COMMAND_LINE_SIZE); - *cmdline_p = cmd_line; - early_fixmap_init(); early_ioremap_init(); diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c index 30ad2f085d1f..c7ba4d32e7f7 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c @@ -243,15 +243,13 @@ static void __init request_standard_resources(void) u64 __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = INVALID_HWID }; -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { init_mm.start_code = (unsigned long) _text; init_mm.end_code = (unsigned long) _etext; init_mm.end_data = (unsigned long) _edata; init_mm.brk= (unsigned long) _end; - *cmdline_p = boot_command_line; - early_fixmap_init(); early_ioremap_init(); diff --git a/arch/c6x/kernel/setup.c b/arch/c6x/kernel/setup.c index 786e36e2f61d..012c8e746889 100644 --- a/arch/c6x/kernel/setup.c +++ b/arch/c6x/kernel/setup.c @@ -294,16 +294,13 @@ notrace
[RFC linux v2] init: make all setup_arch() output string to boot_command_line[]
From: yuan linyu then all arch boot parameter handled in the same way in start_kernel() Signed-off-by: yuan linyu --- v2: fix kbuild issue of parisc arch/alpha/kernel/setup.c | 4 +--- arch/arc/kernel/setup.c| 5 + arch/arm/kernel/setup.c| 7 +-- arch/arm64/kernel/setup.c | 4 +--- arch/c6x/kernel/setup.c| 5 + arch/h8300/kernel/setup.c | 3 +-- arch/hexagon/kernel/setup.c| 16 +--- arch/ia64/kernel/setup.c | 15 --- arch/m68k/kernel/setup_mm.c| 5 ++--- arch/m68k/kernel/setup_no.c| 3 +-- arch/microblaze/kernel/setup.c | 4 +--- arch/mips/kernel/setup.c | 11 +++ arch/nds32/kernel/setup.c | 3 +-- arch/nios2/kernel/setup.c | 5 + arch/openrisc/kernel/setup.c | 4 +--- arch/parisc/kernel/setup.c | 11 +++ arch/powerpc/kernel/setup-common.c | 4 +--- arch/riscv/kernel/setup.c | 4 +--- arch/s390/kernel/setup.c | 6 +- arch/sh/kernel/setup.c | 7 --- arch/sparc/kernel/setup_32.c | 9 + arch/sparc/kernel/setup_64.c | 8 arch/um/kernel/um_arch.c | 3 +-- arch/unicore32/kernel/setup.c | 8 +--- arch/x86/kernel/setup.c| 6 +- arch/xtensa/kernel/setup.c | 9 + include/linux/init.h | 2 +- init/main.c| 14 +++--- 28 files changed, 60 insertions(+), 125 deletions(-) diff --git a/arch/alpha/kernel/setup.c b/arch/alpha/kernel/setup.c index 5576f7646fb6..c74675cf7129 100644 --- a/arch/alpha/kernel/setup.c +++ b/arch/alpha/kernel/setup.c @@ -505,8 +505,7 @@ register_cpus(void) arch_initcall(register_cpus); -void __init -setup_arch(char **cmdline_p) +void __init setup_arch(void) { extern char _end[]; @@ -566,7 +565,6 @@ setup_arch(char **cmdline_p) strlcpy(command_line, COMMAND_LINE, sizeof command_line); } strcpy(boot_command_line, command_line); - *cmdline_p = command_line; /* * Process command-line arguments. diff --git a/arch/arc/kernel/setup.c b/arch/arc/kernel/setup.c index b2cae79a25d7..9cfdcf42bf28 100644 --- a/arch/arc/kernel/setup.c +++ b/arch/arc/kernel/setup.c @@ -456,7 +456,7 @@ static inline int is_kernel(unsigned long addr) return 0; } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { #ifdef CONFIG_ARC_UBOOT_SUPPORT /* make sure that uboot passed pointer to cmdline/dtb is valid */ @@ -487,9 +487,6 @@ void __init setup_arch(char **cmdline_p) } } - /* Save unparsed command line copy for /proc/cmdline */ - *cmdline_p = boot_command_line; - /* To force early parsing of things like mem=xxx */ parse_early_param(); diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index fc40a2b40595..1025e3a37689 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -153,7 +153,6 @@ EXPORT_SYMBOL(elf_platform); static const char *cpu_name; static const char *machine_name; -static char __initdata cmd_line[COMMAND_LINE_SIZE]; const struct machine_desc *machine_desc __initdata; static union { char c[4]; unsigned long l; } endian_test __initdata = { { 'l', '?', '?', 'b' } }; @@ -1061,7 +1060,7 @@ void __init hyp_mode_check(void) #endif } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { const struct machine_desc *mdesc; @@ -1091,10 +1090,6 @@ void __init setup_arch(char **cmdline_p) init_mm.end_data = (unsigned long) _edata; init_mm.brk= (unsigned long) _end; - /* populate cmd_line too for later use, preserving boot_command_line */ - strlcpy(cmd_line, boot_command_line, COMMAND_LINE_SIZE); - *cmdline_p = cmd_line; - early_fixmap_init(); early_ioremap_init(); diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c index 30ad2f085d1f..c7ba4d32e7f7 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c @@ -243,15 +243,13 @@ static void __init request_standard_resources(void) u64 __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = INVALID_HWID }; -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { init_mm.start_code = (unsigned long) _text; init_mm.end_code = (unsigned long) _etext; init_mm.end_data = (unsigned long) _edata; init_mm.brk= (unsigned long) _end; - *cmdline_p = boot_command_line; - early_fixmap_init(); early_ioremap_init(); diff --git a/arch/c6x/kernel/setup.c b/arch/c6x/kernel/setup.c index 786e36e2f61d..012c8e746889 100644 --- a/arch/c6x/kernel/setup.c +++ b/arch/c6x/kernel/setup.c @@ -294,16 +294,13 @@ notrace void __init machine_init(unsigned long dt_ptr) parse_early_param
[RFC linux] init: make all setup_arch() output string to boot_command_line[]
From: yuan linyu <linyu.y...@alcatel-sbell.com.cn> then all arch boot parameter handled in the same way in start_kernel() Signed-off-by: yuan linyu <linyu.y...@alcatel-sbell.com.cn> --- arch/alpha/kernel/setup.c | 4 +--- arch/arc/kernel/setup.c| 5 + arch/arm/kernel/setup.c| 7 +-- arch/arm64/kernel/setup.c | 4 +--- arch/c6x/kernel/setup.c| 5 + arch/h8300/kernel/setup.c | 3 +-- arch/hexagon/kernel/setup.c| 16 +--- arch/ia64/kernel/setup.c | 15 --- arch/m68k/kernel/setup_mm.c| 5 ++--- arch/m68k/kernel/setup_no.c| 3 +-- arch/microblaze/kernel/setup.c | 4 +--- arch/mips/kernel/setup.c | 11 +++ arch/nds32/kernel/setup.c | 3 +-- arch/nios2/kernel/setup.c | 5 + arch/openrisc/kernel/setup.c | 4 +--- arch/parisc/kernel/setup.c | 9 ++--- arch/powerpc/kernel/setup-common.c | 4 +--- arch/riscv/kernel/setup.c | 4 +--- arch/s390/kernel/setup.c | 6 +- arch/sh/kernel/setup.c | 7 --- arch/sparc/kernel/setup_32.c | 9 + arch/sparc/kernel/setup_64.c | 8 arch/um/kernel/um_arch.c | 3 +-- arch/unicore32/kernel/setup.c | 8 +--- arch/x86/kernel/setup.c| 6 +- arch/xtensa/kernel/setup.c | 9 + include/linux/init.h | 2 +- init/main.c| 14 +++--- 28 files changed, 59 insertions(+), 124 deletions(-) diff --git a/arch/alpha/kernel/setup.c b/arch/alpha/kernel/setup.c index 5576f7646fb6..c74675cf7129 100644 --- a/arch/alpha/kernel/setup.c +++ b/arch/alpha/kernel/setup.c @@ -505,8 +505,7 @@ register_cpus(void) arch_initcall(register_cpus); -void __init -setup_arch(char **cmdline_p) +void __init setup_arch(void) { extern char _end[]; @@ -566,7 +565,6 @@ setup_arch(char **cmdline_p) strlcpy(command_line, COMMAND_LINE, sizeof command_line); } strcpy(boot_command_line, command_line); - *cmdline_p = command_line; /* * Process command-line arguments. diff --git a/arch/arc/kernel/setup.c b/arch/arc/kernel/setup.c index b2cae79a25d7..9cfdcf42bf28 100644 --- a/arch/arc/kernel/setup.c +++ b/arch/arc/kernel/setup.c @@ -456,7 +456,7 @@ static inline int is_kernel(unsigned long addr) return 0; } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { #ifdef CONFIG_ARC_UBOOT_SUPPORT /* make sure that uboot passed pointer to cmdline/dtb is valid */ @@ -487,9 +487,6 @@ void __init setup_arch(char **cmdline_p) } } - /* Save unparsed command line copy for /proc/cmdline */ - *cmdline_p = boot_command_line; - /* To force early parsing of things like mem=xxx */ parse_early_param(); diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index fc40a2b40595..1025e3a37689 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -153,7 +153,6 @@ EXPORT_SYMBOL(elf_platform); static const char *cpu_name; static const char *machine_name; -static char __initdata cmd_line[COMMAND_LINE_SIZE]; const struct machine_desc *machine_desc __initdata; static union { char c[4]; unsigned long l; } endian_test __initdata = { { 'l', '?', '?', 'b' } }; @@ -1061,7 +1060,7 @@ void __init hyp_mode_check(void) #endif } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { const struct machine_desc *mdesc; @@ -1091,10 +1090,6 @@ void __init setup_arch(char **cmdline_p) init_mm.end_data = (unsigned long) _edata; init_mm.brk= (unsigned long) _end; - /* populate cmd_line too for later use, preserving boot_command_line */ - strlcpy(cmd_line, boot_command_line, COMMAND_LINE_SIZE); - *cmdline_p = cmd_line; - early_fixmap_init(); early_ioremap_init(); diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c index 30ad2f085d1f..c7ba4d32e7f7 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c @@ -243,15 +243,13 @@ static void __init request_standard_resources(void) u64 __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = INVALID_HWID }; -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { init_mm.start_code = (unsigned long) _text; init_mm.end_code = (unsigned long) _etext; init_mm.end_data = (unsigned long) _edata; init_mm.brk= (unsigned long) _end; - *cmdline_p = boot_command_line; - early_fixmap_init(); early_ioremap_init(); diff --git a/arch/c6x/kernel/setup.c b/arch/c6x/kernel/setup.c index 786e36e2f61d..012c8e746889 100644 --- a/arch/c6x/kernel/setup.c +++ b/arch/c6x/kernel/setup.c @@ -294,16 +294,13 @@ notrace void __init machine_init(unsigned
[RFC linux] init: make all setup_arch() output string to boot_command_line[]
From: yuan linyu then all arch boot parameter handled in the same way in start_kernel() Signed-off-by: yuan linyu --- arch/alpha/kernel/setup.c | 4 +--- arch/arc/kernel/setup.c| 5 + arch/arm/kernel/setup.c| 7 +-- arch/arm64/kernel/setup.c | 4 +--- arch/c6x/kernel/setup.c| 5 + arch/h8300/kernel/setup.c | 3 +-- arch/hexagon/kernel/setup.c| 16 +--- arch/ia64/kernel/setup.c | 15 --- arch/m68k/kernel/setup_mm.c| 5 ++--- arch/m68k/kernel/setup_no.c| 3 +-- arch/microblaze/kernel/setup.c | 4 +--- arch/mips/kernel/setup.c | 11 +++ arch/nds32/kernel/setup.c | 3 +-- arch/nios2/kernel/setup.c | 5 + arch/openrisc/kernel/setup.c | 4 +--- arch/parisc/kernel/setup.c | 9 ++--- arch/powerpc/kernel/setup-common.c | 4 +--- arch/riscv/kernel/setup.c | 4 +--- arch/s390/kernel/setup.c | 6 +- arch/sh/kernel/setup.c | 7 --- arch/sparc/kernel/setup_32.c | 9 + arch/sparc/kernel/setup_64.c | 8 arch/um/kernel/um_arch.c | 3 +-- arch/unicore32/kernel/setup.c | 8 +--- arch/x86/kernel/setup.c| 6 +- arch/xtensa/kernel/setup.c | 9 + include/linux/init.h | 2 +- init/main.c| 14 +++--- 28 files changed, 59 insertions(+), 124 deletions(-) diff --git a/arch/alpha/kernel/setup.c b/arch/alpha/kernel/setup.c index 5576f7646fb6..c74675cf7129 100644 --- a/arch/alpha/kernel/setup.c +++ b/arch/alpha/kernel/setup.c @@ -505,8 +505,7 @@ register_cpus(void) arch_initcall(register_cpus); -void __init -setup_arch(char **cmdline_p) +void __init setup_arch(void) { extern char _end[]; @@ -566,7 +565,6 @@ setup_arch(char **cmdline_p) strlcpy(command_line, COMMAND_LINE, sizeof command_line); } strcpy(boot_command_line, command_line); - *cmdline_p = command_line; /* * Process command-line arguments. diff --git a/arch/arc/kernel/setup.c b/arch/arc/kernel/setup.c index b2cae79a25d7..9cfdcf42bf28 100644 --- a/arch/arc/kernel/setup.c +++ b/arch/arc/kernel/setup.c @@ -456,7 +456,7 @@ static inline int is_kernel(unsigned long addr) return 0; } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { #ifdef CONFIG_ARC_UBOOT_SUPPORT /* make sure that uboot passed pointer to cmdline/dtb is valid */ @@ -487,9 +487,6 @@ void __init setup_arch(char **cmdline_p) } } - /* Save unparsed command line copy for /proc/cmdline */ - *cmdline_p = boot_command_line; - /* To force early parsing of things like mem=xxx */ parse_early_param(); diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index fc40a2b40595..1025e3a37689 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -153,7 +153,6 @@ EXPORT_SYMBOL(elf_platform); static const char *cpu_name; static const char *machine_name; -static char __initdata cmd_line[COMMAND_LINE_SIZE]; const struct machine_desc *machine_desc __initdata; static union { char c[4]; unsigned long l; } endian_test __initdata = { { 'l', '?', '?', 'b' } }; @@ -1061,7 +1060,7 @@ void __init hyp_mode_check(void) #endif } -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { const struct machine_desc *mdesc; @@ -1091,10 +1090,6 @@ void __init setup_arch(char **cmdline_p) init_mm.end_data = (unsigned long) _edata; init_mm.brk= (unsigned long) _end; - /* populate cmd_line too for later use, preserving boot_command_line */ - strlcpy(cmd_line, boot_command_line, COMMAND_LINE_SIZE); - *cmdline_p = cmd_line; - early_fixmap_init(); early_ioremap_init(); diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c index 30ad2f085d1f..c7ba4d32e7f7 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c @@ -243,15 +243,13 @@ static void __init request_standard_resources(void) u64 __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = INVALID_HWID }; -void __init setup_arch(char **cmdline_p) +void __init setup_arch(void) { init_mm.start_code = (unsigned long) _text; init_mm.end_code = (unsigned long) _etext; init_mm.end_data = (unsigned long) _edata; init_mm.brk= (unsigned long) _end; - *cmdline_p = boot_command_line; - early_fixmap_init(); early_ioremap_init(); diff --git a/arch/c6x/kernel/setup.c b/arch/c6x/kernel/setup.c index 786e36e2f61d..012c8e746889 100644 --- a/arch/c6x/kernel/setup.c +++ b/arch/c6x/kernel/setup.c @@ -294,16 +294,13 @@ notrace void __init machine_init(unsigned long dt_ptr) parse_early_param(); } -void __init setup_arch(char **cmdline_p
RE: [PATCH 1/2] dt-bindings: net: Add bindings for National Instruments XGE netdev
> -Original Message- > From: netdev-ow...@vger.kernel.org [mailto:netdev-ow...@vger.kernel.org] > On Behalf Of Moritz Fischer > Sent: Friday, July 14, 2017 5:22 AM > To: net...@vger.kernel.org > Cc: devicet...@vger.kernel.org; linux-kernel@vger.kernel.org; > da...@davemloft.net; mark.rutl...@arm.com; robh...@kernel.org; Moritz > Fischer > Subject: [PATCH 1/2] dt-bindings: net: Add bindings for National Instruments > XGE netdev > > This adds bindings for the NI XGE 1G/10G network device. > > Signed-off-by: Moritz Fischer> --- > Documentation/devicetree/bindings/net/nixge.c | 32 > +++ > 1 file changed, 32 insertions(+) > create mode 100644 Documentation/devicetree/bindings/net/nixge.c It should be a text file, nixge.txt > > diff --git a/Documentation/devicetree/bindings/net/nixge.c > b/Documentation/devicetree/bindings/net/nixge.c > new file mode 100644 > index 000..9fff5a7
RE: [PATCH 1/2] dt-bindings: net: Add bindings for National Instruments XGE netdev
> -Original Message- > From: netdev-ow...@vger.kernel.org [mailto:netdev-ow...@vger.kernel.org] > On Behalf Of Moritz Fischer > Sent: Friday, July 14, 2017 5:22 AM > To: net...@vger.kernel.org > Cc: devicet...@vger.kernel.org; linux-kernel@vger.kernel.org; > da...@davemloft.net; mark.rutl...@arm.com; robh...@kernel.org; Moritz > Fischer > Subject: [PATCH 1/2] dt-bindings: net: Add bindings for National Instruments > XGE netdev > > This adds bindings for the NI XGE 1G/10G network device. > > Signed-off-by: Moritz Fischer > --- > Documentation/devicetree/bindings/net/nixge.c | 32 > +++ > 1 file changed, 32 insertions(+) > create mode 100644 Documentation/devicetree/bindings/net/nixge.c It should be a text file, nixge.txt > > diff --git a/Documentation/devicetree/bindings/net/nixge.c > b/Documentation/devicetree/bindings/net/nixge.c > new file mode 100644 > index 000..9fff5a7
RE: [PATCH] usb: gadget: udc: remove redundant initial assignments to the pointer 's'
Hi, > -Original Message- > From: Colin King [mailto:colin.k...@canonical.com] > Sent: Tuesday, March 28, 2017 6:35 AM > To: Felipe Balbi; Greg Kroah-Hartman; YUAN Linyu; Bhumika Goyal; Michal > Nazarewicz; linux-...@vger.kernel.org > Cc: kernel-janit...@vger.kernel.org; linux-kernel@vger.kernel.org > Subject: [PATCH] usb: gadget: udc: remove redundant initial assignments to the > pointer 's' > > From: Colin Ian King <colin.k...@canonical.com> > > The initial setting of pointer s to the driver name or to the literal > string "(none)" is redundant as later it is always set to point to > a different literal string before it is printed log. Remove this > redundant code. > > Detected with CoverityScan, CID#1227032, CID#1227033 ("Unused Value") > > Signed-off-by: Colin Ian King <colin.k...@canonical.com> > --- > drivers/usb/gadget/udc/net2272.c | 5 - > 1 file changed, 5 deletions(-) > > diff --git a/drivers/usb/gadget/udc/net2272.c > b/drivers/usb/gadget/udc/net2272.c > index 8f85a51bd2b3..dee4eb60d4c2 100644 > --- a/drivers/usb/gadget/udc/net2272.c > +++ b/drivers/usb/gadget/udc/net2272.c > @@ -1191,11 +1191,6 @@ registers_show(struct device *_dev, struct > device_attribute *attr, char *buf) > size = PAGE_SIZE; > spin_lock_irqsave(>lock, flags); > > - if (dev->driver) > - s = dev->driver->driver.name; > - else > - s = "(none)"; > - > /* Main Control Registers */ > t = scnprintf(next, size, "%s version %s," > "chiprev %02x, locctl %02x\n" I think it's original purpose is not use driver_name directly in below scnprintf function call. You can change drivers_name below to s. /* Main Control Registers */ t = scnprintf(next, size, "%s version %s," "chiprev %02x, locctl %02x\n" "irqenb0 %02x irqenb1 %02x " "irqstat0 %02x irqstat1 %02x\n", driver_name, driver_vers, dev->chiprev, > -- > 2.11.0
RE: [PATCH] usb: gadget: udc: remove redundant initial assignments to the pointer 's'
Hi, > -Original Message- > From: Colin King [mailto:colin.k...@canonical.com] > Sent: Tuesday, March 28, 2017 6:35 AM > To: Felipe Balbi; Greg Kroah-Hartman; YUAN Linyu; Bhumika Goyal; Michal > Nazarewicz; linux-...@vger.kernel.org > Cc: kernel-janit...@vger.kernel.org; linux-kernel@vger.kernel.org > Subject: [PATCH] usb: gadget: udc: remove redundant initial assignments to the > pointer 's' > > From: Colin Ian King > > The initial setting of pointer s to the driver name or to the literal > string "(none)" is redundant as later it is always set to point to > a different literal string before it is printed log. Remove this > redundant code. > > Detected with CoverityScan, CID#1227032, CID#1227033 ("Unused Value") > > Signed-off-by: Colin Ian King > --- > drivers/usb/gadget/udc/net2272.c | 5 - > 1 file changed, 5 deletions(-) > > diff --git a/drivers/usb/gadget/udc/net2272.c > b/drivers/usb/gadget/udc/net2272.c > index 8f85a51bd2b3..dee4eb60d4c2 100644 > --- a/drivers/usb/gadget/udc/net2272.c > +++ b/drivers/usb/gadget/udc/net2272.c > @@ -1191,11 +1191,6 @@ registers_show(struct device *_dev, struct > device_attribute *attr, char *buf) > size = PAGE_SIZE; > spin_lock_irqsave(>lock, flags); > > - if (dev->driver) > - s = dev->driver->driver.name; > - else > - s = "(none)"; > - > /* Main Control Registers */ > t = scnprintf(next, size, "%s version %s," > "chiprev %02x, locctl %02x\n" I think it's original purpose is not use driver_name directly in below scnprintf function call. You can change drivers_name below to s. /* Main Control Registers */ t = scnprintf(next, size, "%s version %s," "chiprev %02x, locctl %02x\n" "irqenb0 %02x irqenb1 %02x " "irqstat0 %02x irqstat1 %02x\n", driver_name, driver_vers, dev->chiprev, > -- > 2.11.0
RE: [PATCH net] net: hns: Fix the device being used for dma mapping during TX
> -Original Message- > From: netdev-ow...@vger.kernel.org [mailto:netdev-ow...@vger.kernel.org] > On Behalf Of Salil Mehta > Sent: Thursday, February 09, 2017 5:24 PM > To: da...@davemloft.net > Cc: salil.me...@huawei.com; yisen.zhu...@huawei.com; > mehta.salil@gmail.com; net...@vger.kernel.org; > linux-kernel@vger.kernel.org; linux...@huawei.com; Kejian Yan > Subject: [PATCH net] net: hns: Fix the device being used for dma mapping > during > TX > > From: Kejian Yan> > This patch fixes the device being used to DMA map skb->data. > Erroneous device assignment causes the crash when SMMU is enabled. > This happens during TX since buffer gets DMA mapped with device > correspondign to net_device and gets unmapped using the device > related to DSAF. > > Signed-off-by: Kejian Yan > Reviewed-by: Yisen Zhuang > Signed-off-by: Salil Mehta > --- > drivers/net/ethernet/hisilicon/hns/hns_enet.c |2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.c > b/drivers/net/ethernet/hisilicon/hns/hns_enet.c > index 672b646..2b52a12 100644 > --- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c > +++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c > @@ -305,7 +305,7 @@ int hns_nic_net_xmit_hw(struct net_device *ndev, > struct hns_nic_ring_data *ring_data) > { > struct hns_nic_priv *priv = netdev_priv(ndev); > - struct device *dev = priv->dev; > + struct device *dev = ring_to_dev(ring_data->ring); > struct hnae_ring *ring = ring_data->ring; struct device *dev = ring_to_dev(ring); ?? > struct netdev_queue *dev_queue; > struct skb_frag_struct *frag; > -- > 1.7.9.5 >
RE: [PATCH net] net: hns: Fix the device being used for dma mapping during TX
> -Original Message- > From: netdev-ow...@vger.kernel.org [mailto:netdev-ow...@vger.kernel.org] > On Behalf Of Salil Mehta > Sent: Thursday, February 09, 2017 5:24 PM > To: da...@davemloft.net > Cc: salil.me...@huawei.com; yisen.zhu...@huawei.com; > mehta.salil@gmail.com; net...@vger.kernel.org; > linux-kernel@vger.kernel.org; linux...@huawei.com; Kejian Yan > Subject: [PATCH net] net: hns: Fix the device being used for dma mapping > during > TX > > From: Kejian Yan > > This patch fixes the device being used to DMA map skb->data. > Erroneous device assignment causes the crash when SMMU is enabled. > This happens during TX since buffer gets DMA mapped with device > correspondign to net_device and gets unmapped using the device > related to DSAF. > > Signed-off-by: Kejian Yan > Reviewed-by: Yisen Zhuang > Signed-off-by: Salil Mehta > --- > drivers/net/ethernet/hisilicon/hns/hns_enet.c |2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.c > b/drivers/net/ethernet/hisilicon/hns/hns_enet.c > index 672b646..2b52a12 100644 > --- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c > +++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c > @@ -305,7 +305,7 @@ int hns_nic_net_xmit_hw(struct net_device *ndev, > struct hns_nic_ring_data *ring_data) > { > struct hns_nic_priv *priv = netdev_priv(ndev); > - struct device *dev = priv->dev; > + struct device *dev = ring_to_dev(ring_data->ring); > struct hnae_ring *ring = ring_data->ring; struct device *dev = ring_to_dev(ring); ?? > struct netdev_queue *dev_queue; > struct skb_frag_struct *frag; > -- > 1.7.9.5 >