diff options
| author | Manfred Spraul <[email protected]> | 2022-12-16 15:04:40 +0000 |
|---|---|---|
| committer | Andrew Morton <[email protected]> | 2023-02-03 06:50:01 +0000 |
| commit | 88ad32a799ddc92eafd2ae204cb43f04ac20a05c (patch) | |
| tree | a4797d1b353073c535eba0f4c05e1cb758ed7337 /scripts/gdb/vmlinux-gdb.py | |
| parent | lib/percpu_counter: percpu_counter_add_batch() overflow/underflow (diff) | |
| download | kernel-88ad32a799ddc92eafd2ae204cb43f04ac20a05c.tar.gz kernel-88ad32a799ddc92eafd2ae204cb43f04ac20a05c.zip | |
include/linux/percpu_counter.h: race in uniprocessor percpu_counter_add()
The percpu interface is supposed to be preempt and irq safe.
But:
The uniprocessor implementation of percpu_counter_add() is not irq safe:
if an interrupt happens during the +=, then the result is undefined.
Therefore: switch from preempt_disable() to local_irq_save().
This prevents interrupts from interrupting the +=, and as a side effect
prevents preemption.
Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Manfred Spraul <[email protected]>
Cc: "Sun, Jiebin" <[email protected]>
Cc: <[email protected]>
Cc: Alexander Sverdlin <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Diffstat (limited to 'scripts/gdb/vmlinux-gdb.py')
0 files changed, 0 insertions, 0 deletions
