]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
padata: Reset next CPU when reorder sequence wraps around
authorXiao Liang <shaw.leon@gmail.com>
Mon, 20 Oct 2025 15:39:11 +0000 (11:39 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Oct 2025 13:04:40 +0000 (14:04 +0100)
commitca2bfa1500b0fa6105fd3181877f9fa3d867346d
tree755307b2f6c204da90f0c8d88500375733a107cf
parent93f32d67bfa0acf2f8561252959d77180f51ea1a
padata: Reset next CPU when reorder sequence wraps around

[ Upstream commit 501302d5cee0d8e8ec2c4a5919c37e0df9abc99b ]

When seq_nr wraps around, the next reorder job with seq 0 is hashed to
the first CPU in padata_do_serial(). Correspondingly, need reset pd->cpu
to the first one when pd->processed wraps around. Otherwise, if the
number of used CPUs is not a power of 2, padata_find_next() will be
checking a wrong list, hence deadlock.

Fixes: 6fc4dbcf0276 ("padata: Replace delayed timer with immediate workqueue in padata_reorder")
Cc: <stable@vger.kernel.org>
Signed-off-by: Xiao Liang <shaw.leon@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
[ applied fix in padata_find_next() instead of padata_reorder() ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
kernel/padata.c