RE: WARNING in kobject_add_internal

2018-04-11 Thread Yuan, Linyu (NSB - CN/Shanghai)
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

2018-04-11 Thread Yuan, Linyu (NSB - CN/Shanghai)
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()

2018-04-08 Thread yuan linyu
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()

2018-04-08 Thread yuan linyu
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[]

2018-04-06 Thread yuan linyu
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[]

2018-04-06 Thread yuan linyu
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[]

2018-04-06 Thread yuan linyu
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[]

2018-04-06 Thread yuan linyu
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

2017-07-13 Thread YUAN Linyu


> -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

2017-07-13 Thread YUAN Linyu


> -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'

2017-03-27 Thread YUAN Linyu
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'

2017-03-27 Thread YUAN Linyu
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

2017-02-09 Thread YUAN Linyu


> -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

2017-02-09 Thread YUAN Linyu


> -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
>