]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ALSA: usb-audio: Fix missing unlock at error path of maxpacksize check
authorTakashi Iwai <tiwai@suse.de>
Wed, 26 Nov 2025 10:08:31 +0000 (11:08 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 6 Dec 2025 21:12:35 +0000 (06:12 +0900)
commit fdf0dc82eb60091772ecea73cbc5a8fb7562fc45 upstream.

The recent backport of the upstream commit 05a1fc5efdd8 ("ALSA:
usb-audio: Fix potential overflow of PCM transfer buffer") on the
older stable kernels like 6.12.y was broken since it doesn't consider
the mutex unlock, where the upstream code manages with guard().
In the older code, we still need an explicit unlock.

This is a fix that corrects the error path, applied only on old stable
trees.

Reported-by: Pavel Machek <pavel@denx.de>
Closes: https://lore.kernel.org/aSWtH0AZH5+aeb+a@duo.ucw.cz
Fixes: 98e9d5e33bda ("ALSA: usb-audio: Fix potential overflow of PCM transfer buffer")
Reviewed-by: Pavel Machek <pavel@denx.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
sound/usb/endpoint.c

index 98743c6eb59bc67249443573db040cc69c420195..4ac1af844b2b7d87606a07a50a6e7a3cd72db863 100644 (file)
@@ -1382,7 +1382,8 @@ int snd_usb_endpoint_set_params(struct snd_usb_audio *chip,
        if (ep->packsize[1] > ep->maxpacksize) {
                usb_audio_dbg(chip, "Too small maxpacksize %u for rate %u / pps %u\n",
                              ep->maxpacksize, ep->cur_rate, ep->pps);
-               return -EINVAL;
+               err = -EINVAL;
+               goto unlock;
        }
 
        /* calculate the frequency in 16.16 format */