* can't boot with reiserfs on linux-4.6.0+ @ 2016-05-24 14:10 Jeff Chua 2016-05-24 15:59 ` Al Viro 0 siblings, 1 reply; 11+ messages in thread From: Jeff Chua @ 2016-05-24 14:10 UTC (permalink / raw) To: lkml, Al Viro, Linus Torvalds Seems to break after index 348619f..d55dc5a 100644 Boot up with ext4 works, but try anything to access anything on the reiser partition such as "/mnt/bin/passwd" resulted in the following ... [ 93.380353] BUG: unable to handle kernel NULL pointer dereference at (null) [ 93.380924] IP: [<ffffffff81101ad7>] 0xffffffff81101ad7 [ 93.381476] PGD 40520a067 PUD 4052f0067 PMD 0 [ 93.381974] Oops: 0000 [#6] SMP [ 93.382480] Modules linked in: usbhid [ 93.382972] CPU: 0 PID: 1888 Comm: bash Tainted: G D 4.6.0 #3 [ 93.383468] Hardware name: LENOVO 20F5000RSG/20F5000RSG, BIOS R02ET44W (1.17 ) 01/25/2016 [ 93.383986] task: ffff88040c313200 ti: ffff88040526c000 task.ti: ffff88040526c000 [ 93.384486] RIP: 0010:[<ffffffff81101ad7>] [<ffffffff81101ad7>] 0xffffffff81101ad7 [ 93.384985] RSP: 0018:ffff88040526fdd0 EFLAGS: 00010282 [ 93.385475] RAX: 0000000000000000 RBX: ffff880410784b40 RCX: ffff88040526fe0c [ 93.385988] RDX: ffffffff81951fc2 RSI: ffff88040526fde0 RDI: 0000000000000000 [ 93.386478] RBP: ffff88041065d538 R08: 0000000000000014 R09: ffffffff81951fc2 [ 93.386970] R10: 0000000000000000 R11: 0000000000000000 R12: ffff88040526fe0c [ 93.387475] R13: ffff88040c364540 R14: 0000000000000022 R15: 0000000000000000 [ 93.387963] FS: 00007f56f4879700(0000) GS:ffff880421400000(0000) knlGS:0000000000000000 [ 93.388458] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 93.388964] CR2: 0000000000000000 CR3: 0000000404c3c000 CR4: 00000000003406f0 [ 93.389454] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 93.389937] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 93.390437] Stack: [ 93.390956] ffffffff81101e5c 0000000000000014 ffffffff81951fc2 ffff88040526fe3c [ 93.391496] 0000000000000000 ffff8800d2441800 ffffffff81298232 ffffffff810c60c4 [ 93.391996] 0000000000000000 0000000000000000 ffff8800d254f000 ffffffff81298460 [ 93.392528] Call Trace: [ 93.393011] [<ffffffff81101e5c>] ? 0xffffffff81101e5c [ 93.393495] [<ffffffff81298232>] ? 0xffffffff81298232 [ 93.394006] [<ffffffff810c60c4>] ? 0xffffffff810c60c4 [ 93.394481] [<ffffffff81298460>] ? 0xffffffff81298460 [ 93.394955] [<ffffffff810eb8fd>] ? 0xffffffff810eb8fd [ 93.395447] [<ffffffff810ec20f>] ? 0xffffffff810ec20f [ 93.395919] [<ffffffff810ec40d>] ? 0xffffffff810ec40d [ 93.396422] [<ffffffff810ec605>] ? 0xffffffff810ec605 [ 93.396892] [<ffffffff81000fe6>] ? 0xffffffff81000fe6 [ 93.397361] [<ffffffff816c04c0>] ? 0xffffffff816c04c0 [ 93.397829] Code: 48 c7 c0 a1 ff ff ff c3 48 8b 47 30 48 8b 40 20 48 8b 80 90 00 00 00 48 85 c0 74 02 ff e0 31 c0 c3 4c 8b 0e 31 c0 4d 85 c9 74 6e <48> 8b 07 4c 8d 47 08 48 85 c0 74 36 48 8b 78 08 48 85 ff 48 89 [ 93.398970] RIP [<ffffffff81101ad7>] 0xffffffff81101ad7 [ 93.399449] RSP <ffff88040526fdd0> [ 93.399919] CR2: 0000000000000000 [ 93.400419] ---[ end trace 78efe26e2c832ba1 ]--- Thanks, Jeff ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: can't boot with reiserfs on linux-4.6.0+ 2016-05-24 14:10 can't boot with reiserfs on linux-4.6.0+ Jeff Chua @ 2016-05-24 15:59 ` Al Viro 2016-05-24 16:10 ` Linus Torvalds 2016-05-24 18:37 ` Al Viro 0 siblings, 2 replies; 11+ messages in thread From: Al Viro @ 2016-05-24 15:59 UTC (permalink / raw) To: Jeff Chua; +Cc: lkml, Linus Torvalds On Tue, May 24, 2016 at 10:10:18PM +0800, Jeff Chua wrote: > Seems to break after index 348619f..d55dc5a 100644 > > Boot up with ext4 works, but try anything to access anything on the > reiser partition such as "/mnt/bin/passwd" resulted in the following > ... > > [ 93.380353] BUG: unable to handle kernel NULL pointer dereference > at (null) > [ 93.380924] IP: [<ffffffff81101ad7>] 0xffffffff81101ad7 > [ 93.381476] PGD 40520a067 PUD 4052f0067 PMD 0 > [ 93.381974] Oops: 0000 [#6] SMP > [ 93.382480] Modules linked in: usbhid > [ 93.382972] CPU: 0 PID: 1888 Comm: bash Tainted: G D 4.6.0 #3 > [ 93.383468] Hardware name: LENOVO 20F5000RSG/20F5000RSG, BIOS > R02ET44W (1.17 ) 01/25/2016 > [ 93.383986] task: ffff88040c313200 ti: ffff88040526c000 task.ti: > ffff88040526c000 > [ 93.384486] RIP: 0010:[<ffffffff81101ad7>] [<ffffffff81101ad7>] > 0xffffffff81101ad7 > [ 93.384985] RSP: 0018:ffff88040526fdd0 EFLAGS: 00010282 > [ 93.385475] RAX: 0000000000000000 RBX: ffff880410784b40 RCX: ffff88040526fe0c > [ 93.385988] RDX: ffffffff81951fc2 RSI: ffff88040526fde0 RDI: 0000000000000000 > [ 93.386478] RBP: ffff88041065d538 R08: 0000000000000014 R09: ffffffff81951fc2 > [ 93.386970] R10: 0000000000000000 R11: 0000000000000000 R12: ffff88040526fe0c > [ 93.387475] R13: ffff88040c364540 R14: 0000000000000022 R15: 0000000000000000 > [ 93.387963] FS: 00007f56f4879700(0000) GS:ffff880421400000(0000) > knlGS:0000000000000000 > [ 93.388458] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > [ 93.388964] CR2: 0000000000000000 CR3: 0000000404c3c000 CR4: 00000000003406f0 > [ 93.389454] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 > [ 93.389937] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 > [ 93.390437] Stack: > [ 93.390956] ffffffff81101e5c 0000000000000014 ffffffff81951fc2 > ffff88040526fe3c > [ 93.391496] 0000000000000000 ffff8800d2441800 ffffffff81298232 > ffffffff810c60c4 > [ 93.391996] 0000000000000000 0000000000000000 ffff8800d254f000 > ffffffff81298460 > [ 93.392528] Call Trace: > [ 93.393011] [<ffffffff81101e5c>] ? 0xffffffff81101e5c > [ 93.393495] [<ffffffff81298232>] ? 0xffffffff81298232 > [ 93.394006] [<ffffffff810c60c4>] ? 0xffffffff810c60c4 > [ 93.394481] [<ffffffff81298460>] ? 0xffffffff81298460 > [ 93.394955] [<ffffffff810eb8fd>] ? 0xffffffff810eb8fd > [ 93.395447] [<ffffffff810ec20f>] ? 0xffffffff810ec20f > [ 93.395919] [<ffffffff810ec40d>] ? 0xffffffff810ec40d > [ 93.396422] [<ffffffff810ec605>] ? 0xffffffff810ec605 > [ 93.396892] [<ffffffff81000fe6>] ? 0xffffffff81000fe6 > [ 93.397361] [<ffffffff816c04c0>] ? 0xffffffff816c04c0 > [ 93.397829] Code: 48 c7 c0 a1 ff ff ff c3 48 8b 47 30 48 8b 40 20 > 48 8b 80 90 00 00 00 48 85 c0 74 02 ff e0 31 c0 c3 4c 8b 0e 31 c0 4d > 85 c9 74 6e <48> 8b 07 4c 8d 47 08 48 85 c0 74 36 48 8b 78 08 48 85 ff > 48 89 > [ 93.398970] RIP [<ffffffff81101ad7>] 0xffffffff81101ad7 > [ 93.399449] RSP <ffff88040526fdd0> > [ 93.399919] CR2: 0000000000000000 > [ 93.400419] ---[ end trace 78efe26e2c832ba1 ]--- Umm... Any chance of getting the function names to go with the addresses? I'll try to reproduce it here, but the things would be easier with that information... ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: can't boot with reiserfs on linux-4.6.0+ 2016-05-24 15:59 ` Al Viro @ 2016-05-24 16:10 ` Linus Torvalds 2016-05-25 8:38 ` Jeff Chua 2016-05-24 18:37 ` Al Viro 1 sibling, 1 reply; 11+ messages in thread From: Linus Torvalds @ 2016-05-24 16:10 UTC (permalink / raw) To: Al Viro; +Cc: Jeff Chua, lkml On Tue, May 24, 2016 at 8:59 AM, Al Viro <viro@zeniv.linux.org.uk> wrote: > > Umm... Any chance of getting the function names to go with the addresses? > I'll try to reproduce it here, but the things would be easier with that > information... Yeah, we shouldn't even allow non-KALLSYMS builds. In fact, unless you pick EXPERT (which you shouldn't, unless you're doing some embedded development) you can't even disable it. Jeff, please don't use non-KALLSYMS builds. They are completely undebuggable. Linus ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: can't boot with reiserfs on linux-4.6.0+ 2016-05-24 16:10 ` Linus Torvalds @ 2016-05-25 8:38 ` Jeff Chua 0 siblings, 0 replies; 11+ messages in thread From: Jeff Chua @ 2016-05-25 8:38 UTC (permalink / raw) To: Linus Torvalds; +Cc: Al Viro, lkml On Wed, May 25, 2016 at 12:10 AM, Linus Torvalds <torvalds@linux-foundation.org> wrote: > On Tue, May 24, 2016 at 8:59 AM, Al Viro <viro@zeniv.linux.org.uk> wrote: >> >> Umm... Any chance of getting the function names to go with the addresses? >> I'll try to reproduce it here, but the things would be easier with that >> information... > > Yeah, we shouldn't even allow non-KALLSYMS builds. In fact, unless you > pick EXPERT (which you shouldn't, unless you're doing some embedded > development) you can't even disable it. > > Jeff, please don't use non-KALLSYMS builds. They are completely undebuggable. > > Linus Got it. Will compile with CONFIG_KALLSYMS=y :) Thanks, Jeff ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: can't boot with reiserfs on linux-4.6.0+ 2016-05-24 15:59 ` Al Viro 2016-05-24 16:10 ` Linus Torvalds @ 2016-05-24 18:37 ` Al Viro 2016-05-25 9:30 ` Jeff Chua 1 sibling, 1 reply; 11+ messages in thread From: Al Viro @ 2016-05-24 18:37 UTC (permalink / raw) To: Jeff Chua; +Cc: lkml, Linus Torvalds On Tue, May 24, 2016 at 04:59:02PM +0100, Al Viro wrote: > Umm... Any chance of getting the function names to go with the addresses? > I'll try to reproduce it here, but the things would be easier with that > information... See if this fixes your reproducer. diff --git a/fs/xattr.c b/fs/xattr.c index b11945e..49b8eab 100644 --- a/fs/xattr.c +++ b/fs/xattr.c @@ -667,6 +667,9 @@ xattr_resolve_name(const struct xattr_handler **handlers, const char **name) { const struct xattr_handler *handler; + if (!handlers) + return NULL; + if (!*name) return NULL; ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: can't boot with reiserfs on linux-4.6.0+ 2016-05-24 18:37 ` Al Viro @ 2016-05-25 9:30 ` Jeff Chua 2016-05-25 15:51 ` Linus Torvalds 2016-05-25 15:51 ` Al Viro 0 siblings, 2 replies; 11+ messages in thread From: Jeff Chua @ 2016-05-25 9:30 UTC (permalink / raw) To: Al Viro; +Cc: lkml, Linus Torvalds On Wed, May 25, 2016 at 2:37 AM, Al Viro <viro@zeniv.linux.org.uk> wrote: > On Tue, May 24, 2016 at 04:59:02PM +0100, Al Viro wrote: > >> Umm... Any chance of getting the function names to go with the addresses? >> I'll try to reproduce it here, but the things would be easier with that >> information... > > See if this fixes your reproducer. > > diff --git a/fs/xattr.c b/fs/xattr.c > index b11945e..49b8eab 100644 > --- a/fs/xattr.c > +++ b/fs/xattr.c > @@ -667,6 +667,9 @@ xattr_resolve_name(const struct xattr_handler **handlers, const char **name) > { > const struct xattr_handler *handler; > > + if (!handlers) > + return NULL; > + > if (!*name) > return NULL; > Tried, but doesn't work. Here's dmesg with symbols ... [ 35.565534] BUG: unable to handle kernel NULL pointer dereference at 0000000000000020 [ 35.566200] IP: [<ffffffff811033a1>] generic_getxattr+0x4f/0x5d [ 35.566828] PGD 409992067 PUD 409993067 PMD 0 [ 35.567469] Oops: 0000 [#1] SMP [ 35.568082] Modules linked in: usbhid [ 35.568731] CPU: 1 PID: 1873 Comm: bash Not tainted 4.6.0 #5 [ 35.569339] Hardware name: LENOVO 20F5000RSG/20F5000RSG, BIOS R02ET44W (1.17 ) 01/25/2016 [ 35.569981] task: ffff88040c3f2580 ti: ffff88040990c000 task.ti: ffff88040990c000 [ 35.570603] RIP: 0010:[<ffffffff811033a1>] [<ffffffff811033a1>] generic_getxattr+0x4f/0x5d [ 35.571246] RSP: 0018:ffff88040990fdd8 EFLAGS: 00010207 [ 35.571843] RAX: 0000000000000000 RBX: ffff88041043d6c0 RCX: ffffffff819e2917 [ 35.572436] RDX: ffff8804104b4310 RSI: ffff88041043d6c0 RDI: 0000000000000000 [ 35.573085] RBP: ffff8804104b4310 R08: ffff88040990fe0c R09: 0000000000000014 [ 35.573673] R10: 0000000000000000 R11: 0000000000000000 R12: ffff88040990fe0c [ 35.574257] R13: ffff88040e60a6c0 R14: 0000000000000022 R15: 0000000000000000 [ 35.574868] FS: 00007f092f53e700(0000) GS:ffff880421440000(0000) knlGS:0000000000000000 [ 35.575446] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 35.576013] CR2: 0000000000000020 CR3: 0000000409991000 CR4: 00000000003406e0 [ 35.576621] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 35.577186] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 35.577748] Stack: [ 35.578342] 0000000000000014 ffffffff819e2917 ffff88040990fe3c 0000000000000000 [ 35.578960] ffff8800d25ce600 ffffffff81299993 ffffffff810c75a2 0000000000000000 [ 35.579583] 0000000000000000 ffff88040e607000 ffffffff81299bc1 0000000000000000 [ 35.580172] Call Trace: [ 35.580749] [<ffffffff81299993>] ? get_vfs_caps_from_disk+0x51/0xcf [ 35.581365] [<ffffffff810c75a2>] ? __vma_link_rb+0x58/0x73 [ 35.581933] [<ffffffff81299bc1>] ? cap_bprm_set_creds+0x1b0/0x420 [ 35.582504] [<ffffffff810ecddb>] ? prepare_binprm+0xce/0x107 [ 35.583095] [<ffffffff810ed6ed>] ? do_execveat_common.isra.49+0x3d0/0x5b4 [ 35.583657] [<ffffffff810ed8eb>] ? do_execve+0x1a/0x1c [ 35.584248] [<ffffffff810edae3>] ? SyS_execve+0x23/0x2a [ 35.584801] [<ffffffff81001066>] ? do_syscall_64+0x51/0x89 [ 35.585345] [<ffffffff816c1c80>] ? entry_SYSCALL64_slow_path+0x25/0x25 [ 35.585882] Code: 8b b8 a0 00 00 00 e8 6c fc ff ff 4c 8b 04 24 48 3d 00 f0 ff ff 77 19 4d 89 c1 48 8b 4c 24 08 4d 89 e0 48 89 ea 48 89 de 48 89 c7 <ff> 50 20 48 98 48 83 c4 10 5b 5d 41 5c c3 41 54 48 c7 c0 18 4e [ 35.587155] RIP [<ffffffff811033a1>] generic_getxattr+0x4f/0x5d [ 35.587776] RSP <ffff88040990fdd8> [ 35.588351] CR2: 0000000000000020 [ 35.588974] ---[ end trace 1ac6eb2a9a9b2964 ]--- Thanks, Jeff ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: can't boot with reiserfs on linux-4.6.0+ 2016-05-25 9:30 ` Jeff Chua @ 2016-05-25 15:51 ` Linus Torvalds 2016-05-25 15:51 ` Al Viro 1 sibling, 0 replies; 11+ messages in thread From: Linus Torvalds @ 2016-05-25 15:51 UTC (permalink / raw) To: Jeff Chua; +Cc: Al Viro, lkml On Wed, May 25, 2016 at 2:30 AM, Jeff Chua <jeff.chua.linux@gmail.com> wrote: > > Here's dmesg with symbols ... Ok, so "handler" in generic_getxattr() is NULL, the code decodes to 0: 4d 89 c1 mov %r8,%r9 3: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx 8: 4d 89 e0 mov %r12,%r8 b: 48 89 ea mov %rbp,%rdx e: 48 89 de mov %rbx,%rsi 11: 48 89 c7 mov %rax,%rdi 14:* ff 50 20 callq *0x20(%rax) <-- trapping instruction 17: 48 98 cltq which is return handler->get(handler, dentry, inode, name, buffer, size); so it's that "handler->get" access that fails ("handler" is in %rax and %rdi, and the register state agrees). I'm not seeing what changed for btrfs here - we had a calling convention change, but nothing that should make handler be NULL. I see nothing particularly odd in the call trace either: > Call Trace: > get_vfs_caps_from_disk+0x51/0xcf > __vma_link_rb+0x58/0x73 > cap_bprm_set_creds+0x1b0/0x420 > prepare_binprm+0xce/0x107 > do_execveat_common.isra.49+0x3d0/0x5b4 > do_execve+0x1a/0x1c > SyS_execve+0x23/0x2a that's the normal ->getxattr() call in security/commoncap.c, and I don't see any changes there either apart from the calling convention. Al, you'll probably go "Duh, I changed xyz" that I'm just missing. Linus ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: can't boot with reiserfs on linux-4.6.0+ 2016-05-25 9:30 ` Jeff Chua 2016-05-25 15:51 ` Linus Torvalds @ 2016-05-25 15:51 ` Al Viro 2016-05-26 7:20 ` Jeff Chua 1 sibling, 1 reply; 11+ messages in thread From: Al Viro @ 2016-05-25 15:51 UTC (permalink / raw) To: Jeff Chua; +Cc: lkml, Linus Torvalds On Wed, May 25, 2016 at 05:30:22PM +0800, Jeff Chua wrote: > On Wed, May 25, 2016 at 2:37 AM, Al Viro <viro@zeniv.linux.org.uk> wrote: > > On Tue, May 24, 2016 at 04:59:02PM +0100, Al Viro wrote: > > > >> Umm... Any chance of getting the function names to go with the addresses? > >> I'll try to reproduce it here, but the things would be easier with that > >> information... > > > > See if this fixes your reproducer. > > > > diff --git a/fs/xattr.c b/fs/xattr.c > > index b11945e..49b8eab 100644 > > --- a/fs/xattr.c > > +++ b/fs/xattr.c > > @@ -667,6 +667,9 @@ xattr_resolve_name(const struct xattr_handler **handlers, const char **name) > > { > > const struct xattr_handler *handler; > > > > + if (!handlers) > > + return NULL; > > + > > if (!*name) > > return NULL; > > > > Tried, but doesn't work. D'oh... Since "vfs: Distinguish between full xattr names and proper prefixes" we really need to return ERR_PTR() there (and I even have a patch from Andreas fixing that if (!*name) return NULL; in my queue). Combined delta to test (that'll go as two commits, one mine, one his): diff --git a/fs/xattr.c b/fs/xattr.c index b11945e..fc81e77 100644 --- a/fs/xattr.c +++ b/fs/xattr.c @@ -655,6 +655,7 @@ strcmp_prefix(const char *a, const char *a_prefix) * operations to the correct xattr_handler. */ #define for_each_xattr_handler(handlers, handler) \ + if (handlers) \ for ((handler) = *(handlers)++; \ (handler) != NULL; \ (handler) = *(handlers)++) @@ -668,7 +669,7 @@ xattr_resolve_name(const struct xattr_handler **handlers, const char **name) const struct xattr_handler *handler; if (!*name) - return NULL; + return ERR_PTR(-EINVAL); for_each_xattr_handler(handlers, handler) { const char *n; ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: can't boot with reiserfs on linux-4.6.0+ 2016-05-25 15:51 ` Al Viro @ 2016-05-26 7:20 ` Jeff Chua 0 siblings, 0 replies; 11+ messages in thread From: Jeff Chua @ 2016-05-26 7:20 UTC (permalink / raw) To: Al Viro; +Cc: lkml, Linus Torvalds On Wed, May 25, 2016 at 11:51 PM, Al Viro <viro@zeniv.linux.org.uk> wrote: > On Wed, May 25, 2016 at 05:30:22PM +0800, Jeff Chua wrote: >> On Wed, May 25, 2016 at 2:37 AM, Al Viro <viro@zeniv.linux.org.uk> wrote: >> > On Tue, May 24, 2016 at 04:59:02PM +0100, Al Viro wrote: >> > >> >> Umm... Any chance of getting the function names to go with the addresses? >> >> I'll try to reproduce it here, but the things would be easier with that >> >> information... >> > >> > See if this fixes your reproducer. >> > >> > diff --git a/fs/xattr.c b/fs/xattr.c >> > index b11945e..49b8eab 100644 >> > --- a/fs/xattr.c >> > +++ b/fs/xattr.c >> > @@ -667,6 +667,9 @@ xattr_resolve_name(const struct xattr_handler **handlers, const char **name) >> > { >> > const struct xattr_handler *handler; >> > >> > + if (!handlers) >> > + return NULL; >> > + >> > if (!*name) >> > return NULL; >> > >> >> Tried, but doesn't work. > > D'oh... Since "vfs: Distinguish between full xattr names and proper prefixes" > we really need to return ERR_PTR() there (and I even have a patch from Andreas > fixing that if (!*name) return NULL; in my queue). Combined delta to test > (that'll go as two commits, one mine, one his): > Al, Linus, Great that worked! And I see the patch is already in Linus's tree. Thanks for the quick response and fixes. Jeff. > diff --git a/fs/xattr.c b/fs/xattr.c > index b11945e..fc81e77 100644 > --- a/fs/xattr.c > +++ b/fs/xattr.c > @@ -655,6 +655,7 @@ strcmp_prefix(const char *a, const char *a_prefix) > * operations to the correct xattr_handler. > */ > #define for_each_xattr_handler(handlers, handler) \ > + if (handlers) \ > for ((handler) = *(handlers)++; \ > (handler) != NULL; \ > (handler) = *(handlers)++) > @@ -668,7 +669,7 @@ xattr_resolve_name(const struct xattr_handler **handlers, const char **name) > const struct xattr_handler *handler; > > if (!*name) > - return NULL; > + return ERR_PTR(-EINVAL); > > for_each_xattr_handler(handlers, handler) { > const char *n; ^ permalink raw reply [flat|nested] 11+ messages in thread
[parent not found: <017b01d1b721$d1686aa0$74393fe0$@alibaba-inc.com>]
* Re: can't boot with reiserfs on linux-4.6.0+ [not found] <017b01d1b721$d1686aa0$74393fe0$@alibaba-inc.com> @ 2016-05-26 7:46 ` Hillf Danton 2016-05-26 22:49 ` Jeff Chua 0 siblings, 1 reply; 11+ messages in thread From: Hillf Danton @ 2016-05-26 7:46 UTC (permalink / raw) To: 'Jeff Chua'; +Cc: 'Al Viro', linux-kernel > > See if this fixes your reproducer. > > > > diff --git a/fs/xattr.c b/fs/xattr.c > > index b11945e..49b8eab 100644 > > --- a/fs/xattr.c > > +++ b/fs/xattr.c > > @@ -667,6 +667,9 @@ xattr_resolve_name(const struct xattr_handler **handlers, const char **name) > > { > > const struct xattr_handler *handler; > > > > + if (!handlers) > > + return NULL; > > + > > if (!*name) > > return NULL; > > > > Tried, but doesn't work. > See if this fixes your reproducer. --- linux-4.6/fs/xattr.c Mon May 16 06:43:13 2016 +++ b/fs/xattr.c Thu May 26 15:36:14 2016 @@ -667,8 +667,8 @@ xattr_resolve_name(const struct xattr_ha { const struct xattr_handler *handler; - if (!*name) - return NULL; + if (!handlers || !*name) + return ERR_PTR(-EINVAL); for_each_xattr_handler(handlers, handler) { const char *n; -- ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: can't boot with reiserfs on linux-4.6.0+ 2016-05-26 7:46 ` Hillf Danton @ 2016-05-26 22:49 ` Jeff Chua 0 siblings, 0 replies; 11+ messages in thread From: Jeff Chua @ 2016-05-26 22:49 UTC (permalink / raw) To: Hillf Danton; +Cc: Al Viro, linux-kernel On Thu, May 26, 2016 at 3:46 PM, Hillf Danton <hillf.zj@alibaba-inc.com> wrote: >> > See if this fixes your reproducer. >> > >> > diff --git a/fs/xattr.c b/fs/xattr.c >> > index b11945e..49b8eab 100644 >> > --- a/fs/xattr.c >> > +++ b/fs/xattr.c >> > @@ -667,6 +667,9 @@ xattr_resolve_name(const struct xattr_handler **handlers, const char **name) >> > { >> > const struct xattr_handler *handler; >> > >> > + if (!handlers) >> > + return NULL; >> > + >> > if (!*name) >> > return NULL; >> > >> >> Tried, but doesn't work. >> > See if this fixes your reproducer. > > --- linux-4.6/fs/xattr.c Mon May 16 06:43:13 2016 > +++ b/fs/xattr.c Thu May 26 15:36:14 2016 > @@ -667,8 +667,8 @@ xattr_resolve_name(const struct xattr_ha > { > const struct xattr_handler *handler; > > - if (!*name) > - return NULL; > + if (!handlers || !*name) > + return ERR_PTR(-EINVAL); > > for_each_xattr_handler(handlers, handler) { > const char *n; > -- Hillf, That worked and it's already in Linus's latest tree. Thanks for sharing. Jeff ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2016-05-26 22:49 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-05-24 14:10 can't boot with reiserfs on linux-4.6.0+ Jeff Chua 2016-05-24 15:59 ` Al Viro 2016-05-24 16:10 ` Linus Torvalds 2016-05-25 8:38 ` Jeff Chua 2016-05-24 18:37 ` Al Viro 2016-05-25 9:30 ` Jeff Chua 2016-05-25 15:51 ` Linus Torvalds 2016-05-25 15:51 ` Al Viro 2016-05-26 7:20 ` Jeff Chua [not found] <017b01d1b721$d1686aa0$74393fe0$@alibaba-inc.com> 2016-05-26 7:46 ` Hillf Danton 2016-05-26 22:49 ` Jeff Chua
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.