CVE-2024-42274

Revert "ALSA: firewire-lib: operate for period elapse event in process context"

published August 17, 2024

CVSS
—
EPSS
0%
Percentile
6.0
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

Revert "ALSA: firewire-lib: operate for period elapse event in process context"

Commit 7ba5ca32fe6e ("ALSA: firewire-lib: operate for period elapse event

in process context") removed the process context workqueue from

amdtp_domain_stream_pcm_pointer() and update_pcm_pointers() to remove

its overhead.

With RME Fireface 800, this lead to a regression since

Kernels 5.14.0, causing an AB/BA deadlock competition for the

substream lock with eventual system freeze under ALSA operation:

thread 0:

* (lock A) acquire substream lock by

snd_pcm_stream_lock_irq() in

snd_pcm_status64()

* (lock B) wait for tasklet to finish by calling

tasklet_unlock_spin_wait() in

tasklet_disable_in_atomic() in

ohci_flush_iso_completions() of ohci.c

thread 1:

* (lock B) enter tasklet

* (lock A) attempt to acquire substream lock,

waiting for it to be released:

snd_pcm_stream_lock_irqsave() in

snd_pcm_period_elapsed() in

update_pcm_pointers() in

process_ctx_payloads() in

process_rx_packets() of amdtp-stream.c

? tasklet_unlock_spin_wait

</NMI>

<TASK>

ohci_flush_iso_completions firewire_ohci

amdtp_domain_stream_pcm_pointer snd_firewire_lib

snd_pcm_update_hw_ptr0 snd_pcm

snd_pcm_status64 snd_pcm

? native_queued_spin_lock_slowpath

</NMI>

<IRQ>

_raw_spin_lock_irqsave

snd_pcm_period_elapsed snd_pcm

process_rx_packets snd_firewire_lib

irq_target_callback snd_firewire_lib

handle_it_packet firewire_ohci

context_tasklet firewire_ohci

Restore the process context work queue to prevent deadlock

AB/BA deadlock competition for ALSA substream lock of

snd_pcm_stream_lock_irq() in snd_pcm_status64()

and snd_pcm_stream_lock_irqsave() in snd_pcm_period_elapsed().

revert commit 7ba5ca32fe6e ("ALSA: firewire-lib: operate for period

elapse event in process context")

Replace inline description to prevent future deadlock.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00169 · 6.0th percentile
Published
2024-08-17T08:54Z
EPSS history
Timeline
  • 17 AUG 08:54Z
    Revert "ALSA: firewire-lib: operate for period elapse event in process context"
    cvelistv5