]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.8-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 25 Feb 2013 18:58:46 +0000 (10:58 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 25 Feb 2013 18:58:46 +0000 (10:58 -0800)
added patches:
alsa-hda-disable-runtime-pm-for-intel-5-series-3400.patch
alsa-hda-fix-broken-workaround-for-hdmi-spdif-conflicts.patch
alsa-hda-fix-default-multichannel-hdmi-mapping-regression.patch
alsa-hda-hdmi-eld-shouldn-t-be-valid-after-unplug.patch
alsa-hda-release-assigned-pin-cvt-at-error-path-of-hdmi_pcm_open.patch
alsa-hda-workaround-for-silent-output-on-sony-vaio-vgc-ln51jgb-with-alc889.patch
alsa-usb-audio-fix-roland-a-pro-support.patch
alsa-usb-fix-processing-unit-descriptor-parsers.patch
alsa-usb-quirks-fix-out-of-bounds-access.patch
gfs2-get-a-block-reservation-before-resizing-a-file.patch
p54usb-corrected-usb-id-for-t-com-sinus-154-data-ii.patch

12 files changed:
queue-3.8/alsa-hda-disable-runtime-pm-for-intel-5-series-3400.patch [new file with mode: 0644]
queue-3.8/alsa-hda-fix-broken-workaround-for-hdmi-spdif-conflicts.patch [new file with mode: 0644]
queue-3.8/alsa-hda-fix-default-multichannel-hdmi-mapping-regression.patch [new file with mode: 0644]
queue-3.8/alsa-hda-hdmi-eld-shouldn-t-be-valid-after-unplug.patch [new file with mode: 0644]
queue-3.8/alsa-hda-release-assigned-pin-cvt-at-error-path-of-hdmi_pcm_open.patch [new file with mode: 0644]
queue-3.8/alsa-hda-workaround-for-silent-output-on-sony-vaio-vgc-ln51jgb-with-alc889.patch [new file with mode: 0644]
queue-3.8/alsa-usb-audio-fix-roland-a-pro-support.patch [new file with mode: 0644]
queue-3.8/alsa-usb-fix-processing-unit-descriptor-parsers.patch [new file with mode: 0644]
queue-3.8/alsa-usb-quirks-fix-out-of-bounds-access.patch [new file with mode: 0644]
queue-3.8/gfs2-get-a-block-reservation-before-resizing-a-file.patch [new file with mode: 0644]
queue-3.8/p54usb-corrected-usb-id-for-t-com-sinus-154-data-ii.patch [new file with mode: 0644]
queue-3.8/series

diff --git a/queue-3.8/alsa-hda-disable-runtime-pm-for-intel-5-series-3400.patch b/queue-3.8/alsa-hda-disable-runtime-pm-for-intel-5-series-3400.patch
new file mode 100644 (file)
index 0000000..baff381
--- /dev/null
@@ -0,0 +1,32 @@
+From 2c1350fdeaefefe1a149d3b083383409f43f0daa Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Thu, 14 Feb 2013 09:44:55 +0100
+Subject: ALSA: hda - Disable runtime PM for Intel 5 Series/3400
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 2c1350fdeaefefe1a149d3b083383409f43f0daa upstream.
+
+We've got a regression report wrt the IRQ issue related with the
+power-save on a Dell machine, and disabling runtime PM works around.
+
+Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=53441
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/hda_intel.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/pci/hda/hda_intel.c
++++ b/sound/pci/hda/hda_intel.c
+@@ -3624,7 +3624,7 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids)
+         .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH },
+       /* 5 Series/3400 */
+       { PCI_DEVICE(0x8086, 0x3b56),
+-        .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH },
++        .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_NOPM },
+       /* Poulsbo */
+       { PCI_DEVICE(0x8086, 0x811b),
+         .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_NOPM },
diff --git a/queue-3.8/alsa-hda-fix-broken-workaround-for-hdmi-spdif-conflicts.patch b/queue-3.8/alsa-hda-fix-broken-workaround-for-hdmi-spdif-conflicts.patch
new file mode 100644 (file)
index 0000000..029fd53
--- /dev/null
@@ -0,0 +1,137 @@
+From ea9b43addc4d90ca5b029f47f85ca152320a1e8d Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Tue, 12 Feb 2013 17:02:41 +0100
+Subject: ALSA: hda - Fix broken workaround for HDMI/SPDIF conflicts
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit ea9b43addc4d90ca5b029f47f85ca152320a1e8d upstream.
+
+The commit [dcda58061: ALSA: hda - Add workaround for conflicting
+IEC958 controls] introduced a workaround for cards that have both
+SPDIF and HDMI devices for giving device=1 to SPDIF control elements.
+It turned out, however, that this workaround doesn't work well -
+
+- The workaround checks only conflicts in a single codec, but SPDIF
+  and HDMI are provided by multiple codecs in many cases, and
+
+- ALSA mixer abstraction doesn't care about the device number in ctl
+  elements, thus you'll get errors from amixer such as
+  % amixer scontrols -c 0
+  ALSA lib simple_none.c:1551:(simple_add1) helem (MIXER,'IEC958
+  Playback Switch',0,1,0) appears twice or more
+  amixer: Mixer hw:0 load error: Invalid argument
+
+This patch fixes the previous broken workaround.  Instead of changing
+the device number of SPDIF ctl elements, shift the element indices of
+such controls up to 16.  Also, the conflict check is performed over
+all codecs found on the bus.
+
+HDMI devices will be put to dev=0,index=0 as before.  Only the
+conflicting SPDIF device is moved to a different place.  The new place
+of SPDIF device is supposed by the updated alsa-lib HDA-Intel.conf,
+respectively.
+
+Reported-by: Stephan Raue <stephan@openelec.tv>
+Reported-by: Anssi Hannula <anssi.hannula@iki.fi>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/hda_codec.c |   43 +++++++++++++++++++++----------------------
+ sound/pci/hda/hda_codec.h |    3 ++-
+ 2 files changed, 23 insertions(+), 23 deletions(-)
+
+--- a/sound/pci/hda/hda_codec.c
++++ b/sound/pci/hda/hda_codec.c
+@@ -2160,11 +2160,12 @@ struct snd_kcontrol *snd_hda_find_mixer_
+ EXPORT_SYMBOL_HDA(snd_hda_find_mixer_ctl);
+ static int find_empty_mixer_ctl_idx(struct hda_codec *codec, const char *name,
+-                                  int dev)
++                                  int start_idx)
+ {
+-      int idx;
+-      for (idx = 0; idx < 16; idx++) { /* 16 ctlrs should be large enough */
+-              if (!find_mixer_ctl(codec, name, dev, idx))
++      int i, idx;
++      /* 16 ctlrs should be large enough */
++      for (i = 0, idx = start_idx; i < 16; i++, idx++) {
++              if (!find_mixer_ctl(codec, name, 0, idx))
+                       return idx;
+       }
+       return -EBUSY;
+@@ -3132,30 +3133,29 @@ int snd_hda_create_dig_out_ctls(struct h
+       int err;
+       struct snd_kcontrol *kctl;
+       struct snd_kcontrol_new *dig_mix;
+-      int idx, dev = 0;
+-      const int spdif_pcm_dev = 1;
++      int idx = 0;
++      const int spdif_index = 16;
+       struct hda_spdif_out *spdif;
++      struct hda_bus *bus = codec->bus;
+-      if (codec->primary_dig_out_type == HDA_PCM_TYPE_HDMI &&
++      if (bus->primary_dig_out_type == HDA_PCM_TYPE_HDMI &&
+           type == HDA_PCM_TYPE_SPDIF) {
+-              dev = spdif_pcm_dev;
+-      } else if (codec->primary_dig_out_type == HDA_PCM_TYPE_SPDIF &&
++              idx = spdif_index;
++      } else if (bus->primary_dig_out_type == HDA_PCM_TYPE_SPDIF &&
+                  type == HDA_PCM_TYPE_HDMI) {
+-              for (idx = 0; idx < codec->spdif_out.used; idx++) {
+-                      spdif = snd_array_elem(&codec->spdif_out, idx);
+-                      for (dig_mix = dig_mixes; dig_mix->name; dig_mix++) {
+-                              kctl = find_mixer_ctl(codec, dig_mix->name, 0, idx);
+-                              if (!kctl)
+-                                      break;
+-                              kctl->id.device = spdif_pcm_dev;
+-                      }
++              /* suppose a single SPDIF device */
++              for (dig_mix = dig_mixes; dig_mix->name; dig_mix++) {
++                      kctl = find_mixer_ctl(codec, dig_mix->name, 0, 0);
++                      if (!kctl)
++                              break;
++                      kctl->id.index = spdif_index;
+               }
+-              codec->primary_dig_out_type = HDA_PCM_TYPE_HDMI;
++              bus->primary_dig_out_type = HDA_PCM_TYPE_HDMI;
+       }
+-      if (!codec->primary_dig_out_type)
+-              codec->primary_dig_out_type = type;
++      if (!bus->primary_dig_out_type)
++              bus->primary_dig_out_type = type;
+-      idx = find_empty_mixer_ctl_idx(codec, "IEC958 Playback Switch", dev);
++      idx = find_empty_mixer_ctl_idx(codec, "IEC958 Playback Switch", idx);
+       if (idx < 0) {
+               printk(KERN_ERR "hda_codec: too many IEC958 outputs\n");
+               return -EBUSY;
+@@ -3165,7 +3165,6 @@ int snd_hda_create_dig_out_ctls(struct h
+               kctl = snd_ctl_new1(dig_mix, codec);
+               if (!kctl)
+                       return -ENOMEM;
+-              kctl->id.device = dev;
+               kctl->id.index = idx;
+               kctl->private_value = codec->spdif_out.used - 1;
+               err = snd_hda_ctl_add(codec, associated_nid, kctl);
+--- a/sound/pci/hda/hda_codec.h
++++ b/sound/pci/hda/hda_codec.h
+@@ -671,6 +671,8 @@ struct hda_bus {
+       unsigned int response_reset:1;  /* controller was reset */
+       unsigned int in_reset:1;        /* during reset operation */
+       unsigned int power_keep_link_on:1; /* don't power off HDA link */
++
++      int primary_dig_out_type;       /* primary digital out PCM type */
+ };
+ /*
+@@ -837,7 +839,6 @@ struct hda_codec {
+       struct mutex hash_mutex;
+       struct snd_array spdif_out;
+       unsigned int spdif_in_enable;   /* SPDIF input enable? */
+-      int primary_dig_out_type;       /* primary digital out PCM type */
+       const hda_nid_t *slave_dig_outs; /* optional digital out slave widgets */
+       struct snd_array init_pins;     /* initial (BIOS) pin configurations */
+       struct snd_array driver_pins;   /* pin configs set by codec parser */
diff --git a/queue-3.8/alsa-hda-fix-default-multichannel-hdmi-mapping-regression.patch b/queue-3.8/alsa-hda-fix-default-multichannel-hdmi-mapping-regression.patch
new file mode 100644 (file)
index 0000000..833baed
--- /dev/null
@@ -0,0 +1,64 @@
+From 20608731f479d48be6bcb88e727f360ddf98ddaf Mon Sep 17 00:00:00 2001
+From: Anssi Hannula <anssi.hannula@iki.fi>
+Date: Sun, 3 Feb 2013 17:55:45 +0200
+Subject: ALSA: hda - Fix default multichannel HDMI mapping regression
+
+From: Anssi Hannula <anssi.hannula@iki.fi>
+
+commit 20608731f479d48be6bcb88e727f360ddf98ddaf upstream.
+
+Commit d45e6889ee69456a4d5b1bbb32252f460cd48fa9 ("ALSA: hda - Provide
+the proper channel mapping for generic HDMI driver") added support for
+custom channel maps in the HDA HDMI driver. Due to a mistake in an
+'if' condition the custom map is always used even when no such map has
+been set. This causes incorrect channel mapping for multichannel audio
+by default.
+
+Pass per_pin->chmap_set to hdmi_setup_channel_mapping() as a parameter
+so that it can use it for detecting if a custom map has been set instead
+of checking if map is NULL (which is never the case).
+
+Reported-by: Staffan Lindberg <pike@xbmc.org>
+Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_hdmi.c |   11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -714,9 +714,10 @@ static void hdmi_setup_fake_chmap(unsign
+ static void hdmi_setup_channel_mapping(struct hda_codec *codec,
+                                      hda_nid_t pin_nid, bool non_pcm, int ca,
+-                                     int channels, unsigned char *map)
++                                     int channels, unsigned char *map,
++                                     bool chmap_set)
+ {
+-      if (!non_pcm && map) {
++      if (!non_pcm && chmap_set) {
+               hdmi_manual_setup_channel_mapping(codec, pin_nid,
+                                                 channels, map);
+       } else {
+@@ -905,7 +906,8 @@ static void hdmi_setup_audio_infoframe(s
+                           pin_nid,
+                           channels);
+               hdmi_setup_channel_mapping(codec, pin_nid, non_pcm, ca,
+-                                         channels, per_pin->chmap);
++                                         channels, per_pin->chmap,
++                                         per_pin->chmap_set);
+               hdmi_stop_infoframe_trans(codec, pin_nid);
+               hdmi_fill_audio_infoframe(codec, pin_nid,
+                                           ai.bytes, sizeof(ai));
+@@ -915,7 +917,8 @@ static void hdmi_setup_audio_infoframe(s
+                * accordingly */
+               if (per_pin->non_pcm != non_pcm)
+                       hdmi_setup_channel_mapping(codec, pin_nid, non_pcm, ca,
+-                                                 channels, per_pin->chmap);
++                                                 channels, per_pin->chmap,
++                                                 per_pin->chmap_set);
+       }
+       per_pin->non_pcm = non_pcm;
diff --git a/queue-3.8/alsa-hda-hdmi-eld-shouldn-t-be-valid-after-unplug.patch b/queue-3.8/alsa-hda-hdmi-eld-shouldn-t-be-valid-after-unplug.patch
new file mode 100644 (file)
index 0000000..c0e8853
--- /dev/null
@@ -0,0 +1,31 @@
+From bbfd8a19b6913f50a362457c34d49bfafe5e456e Mon Sep 17 00:00:00 2001
+From: David Henningsson <david.henningsson@canonical.com>
+Date: Tue, 19 Feb 2013 16:11:22 +0100
+Subject: ALSA: hda - hdmi: ELD shouldn't be valid after unplug
+
+From: David Henningsson <david.henningsson@canonical.com>
+
+commit bbfd8a19b6913f50a362457c34d49bfafe5e456e upstream.
+
+Currently, eld_valid is never set to false, except at kernel module
+load time. This patch makes sure that eld is no longer valid when
+the cable is (hot-)unplugged.
+
+Signed-off-by: David Henningsson <david.henningsson@canonical.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_hdmi.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -1172,6 +1172,7 @@ static void hdmi_present_sense(struct hd
+               "HDMI status: Codec=%d Pin=%d Presence_Detect=%d ELD_Valid=%d\n",
+               codec->addr, pin_nid, eld->monitor_present, eld_valid);
++      eld->eld_valid = false;
+       if (eld_valid) {
+               if (!snd_hdmi_get_eld(eld, codec, pin_nid))
+                       snd_hdmi_show_eld(eld);
diff --git a/queue-3.8/alsa-hda-release-assigned-pin-cvt-at-error-path-of-hdmi_pcm_open.patch b/queue-3.8/alsa-hda-release-assigned-pin-cvt-at-error-path-of-hdmi_pcm_open.patch
new file mode 100644 (file)
index 0000000..97ae1d2
--- /dev/null
@@ -0,0 +1,36 @@
+From 2ad779b7329d6894a80df94e693e72eaa0d56790 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Fri, 1 Feb 2013 14:01:27 +0100
+Subject: ALSA: hda - Release assigned pin/cvt at error path of hdmi_pcm_open()
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 2ad779b7329d6894a80df94e693e72eaa0d56790 upstream.
+
+If the driver detects and invalid ELD, it gives an open error.
+But it forgot to release the assigned pin, converter and spdif ctls
+before returning.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_hdmi.c |    6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -1100,8 +1100,12 @@ static int hdmi_pcm_open(struct hda_pcm_
+       if (!static_hdmi_pcm && eld->eld_valid) {
+               snd_hdmi_eld_update_pcm_info(eld, hinfo);
+               if (hinfo->channels_min > hinfo->channels_max ||
+-                  !hinfo->rates || !hinfo->formats)
++                  !hinfo->rates || !hinfo->formats) {
++                      per_cvt->assigned = 0;
++                      hinfo->nid = 0;
++                      snd_hda_spdif_ctls_unassign(codec, pin_idx);
+                       return -ENODEV;
++              }
+       }
+       /* Store the updated parameters */
diff --git a/queue-3.8/alsa-hda-workaround-for-silent-output-on-sony-vaio-vgc-ln51jgb-with-alc889.patch b/queue-3.8/alsa-hda-workaround-for-silent-output-on-sony-vaio-vgc-ln51jgb-with-alc889.patch
new file mode 100644 (file)
index 0000000..f05ac08
--- /dev/null
@@ -0,0 +1,35 @@
+From 12e31a78c70dc12897fda2489113f445c0e94a18 Mon Sep 17 00:00:00 2001
+From: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
+Date: Tue, 12 Feb 2013 16:47:44 +0900
+Subject: ALSA: hda - Workaround for silent output on Sony Vaio VGC-LN51JGB with ALC889
+
+From: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
+
+commit 12e31a78c70dc12897fda2489113f445c0e94a18 upstream.
+
+Some Vaio all-in-one desktop PCs (for example VGC-LN51JGB) are affected by
+the same issue that caused Vaio Z laptops to become silent: the speaker pin
+must be connected to the first DAC even though the codec itself advertises
+flexible routing through any of the DACs.
+
+Use the no-primary-hp fixup for choosing the speaker pin as the primary so
+that the right DAC is assigned on this device.
+
+Signed-off-by: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_realtek.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -5394,6 +5394,7 @@ static const struct snd_pci_quirk alc882
+       SND_PCI_QUIRK(0x1043, 0x835f, "Asus Eee 1601", ALC888_FIXUP_EEE1601),
+       SND_PCI_QUIRK(0x104d, 0x9047, "Sony Vaio TT", ALC889_FIXUP_VAIO_TT),
+       SND_PCI_QUIRK(0x104d, 0x905a, "Sony Vaio Z", ALC882_FIXUP_NO_PRIMARY_HP),
++      SND_PCI_QUIRK(0x104d, 0x9043, "Sony Vaio VGC-LN51JGB", ALC882_FIXUP_NO_PRIMARY_HP),
+       /* All Apple entries are in codec SSIDs */
+       SND_PCI_QUIRK(0x106b, 0x00a0, "MacBookPro 3,1", ALC889_FIXUP_MBP_VREF),
diff --git a/queue-3.8/alsa-usb-audio-fix-roland-a-pro-support.patch b/queue-3.8/alsa-usb-audio-fix-roland-a-pro-support.patch
new file mode 100644 (file)
index 0000000..d0bc082
--- /dev/null
@@ -0,0 +1,31 @@
+From 7da58046482fceb17c4a0d4afefd9507ec56de7f Mon Sep 17 00:00:00 2001
+From: Clemens Ladisch <clemens@ladisch.de>
+Date: Thu, 31 Jan 2013 21:14:33 +0100
+Subject: ALSA: usb-audio: fix Roland A-PRO support
+
+From: Clemens Ladisch <clemens@ladisch.de>
+
+commit 7da58046482fceb17c4a0d4afefd9507ec56de7f upstream.
+
+The quirk for the Roland/Cakewalk A-PRO keyboards accidentally used the
+wrong interface number, which prevented the driver from attaching to the
+device.
+
+Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/usb/quirks-table.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/usb/quirks-table.h
++++ b/sound/usb/quirks-table.h
+@@ -1750,7 +1750,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
+       .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
+               /* .vendor_name = "Roland", */
+               /* .product_name = "A-PRO", */
+-              .ifnum = 1,
++              .ifnum = 0,
+               .type = QUIRK_MIDI_FIXED_ENDPOINT,
+               .data = & (const struct snd_usb_midi_endpoint_info) {
+                       .out_cables = 0x0003,
diff --git a/queue-3.8/alsa-usb-fix-processing-unit-descriptor-parsers.patch b/queue-3.8/alsa-usb-fix-processing-unit-descriptor-parsers.patch
new file mode 100644 (file)
index 0000000..080d1a1
--- /dev/null
@@ -0,0 +1,73 @@
+From b531f81b0d70ffbe8d70500512483227cc532608 Mon Sep 17 00:00:00 2001
+From: Pawel Moll <mail@pawelmoll.com>
+Date: Thu, 21 Feb 2013 01:55:50 +0000
+Subject: ALSA: usb: Fix Processing Unit Descriptor parsers
+
+From: Pawel Moll <mail@pawelmoll.com>
+
+commit b531f81b0d70ffbe8d70500512483227cc532608 upstream.
+
+Commit 99fc86450c439039d2ef88d06b222fd51a779176 "ALSA: usb-mixer:
+parse descriptors with structs" introduced a set of useful parsers
+for descriptors. Unfortunately the parses for the Processing Unit
+Descriptor came with a very subtle bug...
+
+Functions uac_processing_unit_iProcessing() and
+uac_processing_unit_specific() were indexing the baSourceID array
+forgetting the fields before the iProcessing and process-specific
+descriptors.
+
+The problem was observed with Sound Blaster Extigy mixer,
+where nNrModes in Up/Down-mix Processing Unit Descriptor
+was accessed at offset 10 of the descriptor (value 0)
+instead of offset 15 (value 7). In result the resulting
+control had interesting limit values:
+
+Simple mixer control 'Channel Routing Mode Select',0
+  Capabilities: volume volume-joined penum
+  Playback channels: Mono
+  Capture channels: Mono
+  Limits: 0 - -1
+  Mono: -1 [100%]
+
+Fixed by starting from the bmControls, which was calculated
+correctly, instead of baSourceID.
+
+Now the mentioned control is fine:
+
+Simple mixer control 'Channel Routing Mode Select',0
+  Capabilities: volume volume-joined penum
+  Playback channels: Mono
+  Capture channels: Mono
+  Limits: 0 - 6
+  Mono: 0 [0%]
+
+Signed-off-by: Pawel Moll <mail@pawelmoll.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ include/uapi/linux/usb/audio.h |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/include/uapi/linux/usb/audio.h
++++ b/include/uapi/linux/usb/audio.h
+@@ -384,14 +384,16 @@ static inline __u8 uac_processing_unit_i
+                                                  int protocol)
+ {
+       __u8 control_size = uac_processing_unit_bControlSize(desc, protocol);
+-      return desc->baSourceID[desc->bNrInPins + control_size];
++      return *(uac_processing_unit_bmControls(desc, protocol)
++                      + control_size);
+ }
+ static inline __u8 *uac_processing_unit_specific(struct uac_processing_unit_descriptor *desc,
+                                                int protocol)
+ {
+       __u8 control_size = uac_processing_unit_bControlSize(desc, protocol);
+-      return &desc->baSourceID[desc->bNrInPins + control_size + 1];
++      return uac_processing_unit_bmControls(desc, protocol)
++                      + control_size + 1;
+ }
+ /* 4.5.2 Class-Specific AS Interface Descriptor */
diff --git a/queue-3.8/alsa-usb-quirks-fix-out-of-bounds-access.patch b/queue-3.8/alsa-usb-quirks-fix-out-of-bounds-access.patch
new file mode 100644 (file)
index 0000000..f76858b
--- /dev/null
@@ -0,0 +1,32 @@
+From 4909a0caabb8b4352efcea223e58b86f8bc1f98b Mon Sep 17 00:00:00 2001
+From: Jiri Slaby <jslaby@suse.cz>
+Date: Sun, 17 Feb 2013 14:33:04 +0100
+Subject: ALSA: usb/quirks, fix out-of-bounds access
+
+From: Jiri Slaby <jslaby@suse.cz>
+
+commit 4909a0caabb8b4352efcea223e58b86f8bc1f98b upstream.
+
+bootresponse in snd_usb_mbox2_boot_quirk is only 12 (decimal) u8's
+long, but i9s passed to snd_usb_ctl_msg as it would be 0x12 (hexa)
+long. Fix that by having proper size of the array, i.e. 0x12.
+
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/usb/quirks.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/usb/quirks.c
++++ b/sound/usb/quirks.c
+@@ -533,7 +533,7 @@ static int snd_usb_mbox2_boot_quirk(stru
+ {
+       struct usb_host_config *config = dev->actconfig;
+       int err;
+-      u8 bootresponse[12];
++      u8 bootresponse[0x12];
+       int fwsize;
+       int count;
diff --git a/queue-3.8/gfs2-get-a-block-reservation-before-resizing-a-file.patch b/queue-3.8/gfs2-get-a-block-reservation-before-resizing-a-file.patch
new file mode 100644 (file)
index 0000000..a54a183
--- /dev/null
@@ -0,0 +1,34 @@
+From d2b47cfb26fe06002b8011707baac71a9ae8166f Mon Sep 17 00:00:00 2001
+From: Bob Peterson <rpeterso@redhat.com>
+Date: Fri, 1 Feb 2013 12:03:02 -0500
+Subject: GFS2: Get a block reservation before resizing a file
+
+From: Bob Peterson <rpeterso@redhat.com>
+
+commit d2b47cfb26fe06002b8011707baac71a9ae8166f upstream.
+
+This patch allocates a block reservation structure before growing
+or shrinking a file. Without this structure, the grow or shink code
+can reference the bad pointer.
+
+Signed-off-by: Bob Peterson <rpeterso@redhat.com>
+Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/gfs2/bmap.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/fs/gfs2/bmap.c
++++ b/fs/gfs2/bmap.c
+@@ -1286,6 +1286,10 @@ int gfs2_setattr_size(struct inode *inod
+       inode_dio_wait(inode);
++      ret = gfs2_rs_alloc(GFS2_I(inode));
++      if (ret)
++              return ret;
++
+       oldsize = inode->i_size;
+       if (newsize >= oldsize)
+               return do_grow(inode, newsize);
diff --git a/queue-3.8/p54usb-corrected-usb-id-for-t-com-sinus-154-data-ii.patch b/queue-3.8/p54usb-corrected-usb-id-for-t-com-sinus-154-data-ii.patch
new file mode 100644 (file)
index 0000000..1c4619e
--- /dev/null
@@ -0,0 +1,35 @@
+From 008e33f733ca51acb2dd9d88ea878693b04d1d2a Mon Sep 17 00:00:00 2001
+From: Tomasz Guszkowski <tsg@o2.pl>
+Date: Tue, 5 Feb 2013 22:10:31 +0100
+Subject: p54usb: corrected USB ID for T-Com Sinus 154 data II
+
+From: Tomasz Guszkowski <tsg@o2.pl>
+
+commit 008e33f733ca51acb2dd9d88ea878693b04d1d2a upstream.
+
+Corrected USB ID for T-Com Sinus 154 data II. ISL3887-based. The
+device was tested in managed mode with no security, WEP 128
+bit and WPA-PSK (TKIP) with firmware 2.13.1.0.lm87.arm (md5sum:
+7d676323ac60d6e1a3b6d61e8c528248). It works.
+
+Signed-off-by: Tomasz Guszkowski <tsg@o2.pl>
+Acked-By: Christian Lamparter <chunkeey@googlemail.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/p54/p54usb.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/p54/p54usb.c
++++ b/drivers/net/wireless/p54/p54usb.c
+@@ -84,8 +84,8 @@ static struct usb_device_id p54u_table[]
+       {USB_DEVICE(0x06b9, 0x0121)},   /* Thomson SpeedTouch 121g */
+       {USB_DEVICE(0x0707, 0xee13)},   /* SMC 2862W-G version 2 */
+       {USB_DEVICE(0x0803, 0x4310)},   /* Zoom 4410a */
+-      {USB_DEVICE(0x083a, 0x4503)},   /* T-Com Sinus 154 data II */
+       {USB_DEVICE(0x083a, 0x4521)},   /* Siemens Gigaset USB Adapter 54 version 2 */
++      {USB_DEVICE(0x083a, 0x4531)},   /* T-Com Sinus 154 data II */
+       {USB_DEVICE(0x083a, 0xc501)},   /* Zoom Wireless-G 4410 */
+       {USB_DEVICE(0x083a, 0xf503)},   /* Accton FD7050E ver 1010ec  */
+       {USB_DEVICE(0x0846, 0x4240)},   /* Netgear WG111 (v2) */
index 2bba3092c0e32b1f02fece2c725e3fcb49ef41f2..515ec2f90dcf80f4f1f697333d47d879660e17a6 100644 (file)
@@ -46,3 +46,14 @@ nlm-ensure-that-we-resend-all-pending-blocking-locks-after-a-reclaim.patch
 nfsv4.1-fix-an-abba-locking-issue-with-session-and-state-serialisation.patch
 nfsv4.1-fix-bulk-recall-and-destroy-of-layouts.patch
 nfsv4.1-don-t-decode-skipped-layoutgets.patch
+p54usb-corrected-usb-id-for-t-com-sinus-154-data-ii.patch
+alsa-usb-audio-fix-roland-a-pro-support.patch
+alsa-usb-quirks-fix-out-of-bounds-access.patch
+alsa-usb-fix-processing-unit-descriptor-parsers.patch
+alsa-hda-disable-runtime-pm-for-intel-5-series-3400.patch
+alsa-hda-release-assigned-pin-cvt-at-error-path-of-hdmi_pcm_open.patch
+alsa-hda-fix-default-multichannel-hdmi-mapping-regression.patch
+alsa-hda-workaround-for-silent-output-on-sony-vaio-vgc-ln51jgb-with-alc889.patch
+alsa-hda-fix-broken-workaround-for-hdmi-spdif-conflicts.patch
+alsa-hda-hdmi-eld-shouldn-t-be-valid-after-unplug.patch
+gfs2-get-a-block-reservation-before-resizing-a-file.patch