]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
ALSA: usb-audio: qcom: Check offload mapping failures
authorCássio Gabriel <cassiogabrielcontato@gmail.com>
Mon, 11 May 2026 04:36:37 +0000 (01:36 -0300)
committerTakashi Iwai <tiwai@suse.de>
Fri, 15 May 2026 06:51:46 +0000 (08:51 +0200)
commit814b2c9b30e56074e11fc0a6e5419b3fee0639bc
tree02625ee8ad4b983b26d4832b6dfe64db32c7449d
parentdd074f04e04648d89d9d10ae9846cd057c97b385
ALSA: usb-audio: qcom: Check offload mapping failures

uaudio_transfer_buffer_setup() calls dma_get_sgtable() and then passes
the sg_table to uaudio_iommu_map_xfer_buf() without checking whether sg
table construction succeeded. If dma_get_sgtable() fails, the sg_table
contents are not valid.

uaudio_iommu_map_pa() also ignores iommu_map() failures for the event and
transfer rings and still returns the allocated IOVA to the QMI response.
That can expose an unmapped IOVA to the audio DSP. For transfer rings,
the failed mapping also leaves the IOVA allocator state marked in use.

Check both operations. Free the coherent transfer buffer when sg table
construction fails, free the sg table when transfer-buffer IOMMU mapping
fails, and release the transfer-ring IOVA if iommu_map() fails. Also
return the existing event-ring IOVA when the event ring is already mapped,
matching the pre-split helper behavior.

Fixes: 326bbc348298 ("ALSA: usb-audio: qcom: Introduce QC USB SND offloading support")
Fixes: 44499ecb4f28 ("ALSA: usb: qcom: Fix false-positive address space check")
Cc: stable@vger.kernel.org
Signed-off-by: Cássio Gabriel <cassiogabrielcontato@gmail.com>
Link: https://patch.msgid.link/20260511-alsa-usb-qcom-offload-map-errors-v1-1-6502695e58bc@gmail.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/qcom/qc_audio_offload.c