diff options
| author | Herbert Xu <herbert@gondor.apana.org.au> | 2025-05-24 20:32:20 +0800 |
|---|---|---|
| committer | Herbert Xu <herbert@gondor.apana.org.au> | 2025-06-13 17:26:16 +0800 |
| commit | 71203f68c7749609d7fc8ae6ad054bdedeb24f91 (patch) | |
| tree | 690de698d53db6a4ad5a28ff2fa0391e81f3f0c8 /tools/perf/scripts/python/exported-sql-viewer.py | |
| parent | 73c2437109c3eab274258a6430ae5dafac1ef43e (diff) | |
padata: Fix pd UAF once and for all
There is a race condition/UAF in padata_reorder that goes back
to the initial commit. A reference count is taken at the start
of the process in padata_do_parallel, and released at the end in
padata_serial_worker.
This reference count is (and only is) required for padata_replace
to function correctly. If padata_replace is never called then
there is no issue.
In the function padata_reorder which serves as the core of padata,
as soon as padata is added to queue->serial.list, and the associated
spin lock released, that padata may be processed and the reference
count on pd would go away.
Fix this by getting the next padata before the squeue->serial lock
is released.
In order to make this possible, simplify padata_reorder by only
calling it once the next padata arrives.
Fixes: 16295bec6398 ("padata: Generic parallelization/serialization interface")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'tools/perf/scripts/python/exported-sql-viewer.py')
0 files changed, 0 insertions, 0 deletions
