Re: BUG: sleeping function called from invalid context in __kmalloc

From: Al Viro
Date: Fri Feb 07 2020 - 13:44:18 EST


On Fri, Feb 07, 2020 at 09:44:10AM -0800, syzbot wrote:
> syzbot has found a reproducer for the following crash on:
>
> HEAD commit: 90568ecf Merge tag 'kvm-5.6-2' of git://git.kernel.org/pub..
> git tree: upstream
> console output: https://syzkaller.appspot.com/x/log.txt?x=15b26831e00000
> kernel config: https://syzkaller.appspot.com/x/.config?x=69fa012479f9a62
> dashboard link: https://syzkaller.appspot.com/bug?extid=98704a51af8e3d9425a9
> compiler: clang version 10.0.0 (https://github.com/llvm/llvm-project/ c2443155a0fb245c8f17f2c1c72b6ea391e86e81)
> syz repro: https://syzkaller.appspot.com/x/repro.syz?x=172182b5e00000
> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=1590aab5e00000
>
> IMPORTANT: if you fix the bug, please add the following tag to the commit:
> Reported-by: syzbot+98704a51af8e3d9425a9@xxxxxxxxxxxxxxxxxxxxxxxxx

commit 4fbc0c711b2464ee1551850b85002faae0b775d5
Author: Xiubo Li <xiubli@xxxxxxxxxx>
Date: Fri Dec 20 09:34:04 2019 -0500

ceph: remove the extra slashes in the server path

is broken. You really should not do blocking allocations under spinlocks.
What's more, this is pointless - all you do with the results of two such
calls is strcmp_null, for pity sake... You could do the comparison in
one pass, no need for all of that. Or you could do a normalized copy when
you parse options, store that normalized copy in addition to what you are
storing now and compare _that_.