linux/include
Juri Lelli cceeeb6a6d wait: Fix __wait_event_hrtimeout for RT/DL tasks
Changes to hrtimer mode (potentially made by __hrtimer_init_sleeper on
PREEMPT_RT) are not visible to hrtimer_start_range_ns, thus not
accounted for by hrtimer_start_expires call paths. In particular,
__wait_event_hrtimeout suffers from this problem as we have, for
example:

fs/aio.c::read_events
  wait_event_interruptible_hrtimeout
    __wait_event_hrtimeout
      hrtimer_init_sleeper_on_stack <- this might "mode |= HRTIMER_MODE_HARD"
                                       on RT if task runs at RT/DL priority
        hrtimer_start_range_ns
          WARN_ON_ONCE(!(mode & HRTIMER_MODE_HARD) ^ !timer->is_hard)
          fires since the latter doesn't see the change of mode done by
          init_sleeper

Fix it by making __wait_event_hrtimeout call hrtimer_sleeper_start_expires,
which is aware of the special RT/DL case, instead of hrtimer_start_range_ns.

Reported-by: Bruno Goncalves <bgoncalv@redhat.com>
Signed-off-by: Juri Lelli <juri.lelli@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Daniel Bristot de Oliveira <bristot@kernel.org>
Reviewed-by: Valentin Schneider <vschneid@redhat.com>
Link: https://lore.kernel.org/r/20220627095051.42470-1-juri.lelli@redhat.com
2022-07-28 12:35:12 +02:00
..
acpi ACPI: CPPC: Don't require _OSC if X86_FEATURE_CPPC is supported 2022-07-05 20:36:11 +02:00
asm-generic mmu_gather: fix the CONFIG_MMU_GATHER_NO_RANGE case 2022-07-22 09:28:34 -07:00
clocksource - Add the missing DT bindings for the MTU nomadik timer (Linus 2022-07-28 12:33:34 +02:00
crypto
drm drm/scheduler: Don't kill jobs in interrupt context 2022-07-15 10:09:15 -04:00
dt-bindings Char / Misc / Other smaller driver subsystem updates for 5.19-rc1 2022-06-03 11:36:34 -07:00
keys certs: Move load_certificate_list() to be with the asymmetric keys code 2022-06-21 16:05:06 +01:00
kunit
kvm
linux wait: Fix __wait_event_hrtimeout for RT/DL tasks 2022-07-28 12:35:12 +02:00
math-emu
media
memory
misc
net tcp: Fix data-races around sysctl_tcp_slow_start_after_idle. 2022-07-20 10:14:50 +01:00
pcmcia
ras
rdma
scsi
soc
sound ASoC: Remove unused hw_write_t type 2022-06-24 16:21:41 +01:00
target
trace Including fixes from netfilter, bpf and wireless. 2022-07-14 12:48:07 -07:00
uapi * Check for invalid flags to KVM_CAP_X86_USER_SPACE_MSR 2022-07-23 10:22:26 -07:00
ufs
vdso
video video: of_display_timing.h: include errno.h 2022-07-06 17:16:20 +02:00
xen arm/xen: Assign xen-grant DMA ops for xen-grant DMA devices 2022-06-06 16:07:30 +02:00