Messages in this thread Patch in this message | | | From | Hillf Danton <> | Subject | Re: [syzbot] [ceph?] [fs?] INFO: task hung in ceph_mdsc_pre_umount | Date | Wed, 7 Feb 2024 18:58:01 +0800 |
| |
On Mon, 05 Feb 2024 08:43:25 -0800 > HEAD commit: 076d56d74f17 Add linux-next specific files for 20240202 > git tree: linux-next > C reproducer: https://syzkaller.appspot.com/x/repro.c?x=1255e7c4180000
#syz test https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git 076d56d74f17
--- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -1999,6 +1999,8 @@ static int try_to_grab_pending(struct wo */ pwq = get_work_pwq(work); if (pwq && pwq->pool == pool) { + unsigned long work_data; + debug_work_deactivate(work); /* @@ -2016,11 +2018,12 @@ static int try_to_grab_pending(struct wo list_del_init(&work->entry); + work_data = *work_data_bits(work); /* work->data points to pwq iff queued, point to pool */ set_work_pool_and_keep_pending(work, pool->id); /* must be the last step, see the function comment */ - pwq_dec_nr_in_flight(pwq, *work_data_bits(work)); + pwq_dec_nr_in_flight(pwq, work_data); raw_spin_unlock(&pool->lock); rcu_read_unlock(); --
| |