diff options
| author | Sebastian Andrzej Siewior <[email protected]> | 2021-12-10 20:29:59 +0000 |
|---|---|---|
| committer | David S. Miller <[email protected]> | 2021-12-13 12:42:08 +0000 |
| commit | 3c118547f87e930d45a5787e386734015dd93b32 (patch) | |
| tree | 76e62351ce3aea4b3e7d86ba7eaf2721019b1243 /net/unix/sysctl_net_unix.c | |
| parent | Merge branch 'bareudp-remove-unused' (diff) | |
| download | kernel-3c118547f87e930d45a5787e386734015dd93b32.tar.gz kernel-3c118547f87e930d45a5787e386734015dd93b32.zip | |
u64_stats: Disable preemption on 32bit UP+SMP PREEMPT_RT during updates.
On PREEMPT_RT the seqcount_t for synchronisation is required on 32bit
architectures even on UP because the softirq (and the threaded IRQ handler) can
be preempted.
With the seqcount_t for synchronisation, a reader with higher priority can
preempt the writer and then spin endlessly in read_seqcount_begin() while the
writer can't make progress.
To avoid such a lock up on PREEMPT_RT the writer must disable preemption during
the update. There is no need to disable interrupts because no writer is using
this API in hard-IRQ context on PREEMPT_RT.
Disable preemption on 32bit-RT within the u64_stats write section.
Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Diffstat (limited to 'net/unix/sysctl_net_unix.c')
0 files changed, 0 insertions, 0 deletions
