Re: BUG: sleeping function called from invalid context at net/core/sock.c:LINE (2)

From: Eric Biggers
Date: Tue Jan 30 2018 - 19:38:54 EST


On Fri, Dec 01, 2017 at 03:19:01AM -0800, syzbot wrote:
> Hello,
>
> syzkaller hit the following crash on
> 43f462f1c2e111d2882b48baeeff774ae42e7c56
> 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.
>
> Unfortunately, I don't have any reproducer for this bug yet.
>
>
> BUG: sleeping function called from invalid context at net/core/sock.c:2761
> in_atomic(): 1, irqs_disabled(): 0, pid: 23, name: kworker/1:1
> 2 locks held by kworker/1:1/23:
> #0: ((wq_completion)"%s"name){+.+.}, at: [<ffffffff8147b244>]
> __write_once_size include/linux/compiler.h:212 [inline]
> #0: ((wq_completion)"%s"name){+.+.}, at: [<ffffffff8147b244>] atomic64_set
> arch/x86/include/asm/atomic64_64.h:34 [inline]
> #0: ((wq_completion)"%s"name){+.+.}, at: [<ffffffff8147b244>]
> atomic_long_set include/asm-generic/atomic-long.h:57 [inline]
> #0: ((wq_completion)"%s"name){+.+.}, at: [<ffffffff8147b244>]
> set_work_data kernel/workqueue.c:618 [inline]
> #0: ((wq_completion)"%s"name){+.+.}, at: [<ffffffff8147b244>]
> set_work_pool_and_clear_pending kernel/workqueue.c:645 [inline]
> #0: ((wq_completion)"%s"name){+.+.}, at: [<ffffffff8147b244>]
> process_one_work+0xad4/0x1be0 kernel/workqueue.c:2083
> #1: ((work_completion)(&squeue->work)){+.+.}, at: [<ffffffff8147b29f>]
> process_one_work+0xb2f/0x1be0 kernel/workqueue.c:2087
> CPU: 1 PID: 23 Comm: kworker/1:1 Not tainted 4.15.0-rc1+ #198
> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
> Google 01/01/2011
> Workqueue: pencrypt padata_serial_worker
> Call Trace:
> __dump_stack lib/dump_stack.c:17 [inline]
> dump_stack+0x194/0x257 lib/dump_stack.c:53
> ___might_sleep+0x2b2/0x470 kernel/sched/core.c:6060
> __might_sleep+0x95/0x190 kernel/sched/core.c:6013
> lock_sock_nested+0x37/0x110 net/core/sock.c:2761
> lock_sock include/net/sock.h:1465 [inline]
> af_alg_async_cb+0x86/0x1a0 crypto/af_alg.c:1039
> aead_request_complete include/crypto/internal/aead.h:75 [inline]
> pcrypt_aead_serial+0x75/0xa0 crypto/pcrypt.c:123
> padata_serial_worker+0x476/0x750 kernel/padata.c:348
> process_one_work+0xbfd/0x1be0 kernel/workqueue.c:2112
> worker_thread+0x223/0x1990 kernel/workqueue.c:2246
> kthread+0x37a/0x440 kernel/kthread.c:238
> ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:441

This crash stopped occurring around Nov 29. It seems to have been fixed by the
following commit (merged into mainline by 43570f0383d), so telling syzbot:

#syz fix: crypto: af_alg - remove locking in async callback