mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-10-31 22:34:33 +01:00
At parsing UAC3 streams, we allocate a PD object at each time, and
either assign or free it. But there is a case where the PD object may
be leaked; namely, in __snd_usb_parse_audio_interface() loop, when an
audioformat shares the same endpoint with others, it's put to a link
and returns from snd_usb_add_audio_stream(), but the PD is forgotten
afterwards. Overall, the treatment of PD object in the parser code is
a bit flaky, and we should be more careful about the object ownership.
This patch tries to fix the above case and improve the code a bit.
The pd object is now managed with the auto-cleanup in the loop, and
the ownership is updated when the pd object gets assigned to the
stream, which guarantees the release of the leftover object.
Fixes: 7edf3b5e6a ("ALSA: usb-audio: AudioStreaming Power Domain parsing")
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Takashi Iwai <[email protected]>
15 lines
370 B
C
15 lines
370 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __USBAUDIO_STREAM_H
|
|
#define __USBAUDIO_STREAM_H
|
|
|
|
int snd_usb_parse_audio_interface(struct snd_usb_audio *chip,
|
|
int iface_no);
|
|
|
|
int snd_usb_add_audio_stream(struct snd_usb_audio *chip,
|
|
int stream,
|
|
struct audioformat *fp,
|
|
struct snd_usb_power_domain **pdptr);
|
|
|
|
#endif /* __USBAUDIO_STREAM_H */
|
|
|