]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.0-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 22 Mar 2013 21:47:21 +0000 (14:47 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 22 Mar 2013 21:47:21 +0000 (14:47 -0700)
added patches:
alsa-hda-fix-typo-in-checking-iec958-emphasis-bit.patch
alsa-snd-usb-mixer-ignore-einval-in-snd_usb_mixer_controls.patch
alsa-snd-usb-mixer-propagate-errors-up-the-call-chain.patch

queue-3.0/alsa-hda-fix-typo-in-checking-iec958-emphasis-bit.patch [new file with mode: 0644]
queue-3.0/alsa-snd-usb-mixer-ignore-einval-in-snd_usb_mixer_controls.patch [new file with mode: 0644]
queue-3.0/alsa-snd-usb-mixer-propagate-errors-up-the-call-chain.patch [new file with mode: 0644]
queue-3.0/series

diff --git a/queue-3.0/alsa-hda-fix-typo-in-checking-iec958-emphasis-bit.patch b/queue-3.0/alsa-hda-fix-typo-in-checking-iec958-emphasis-bit.patch
new file mode 100644 (file)
index 0000000..b0d74c1
--- /dev/null
@@ -0,0 +1,32 @@
+From a686fd141e20244ad75f80ad54706da07d7bb90a Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Wed, 20 Mar 2013 15:42:00 +0100
+Subject: ALSA: hda - Fix typo in checking IEC958 emphasis bit
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit a686fd141e20244ad75f80ad54706da07d7bb90a upstream.
+
+There is a typo in convert_to_spdif_status() about checking the
+emphasis IEC958 status bit.  It should check the given value instead
+of the resultant value.
+
+Reported-by: Martin Weishart <martin.weishart@telosalliance.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/hda_codec.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/pci/hda/hda_codec.c
++++ b/sound/pci/hda/hda_codec.c
+@@ -2625,7 +2625,7 @@ static unsigned int convert_to_spdif_sta
+       if (val & AC_DIG1_PROFESSIONAL)
+               sbits |= IEC958_AES0_PROFESSIONAL;
+       if (sbits & IEC958_AES0_PROFESSIONAL) {
+-              if (sbits & AC_DIG1_EMPHASIS)
++              if (val & AC_DIG1_EMPHASIS)
+                       sbits |= IEC958_AES0_PRO_EMPHASIS_5015;
+       } else {
+               if (val & AC_DIG1_EMPHASIS)
diff --git a/queue-3.0/alsa-snd-usb-mixer-ignore-einval-in-snd_usb_mixer_controls.patch b/queue-3.0/alsa-snd-usb-mixer-ignore-einval-in-snd_usb_mixer_controls.patch
new file mode 100644 (file)
index 0000000..fa7734b
--- /dev/null
@@ -0,0 +1,57 @@
+From 83ea5d18d74f032a760fecde78c0210f66f7f70c Mon Sep 17 00:00:00 2001
+From: Daniel Mack <zonque@gmail.com>
+Date: Tue, 19 Mar 2013 21:09:25 +0100
+Subject: ALSA: snd-usb: mixer: ignore -EINVAL in snd_usb_mixer_controls()
+
+From: Daniel Mack <zonque@gmail.com>
+
+commit 83ea5d18d74f032a760fecde78c0210f66f7f70c upstream.
+
+Creation of individual mixer controls may fail, but that shouldn't cause
+the entire mixer creation to fail. Even worse, if the mixer creation
+fails, that will error out the entire device probing.
+
+All the functions called by parse_audio_unit() should return -EINVAL if
+they find descriptors that are unsupported or believed to be malformed,
+so we can safely handle this error code as a non-fatal condition in
+snd_usb_mixer_controls().
+
+That fixes a long standing bug which is commonly worked around by
+adding quirks which make the driver ignore entire interfaces. Some of
+them might now be unnecessary.
+
+Signed-off-by: Daniel Mack <zonque@gmail.com>
+Reported-and-tested-by: Rodolfo Thomazelli <pe.soberbo@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/usb/mixer.c |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/sound/usb/mixer.c
++++ b/sound/usb/mixer.c
+@@ -2026,7 +2026,7 @@ static int snd_usb_mixer_controls(struct
+                       state.oterm.type = le16_to_cpu(desc->wTerminalType);
+                       state.oterm.name = desc->iTerminal;
+                       err = parse_audio_unit(&state, desc->bSourceID);
+-                      if (err < 0)
++                      if (err < 0 && err != -EINVAL)
+                               return err;
+               } else { /* UAC_VERSION_2 */
+                       struct uac2_output_terminal_descriptor *desc = p;
+@@ -2038,12 +2038,12 @@ static int snd_usb_mixer_controls(struct
+                       state.oterm.type = le16_to_cpu(desc->wTerminalType);
+                       state.oterm.name = desc->iTerminal;
+                       err = parse_audio_unit(&state, desc->bSourceID);
+-                      if (err < 0)
++                      if (err < 0 && err != -EINVAL)
+                               return err;
+                       /* for UAC2, use the same approach to also add the clock selectors */
+                       err = parse_audio_unit(&state, desc->bCSourceID);
+-                      if (err < 0)
++                      if (err < 0 && err != -EINVAL)
+                               return err;
+               }
+       }
diff --git a/queue-3.0/alsa-snd-usb-mixer-propagate-errors-up-the-call-chain.patch b/queue-3.0/alsa-snd-usb-mixer-propagate-errors-up-the-call-chain.patch
new file mode 100644 (file)
index 0000000..977f705
--- /dev/null
@@ -0,0 +1,47 @@
+From 4d7b86c98e445b075c2c4c3757eb6d3d6efbe72e Mon Sep 17 00:00:00 2001
+From: Daniel Mack <zonque@gmail.com>
+Date: Tue, 19 Mar 2013 21:09:24 +0100
+Subject: ALSA: snd-usb: mixer: propagate errors up the call chain
+
+From: Daniel Mack <zonque@gmail.com>
+
+commit 4d7b86c98e445b075c2c4c3757eb6d3d6efbe72e upstream.
+
+In check_input_term() and parse_audio_feature_unit(), propagate the
+error value that has been returned by a failing function instead of
+-EINVAL. That helps cleaning up the error pathes in the mixer.
+
+Signed-off-by: Daniel Mack <zonque@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/usb/mixer.c |   10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+--- a/sound/usb/mixer.c
++++ b/sound/usb/mixer.c
+@@ -711,8 +711,9 @@ static int check_input_term(struct mixer
+               case UAC2_CLOCK_SELECTOR: {
+                       struct uac_selector_unit_descriptor *d = p1;
+                       /* call recursively to retrieve the channel info */
+-                      if (check_input_term(state, d->baSourceID[0], term) < 0)
+-                              return -ENODEV;
++                      err = check_input_term(state, d->baSourceID[0], term);
++                      if (err < 0)
++                              return err;
+                       term->type = d->bDescriptorSubtype << 16; /* virtual type */
+                       term->id = id;
+                       term->name = uac_selector_unit_iSelector(d);
+@@ -1262,8 +1263,9 @@ static int parse_audio_feature_unit(stru
+               return err;
+       /* determine the input source type and name */
+-      if (check_input_term(state, hdr->bSourceID, &iterm) < 0)
+-              return -EINVAL;
++      err = check_input_term(state, hdr->bSourceID, &iterm);
++      if (err < 0)
++              return err;
+       master_bits = snd_usb_combine_bytes(bmaControls, csize);
+       /* master configuration quirks */
index 2a3b0ea521176ebec7fb70e0726b2406023c75fc..02d0da924b8ade918f6347ee6614598fa234b3c3 100644 (file)
@@ -18,3 +18,6 @@ sfc-fix-efx_rx_buf_offset-in-the-presence-of-swiotlb.patch
 sfc-detach-net-device-when-stopping-queues-for-reconfiguration.patch
 sfc-disable-soft-interrupt-handling-during-efx_device_detach_sync.patch
 sfc-only-use-tx-push-if-a-single-descriptor-is-to-be-written.patch
+alsa-hda-fix-typo-in-checking-iec958-emphasis-bit.patch
+alsa-snd-usb-mixer-propagate-errors-up-the-call-chain.patch
+alsa-snd-usb-mixer-ignore-einval-in-snd_usb_mixer_controls.patch