Commit 57c14b98 authored by Karol Kosik's avatar Karol Kosik Committed by Takashi Iwai

ALSA: usb-audio: Fix NULL pointer deref in snd_usb_power_domain_set()

Commit adding support for multiple control interfaces expanded struct
snd_usb_power_domain with pointer to control interface for proper control
message routing but missed one initialization point of this structure,
which has left new field with NULL value.

Standard mandates that each device has at least one control interface and
code responsible for power domain does not check for NULL values when
querying for control interface. This caused some USB devices to crash
the kernel.

Fixes: 6aa87001 ("ALSA: usb-audio: Support multiple control interfaces")
Signed-off-by: default avatarKarol Kosik <k.kosik@outlook.com>
Link: https://patch.msgid.link/AS8P190MB1285B563C6B5394DB274813FEC782@AS8P190MB1285.EURP190.PROD.OUTLOOK.COMSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 9988844c
...@@ -1067,6 +1067,7 @@ snd_usb_get_audioformat_uac3(struct snd_usb_audio *chip, ...@@ -1067,6 +1067,7 @@ snd_usb_get_audioformat_uac3(struct snd_usb_audio *chip,
UAC3_BADD_PD_ID10 : UAC3_BADD_PD_ID11; UAC3_BADD_PD_ID10 : UAC3_BADD_PD_ID11;
pd->pd_d1d0_rec = UAC3_BADD_PD_RECOVER_D1D0; pd->pd_d1d0_rec = UAC3_BADD_PD_RECOVER_D1D0;
pd->pd_d2d0_rec = UAC3_BADD_PD_RECOVER_D2D0; pd->pd_d2d0_rec = UAC3_BADD_PD_RECOVER_D2D0;
pd->ctrl_iface = ctrl_intf;
} else { } else {
fp->attributes = parse_uac_endpoint_attributes(chip, alts, fp->attributes = parse_uac_endpoint_attributes(chip, alts,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment