]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.0 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Sat, 24 Sep 2011 04:29:20 +0000 (21:29 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sat, 24 Sep 2011 04:29:20 +0000 (21:29 -0700)
queue-3.0/alsa-fm801-fix-double-free-in-case-of-error-in-tuner-detection.patch [new file with mode: 0644]
queue-3.0/alsa-fm801-gracefully-handle-failure-of-tuner-auto-detect.patch [new file with mode: 0644]
queue-3.0/alsa-usb-audio-clear-chip-probing-on-error-exit.patch [new file with mode: 0644]
queue-3.0/drm-radeon-kms-fix-ddia-enable-on-some-rs690-systems.patch [new file with mode: 0644]
queue-3.0/perf-symbols-fix-ppc64-segv-in-dso__load_sym-with-debuginfo-files.patch [new file with mode: 0644]
queue-3.0/series

diff --git a/queue-3.0/alsa-fm801-fix-double-free-in-case-of-error-in-tuner-detection.patch b/queue-3.0/alsa-fm801-fix-double-free-in-case-of-error-in-tuner-detection.patch
new file mode 100644 (file)
index 0000000..9587f8b
--- /dev/null
@@ -0,0 +1,45 @@
+From 2ba34e43ba0469086d1ff81c13a9aa9070c1a0e1 Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Thu, 22 Sep 2011 14:38:58 +0100
+Subject: ALSA: fm801: Fix double free in case of error in tuner detection
+
+From: Ben Hutchings <ben@decadent.org.uk>
+
+commit 2ba34e43ba0469086d1ff81c13a9aa9070c1a0e1 upstream.
+
+Commit 9676001559fce06e37c7dc230ab275f605556176
+("ALSA: fm801: add error handling if auto-detect fails") added
+incorrect error handling.
+
+Once we have successfully called snd_device_new(), the cleanup
+function fm801_free() will automatically be called by snd_card_free()
+and we must *not* also call fm801_free() directly.
+
+Reported-by: Hor Jiun Shyong <jiunshyong@gmail.com>
+References: http://bugs.debian.org/641946
+Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/fm801.c |    2 --
+ 1 file changed, 2 deletions(-)
+
+--- a/sound/pci/fm801.c
++++ b/sound/pci/fm801.c
+@@ -1236,7 +1236,6 @@ static int __devinit snd_fm801_create(st
+           (tea575x_tuner & TUNER_TYPE_MASK) < 4) {
+               if (snd_tea575x_init(&chip->tea)) {
+                       snd_printk(KERN_ERR "TEA575x radio not found\n");
+-                      snd_fm801_free(chip);
+                       return -ENODEV;
+               }
+       } else if ((tea575x_tuner & TUNER_TYPE_MASK) == 0) {
+@@ -1251,7 +1250,6 @@ static int __devinit snd_fm801_create(st
+               }
+               if (tea575x_tuner == 4) {
+                       snd_printk(KERN_ERR "TEA575x radio not found\n");
+-                      snd_fm801_free(chip);
+                       return -ENODEV;
+               }
+       }
diff --git a/queue-3.0/alsa-fm801-gracefully-handle-failure-of-tuner-auto-detect.patch b/queue-3.0/alsa-fm801-gracefully-handle-failure-of-tuner-auto-detect.patch
new file mode 100644 (file)
index 0000000..5aadbdf
--- /dev/null
@@ -0,0 +1,64 @@
+From c37279b92aba2893578f61076cd2eef5c5fa0e99 Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Thu, 22 Sep 2011 14:39:52 +0100
+Subject: ALSA: fm801: Gracefully handle failure of tuner auto-detect
+
+From: Ben Hutchings <ben@decadent.org.uk>
+
+commit c37279b92aba2893578f61076cd2eef5c5fa0e99 upstream.
+
+Commit 9676001559fce06e37c7dc230ab275f605556176
+("ALSA: fm801: add error handling if auto-detect fails") seems to
+break systems that were previously working without a tuner.
+
+As a bonus, this should fix init and cleanup for the case where the
+tuner is explicitly disabled.
+
+Reported-and-tested-by: Hor Jiun Shyong <jiunshyong@gmail.com>
+References: http://bugs.debian.org/641946
+Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/fm801.c |   13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
+
+--- a/sound/pci/fm801.c
++++ b/sound/pci/fm801.c
+@@ -68,6 +68,7 @@ MODULE_PARM_DESC(enable, "Enable FM801 s
+ module_param_array(tea575x_tuner, int, NULL, 0444);
+ MODULE_PARM_DESC(tea575x_tuner, "TEA575x tuner access method (0 = auto, 1 = SF256-PCS, 2=SF256-PCP, 3=SF64-PCR, 8=disable, +16=tuner-only).");
++#define TUNER_DISABLED                (1<<3)
+ #define TUNER_ONLY            (1<<4)
+ #define TUNER_TYPE_MASK               (~TUNER_ONLY & 0xFFFF)
+@@ -1150,7 +1151,8 @@ static int snd_fm801_free(struct fm801 *
+       __end_hw:
+ #ifdef CONFIG_SND_FM801_TEA575X_BOOL
+-      snd_tea575x_exit(&chip->tea);
++      if (!(chip->tea575x_tuner & TUNER_DISABLED))
++              snd_tea575x_exit(&chip->tea);
+ #endif
+       if (chip->irq >= 0)
+               free_irq(chip->irq, chip);
+@@ -1250,10 +1252,15 @@ static int __devinit snd_fm801_create(st
+               }
+               if (tea575x_tuner == 4) {
+                       snd_printk(KERN_ERR "TEA575x radio not found\n");
+-                      return -ENODEV;
++                      chip->tea575x_tuner = TUNER_DISABLED;
+               }
+       }
+-      strlcpy(chip->tea.card, snd_fm801_tea575x_gpios[(tea575x_tuner & TUNER_TYPE_MASK) - 1].name, sizeof(chip->tea.card));
++      if (!(chip->tea575x_tuner & TUNER_DISABLED)) {
++              strlcpy(chip->tea.card,
++                      snd_fm801_tea575x_gpios[(tea575x_tuner &
++                                               TUNER_TYPE_MASK) - 1].name,
++                      sizeof(chip->tea.card));
++      }
+ #endif
+       *rchip = chip;
diff --git a/queue-3.0/alsa-usb-audio-clear-chip-probing-on-error-exit.patch b/queue-3.0/alsa-usb-audio-clear-chip-probing-on-error-exit.patch
new file mode 100644 (file)
index 0000000..204cef4
--- /dev/null
@@ -0,0 +1,47 @@
+From 362e4e49abe53e89d87455dfcd7c1bbaf08a839d Mon Sep 17 00:00:00 2001
+From: Thomas Pfaff <tpfaff@gmx.net>
+Date: Thu, 22 Sep 2011 18:26:06 +0200
+Subject: ALSA: usb-audio - clear chip->probing on error exit
+
+From: Thomas Pfaff <tpfaff@gmx.net>
+
+commit 362e4e49abe53e89d87455dfcd7c1bbaf08a839d upstream.
+
+The Terratec Aureon 5.1 USB sound card support is broken since kernel
+2.6.39.
+2.6.39 introduced power management support for USB sound cards that added
+a probing flag in struct snd_usb_audio.
+
+During the probe of the card it gives following error message :
+
+usb 7-2: new full speed USB device number 2 using uhci_hcd
+cannot find UAC_HEADER
+snd-usb-audio: probe of 7-2:1.3 failed with error -5
+input: USB Audio as
+/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.3/input/input6
+generic-usb 0003:0CCD:0028.0001: input: USB HID v1.00 Device [USB Audio]
+on usb-0000:00:1d.1-2/input3
+
+I can not comment about that "cannot find UAC_HEADER" error, but until
+2.6.38 the card worked anyway.
+With 2.6.39 chip->probing remains 1 on error exit, and any later ioctl
+stops in snd_usb_autoresume with -ENODEV.
+
+Signed-off-by: Thomas Pfaff <tpfaff@gmx.net>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/usb/card.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/usb/card.c
++++ b/sound/usb/card.c
+@@ -531,6 +531,7 @@ static void *snd_usb_audio_probe(struct
+  __error:
+       if (chip && !chip->num_interfaces)
+               snd_card_free(chip->card);
++      chip->probing = 0;
+       mutex_unlock(&register_mutex);
+  __err_val:
+       return NULL;
diff --git a/queue-3.0/drm-radeon-kms-fix-ddia-enable-on-some-rs690-systems.patch b/queue-3.0/drm-radeon-kms-fix-ddia-enable-on-some-rs690-systems.patch
new file mode 100644 (file)
index 0000000..d3cd050
--- /dev/null
@@ -0,0 +1,40 @@
+From fdfc61594e6de21c23f955818ef78bcab9bafe40 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Thu, 22 Sep 2011 10:47:23 -0400
+Subject: drm/radeon/kms: fix DDIA enable on some rs690 systems
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit fdfc61594e6de21c23f955818ef78bcab9bafe40 upstream.
+
+DVOOutputControl checks the value of of bios scratch reg 3
+on some tables and assumes the encoder is already enabled
+if the DFP2_ACTIVE bit is set.  Clear that bit so the table
+sets the DDIA enable bit properly.
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/radeon/radeon_encoders.c |    9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/radeon/radeon_encoders.c
++++ b/drivers/gpu/drm/radeon/radeon_encoders.c
+@@ -1507,7 +1507,14 @@ radeon_atom_encoder_dpms(struct drm_enco
+               switch (mode) {
+               case DRM_MODE_DPMS_ON:
+                       args.ucAction = ATOM_ENABLE;
+-                      atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
++                      /* workaround for DVOOutputControl on some RS690 systems */
++                      if (radeon_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_DDI) {
++                              u32 reg = RREG32(RADEON_BIOS_3_SCRATCH);
++                              WREG32(RADEON_BIOS_3_SCRATCH, reg & ~ATOM_S3_DFP2I_ACTIVE);
++                              atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
++                              WREG32(RADEON_BIOS_3_SCRATCH, reg);
++                      } else
++                              atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
+                       if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) {
+                               args.ucAction = ATOM_LCD_BLON;
+                               atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
diff --git a/queue-3.0/perf-symbols-fix-ppc64-segv-in-dso__load_sym-with-debuginfo-files.patch b/queue-3.0/perf-symbols-fix-ppc64-segv-in-dso__load_sym-with-debuginfo-files.patch
new file mode 100644 (file)
index 0000000..5b8cb04
--- /dev/null
@@ -0,0 +1,40 @@
+From adb091846318f86e4f46c7d6a7b40d2f478abdbe Mon Sep 17 00:00:00 2001
+From: Anton Blanchard <anton@samba.org>
+Date: Wed, 24 Aug 2011 16:40:14 +1000
+Subject: perf symbols: Fix ppc64 SEGV in dso__load_sym with debuginfo files
+
+From: Anton Blanchard <anton@samba.org>
+
+commit adb091846318f86e4f46c7d6a7b40d2f478abdbe upstream.
+
+64bit PowerPC debuginfo files have an empty function descriptor section.
+I hit a SEGV when perf tried to use this section for symbol resolution.
+
+To fix this we need to check the section is valid and we can do this by
+checking for type SHT_PROGBITS.
+
+Cc: <stable@kernel.org>
+Cc: Ingo Molnar <mingo@elte.hu>
+Cc: Paul Mackerras <paulus@samba.org>
+Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
+Cc: Eric B Munson <emunson@mgebm.net>
+Link: http://lkml.kernel.org/r/20110824065242.895239970@samba.org
+Signed-off-by: Anton Blanchard <anton@samba.org>
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ tools/perf/util/symbol.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/tools/perf/util/symbol.c
++++ b/tools/perf/util/symbol.c
+@@ -1111,6 +1111,8 @@ static int dso__load_sym(struct dso *dso
+       }
+       opdsec = elf_section_by_name(elf, &ehdr, &opdshdr, ".opd", &opdidx);
++      if (opdshdr.sh_type != SHT_PROGBITS)
++              opdsec = NULL;
+       if (opdsec)
+               opddata = elf_rawdata(opdsec, NULL);
index 2b5d9af9bec3334ee7a6ebed28902bac45c00d3c..be92d9bfb6228637377341a56c68f82daa639a27 100644 (file)
@@ -204,3 +204,8 @@ ahci-raid-mode-sata-patch-for-intel-panther-point-deviceids.patch
 bluetooth-fix-timeout-on-scanning-for-the-second-time.patch
 libiscsi_tcp-fix-lld-data-allocation.patch
 usb-host-pci-quirks.c-correct-annotation-of.patch
+perf-symbols-fix-ppc64-segv-in-dso__load_sym-with-debuginfo-files.patch
+alsa-usb-audio-clear-chip-probing-on-error-exit.patch
+drm-radeon-kms-fix-ddia-enable-on-some-rs690-systems.patch
+alsa-fm801-fix-double-free-in-case-of-error-in-tuner-detection.patch
+alsa-fm801-gracefully-handle-failure-of-tuner-auto-detect.patch