]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
more .28 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Fri, 13 Feb 2009 23:56:01 +0000 (15:56 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 13 Feb 2009 23:56:01 +0000 (15:56 -0800)
queue-2.6.28/alsa-hda-add-missing-terminator-in-slave-dig-out-array.patch [new file with mode: 0644]
queue-2.6.28/alsa-mtpav-fix-initial-value-for-input-hwport.patch [new file with mode: 0644]
queue-2.6.28/hid-adjust-report-descriptor-fixup-for-ms-1028-receiver.patch [new file with mode: 0644]
queue-2.6.28/ide-libata-fix-ata_id_is_cfa.patch [new file with mode: 0644]
queue-2.6.28/libata-fix-eh-device-failure-handling.patch [new file with mode: 0644]
queue-2.6.28/netfilter-fix-tuple-inversion-for-node-information-request.patch [new file with mode: 0644]
queue-2.6.28/netfilter-xt_sctp-sctp-chunk-mapping-doesn-t-work.patch [new file with mode: 0644]
queue-2.6.28/series
queue-2.6.28/x86-microcode_amd-fix-wrong-handling-of-equivalent-cpu-id.patch [new file with mode: 0644]

diff --git a/queue-2.6.28/alsa-hda-add-missing-terminator-in-slave-dig-out-array.patch b/queue-2.6.28/alsa-hda-add-missing-terminator-in-slave-dig-out-array.patch
new file mode 100644 (file)
index 0000000..0cbfdd1
--- /dev/null
@@ -0,0 +1,31 @@
+From 3a08e30de2facffe8e1a25bf4fa62cbc920fbaf6 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Fri, 13 Feb 2009 11:37:08 +0100
+Subject: ALSA: hda - Add missing terminator in slave dig-out array
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 3a08e30de2facffe8e1a25bf4fa62cbc920fbaf6 upstream.
+
+Added the missing terminator for ad1989b_slave_dig_outs[].
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/patch_analog.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/sound/pci/hda/patch_analog.c
++++ b/sound/pci/hda/patch_analog.c
+@@ -1873,8 +1873,8 @@ static hda_nid_t ad1988_capsrc_nids[3] =
+ #define AD1988_SPDIF_OUT_HDMI 0x0b
+ #define AD1988_SPDIF_IN               0x07
+-static hda_nid_t ad1989b_slave_dig_outs[2] = {
+-      AD1988_SPDIF_OUT, AD1988_SPDIF_OUT_HDMI
++static hda_nid_t ad1989b_slave_dig_outs[] = {
++      AD1988_SPDIF_OUT, AD1988_SPDIF_OUT_HDMI, 0
+ };
+ static struct hda_input_mux ad1988_6stack_capture_source = {
diff --git a/queue-2.6.28/alsa-mtpav-fix-initial-value-for-input-hwport.patch b/queue-2.6.28/alsa-mtpav-fix-initial-value-for-input-hwport.patch
new file mode 100644 (file)
index 0000000..e1f0d9c
--- /dev/null
@@ -0,0 +1,41 @@
+From 32cf9a16f4af01573ddec1eb073111fc20a9d7d4 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Thu, 12 Feb 2009 00:06:42 +0100
+Subject: ALSA: mtpav - Fix initial value for input hwport
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 32cf9a16f4af01573ddec1eb073111fc20a9d7d4 upstream.
+
+Fix the initial value for input hwport.  The old value (-1) may cause
+Oops when an realtime MIDI byte is received before the input port is
+explicitly given.
+Instead, now it's set to the broadcasting as default.
+
+Tested-by: Holger Dehnhardt <dehnhardt@ahdehnhardt.de>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/drivers/mtpav.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/sound/drivers/mtpav.c
++++ b/sound/drivers/mtpav.c
+@@ -706,7 +706,6 @@ static int __devinit snd_mtpav_probe(str
+       mtp_card->card = card;
+       mtp_card->irq = -1;
+       mtp_card->share_irq = 0;
+-      mtp_card->inmidiport = 0xffffffff;
+       mtp_card->inmidistate = 0;
+       mtp_card->outmidihwport = 0xffffffff;
+       init_timer(&mtp_card->timer);
+@@ -719,6 +718,8 @@ static int __devinit snd_mtpav_probe(str
+       if (err < 0)
+               goto __error;
++      mtp_card->inmidiport = mtp_card->num_ports + MTPAV_PIDX_BROADCAST;
++
+       err = snd_mtpav_get_ISA(mtp_card);
+       if (err < 0)
+               goto __error;
diff --git a/queue-2.6.28/hid-adjust-report-descriptor-fixup-for-ms-1028-receiver.patch b/queue-2.6.28/hid-adjust-report-descriptor-fixup-for-ms-1028-receiver.patch
new file mode 100644 (file)
index 0000000..136bc2b
--- /dev/null
@@ -0,0 +1,56 @@
+From 0fb21de0799a985d2da3da14ae5625d724256638 Mon Sep 17 00:00:00 2001
+From: Jiri Kosina <jkosina@suse.cz>
+Date: Wed, 14 Jan 2009 03:03:21 +0100
+Subject: HID: adjust report descriptor fixup for MS 1028 receiver
+
+From: Jiri Kosina <jkosina@suse.cz>
+
+commit 0fb21de0799a985d2da3da14ae5625d724256638 upstream.
+
+Report descriptor fixup for MS 1028 receiver changes also values for
+Keyboard and Consumer, which incorrectly trims the range, causing correct
+events being thrown away before passing to userspace.
+
+We need to keep the GenDesk usage fixup though, as it reports totally bogus
+values about axis.
+
+Reported-by: Lucas Gadani <lgadani@gmail.com>
+Signed-off-by: Jiri Kosina <jkosina@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/hid/hid-microsoft.c |   13 ++++---------
+ 1 file changed, 4 insertions(+), 9 deletions(-)
+
+--- a/drivers/hid/hid-microsoft.c
++++ b/drivers/hid/hid-microsoft.c
+@@ -30,7 +30,7 @@
+ #define MS_NOGET      0x10
+ /*
+- * Microsoft Wireless Desktop Receiver (Model 1028) has several
++ * Microsoft Wireless Desktop Receiver (Model 1028) has
+  * 'Usage Min/Max' where it ought to have 'Physical Min/Max'
+  */
+ static void ms_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+@@ -38,17 +38,12 @@ static void ms_report_fixup(struct hid_d
+ {
+       unsigned long quirks = (unsigned long)hid_get_drvdata(hdev);
+-      if ((quirks & MS_RDESC) && rsize == 571 && rdesc[284] == 0x19 &&
+-                      rdesc[286] == 0x2a && rdesc[304] == 0x19 &&
+-                      rdesc[306] == 0x29 && rdesc[352] == 0x1a &&
+-                      rdesc[355] == 0x2a && rdesc[557] == 0x19 &&
++      if ((quirks & MS_RDESC) && rsize == 571 && rdesc[557] == 0x19 &&
+                       rdesc[559] == 0x29) {
+               dev_info(&hdev->dev, "fixing up Microsoft Wireless Receiver "
+                               "Model 1028 report descriptor\n");
+-              rdesc[284] = rdesc[304] = rdesc[557] = 0x35;
+-              rdesc[352] = 0x36;
+-              rdesc[286] = rdesc[355] = 0x46;
+-              rdesc[306] = rdesc[559] = 0x45;
++              rdesc[557] = 0x35;
++              rdesc[559] = 0x45;
+       }
+ }
diff --git a/queue-2.6.28/ide-libata-fix-ata_id_is_cfa.patch b/queue-2.6.28/ide-libata-fix-ata_id_is_cfa.patch
new file mode 100644 (file)
index 0000000..bebcb8f
--- /dev/null
@@ -0,0 +1,49 @@
+From 2999b58b795ad81f10e34bdbbfd2742172f247e4 Mon Sep 17 00:00:00 2001
+From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+Date: Sun, 1 Feb 2009 20:46:39 +0400
+Subject: ide/libata: fix ata_id_is_cfa() (take 4)
+
+From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+
+commit 2999b58b795ad81f10e34bdbbfd2742172f247e4 upstream.
+
+When checking for the CFA feature set support, ata_id_is_cfa() tests bit 2 in
+word 82 of the identify data instead the word 83;  it also checks the ATA/PI
+version support in the word 80 (which the CompactFlash specifications have as
+reserved), this having no slightest chance to work on the modern CF cards that
+don't have 0x848A in the word 0...
+
+Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/linux/ata.h |   15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+--- a/include/linux/ata.h
++++ b/include/linux/ata.h
+@@ -731,12 +731,17 @@ static inline int ata_id_current_chs_val
+ static inline int ata_id_is_cfa(const u16 *id)
+ {
+-      if (id[ATA_ID_CONFIG] == 0x848A)        /* Standard CF */
++      if (id[ATA_ID_CONFIG] == 0x848A)        /* Traditional CF */
+               return 1;
+-      /* Could be CF hiding as standard ATA */
+-      if (ata_id_major_version(id) >= 3 &&
+-          id[ATA_ID_COMMAND_SET_1] != 0xFFFF &&
+-         (id[ATA_ID_COMMAND_SET_1] & (1 << 2)))
++      /*
++       * CF specs don't require specific value in the word 0 anymore and yet
++       * they forbid to report the ATA version in the word 80 and require the
++       * CFA feature set support to be indicated in the word 83 in this case.
++       * Unfortunately, some cards only follow either of this requirements,
++       * and while those that don't indicate CFA feature support need some
++       * sort of quirk list, it seems impractical for the ones that do...
++       */
++      if ((id[ATA_ID_COMMAND_SET_2] & 0xC004) == 0x4004)
+               return 1;
+       return 0;
+ }
diff --git a/queue-2.6.28/libata-fix-eh-device-failure-handling.patch b/queue-2.6.28/libata-fix-eh-device-failure-handling.patch
new file mode 100644 (file)
index 0000000..4ce11de
--- /dev/null
@@ -0,0 +1,46 @@
+From d89293abd95bfd7dd9229087d6c30c1464c5ac83 Mon Sep 17 00:00:00 2001
+From: Tejun Heo <tj@kernel.org>
+Date: Thu, 29 Jan 2009 20:31:29 +0900
+Subject: libata: fix EH device failure handling
+
+From: Tejun Heo <tj@kernel.org>
+
+commit d89293abd95bfd7dd9229087d6c30c1464c5ac83 upstream.
+
+The dev->pio_mode > XFER_PIO_0 test is there to avoid unnecessary
+speed down warning messages but it accidentally disabled SATA link spd
+down during configuration phase after reset where PIO mode is always
+zero.
+
+This patch fixes the problem by moving the test where it belongs.
+This makes libata probing sequence behave better when the connection
+is flaky at higher link speeds which isn't too uncommon for eSATA
+devices.
+
+Signed-off-by: Tejun Heo <tj@kernel.org>
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ata/libata-eh.c |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/drivers/ata/libata-eh.c
++++ b/drivers/ata/libata-eh.c
+@@ -2959,12 +2959,13 @@ static int ata_eh_handle_dev_fail(struct
+               /* give it just one more chance */
+               ehc->tries[dev->devno] = min(ehc->tries[dev->devno], 1);
+       case -EIO:
+-              if (ehc->tries[dev->devno] == 1 && dev->pio_mode > XFER_PIO_0) {
++              if (ehc->tries[dev->devno] == 1) {
+                       /* This is the last chance, better to slow
+                        * down than lose it.
+                        */
+                       sata_down_spd_limit(ata_dev_phys_link(dev));
+-                      ata_down_xfermask_limit(dev, ATA_DNXFER_PIO);
++                      if (dev->pio_mode > XFER_PIO_0)
++                              ata_down_xfermask_limit(dev, ATA_DNXFER_PIO);
+               }
+       }
diff --git a/queue-2.6.28/netfilter-fix-tuple-inversion-for-node-information-request.patch b/queue-2.6.28/netfilter-fix-tuple-inversion-for-node-information-request.patch
new file mode 100644 (file)
index 0000000..28b681c
--- /dev/null
@@ -0,0 +1,40 @@
+From kaber@trash.net  Fri Feb 13 15:27:29 2009
+From: Eric Leblond <eric@inl.fr>
+Date: Thu, 12 Feb 2009 08:07:37 +0100 (MET)
+Subject: netfilter: fix tuple inversion for Node information request
+To: stable@kernel.org
+Cc: netdev@vger.kernel.org, netfilter-devel@vger.kernel.org, Patrick McHardy <kaber@trash.net>, davem@davemloft.net
+Message-ID: <20090212070734.4876.53101.sendpatchset@x2.localnet>
+
+From: Eric Leblond <eric@inl.fr>
+
+netfilter: fix tuple inversion for Node information request
+
+Upstream commit: a51f42f3c
+
+The patch fixes a typo in the inverse mapping of Node Information
+request. Following draft-ietf-ipngwg-icmp-name-lookups-09, "Querier"
+sends a type 139 (ICMPV6_NI_QUERY) packet to "Responder" which answer
+with a type 140 (ICMPV6_NI_REPLY) packet.
+
+Signed-off-by: Eric Leblond <eric@inl.fr>
+Signed-off-by: Patrick McHardy <kaber@trash.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c
++++ b/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c
+@@ -49,8 +49,8 @@ static bool icmpv6_pkt_to_tuple(const st
+ static const u_int8_t invmap[] = {
+       [ICMPV6_ECHO_REQUEST - 128]     = ICMPV6_ECHO_REPLY + 1,
+       [ICMPV6_ECHO_REPLY - 128]       = ICMPV6_ECHO_REQUEST + 1,
+-      [ICMPV6_NI_QUERY - 128]         = ICMPV6_NI_QUERY + 1,
+-      [ICMPV6_NI_REPLY - 128]         = ICMPV6_NI_REPLY +1
++      [ICMPV6_NI_QUERY - 128]         = ICMPV6_NI_REPLY + 1,
++      [ICMPV6_NI_REPLY - 128]         = ICMPV6_NI_QUERY +1
+ };
+ static bool icmpv6_invert_tuple(struct nf_conntrack_tuple *tuple,
diff --git a/queue-2.6.28/netfilter-xt_sctp-sctp-chunk-mapping-doesn-t-work.patch b/queue-2.6.28/netfilter-xt_sctp-sctp-chunk-mapping-doesn-t-work.patch
new file mode 100644 (file)
index 0000000..85596ca
--- /dev/null
@@ -0,0 +1,38 @@
+From kaber@trash.net  Fri Feb 13 15:28:03 2009
+From: Qu Haoran <haoran.qu@6wind.com>
+Date: Thu, 12 Feb 2009 08:07:38 +0100 (MET)
+Subject: netfilter: xt_sctp: sctp chunk mapping doesn't work
+To: stable@kernel.org
+Cc: netdev@vger.kernel.org, netfilter-devel@vger.kernel.org, Patrick McHardy <kaber@trash.net>, davem@davemloft.net
+Message-ID: <20090212070735.4876.81436.sendpatchset@x2.localnet>
+
+From: Qu Haoran <haoran.qu@6wind.com>
+
+netfilter: xt_sctp: sctp chunk mapping doesn't work
+
+Upstream commit: d4e2675a
+
+When user tries to map all chunks given in argument, kernel
+works on a copy of the chunkmap, but at the end it doesn't
+check the copy, but the orginal one.
+
+Signed-off-by: Qu Haoran <haoran.qu@6wind.com>
+Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
+Signed-off-by: Patrick McHardy <kaber@trash.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/netfilter/xt_sctp.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/net/netfilter/xt_sctp.c
++++ b/net/netfilter/xt_sctp.c
+@@ -105,7 +105,7 @@ match_packet(const struct sk_buff *skb,
+       switch (chunk_match_type) {
+       case SCTP_CHUNK_MATCH_ALL:
+-              return SCTP_CHUNKMAP_IS_CLEAR(info->chunkmap);
++              return SCTP_CHUNKMAP_IS_CLEAR(chunkmapcopy);
+       case SCTP_CHUNK_MATCH_ANY:
+               return false;
+       case SCTP_CHUNK_MATCH_ONLY:
index 41b3c132d51776edd2378b0c8644d0a6fe80b9a2..1d23fcd6bc9f33b8dc2768acd9fb1766d009e860 100644 (file)
@@ -37,3 +37,11 @@ tcp-splice-as-many-packets-as-possible-at-once.patch
 tcp-fix-length-tcp_splice_data_recv-passes-to-skb_splice_bits.patch
 sparc-enable-syscall-wrappers-for-64-bit.patch
 sparc64-annotate-sparc64-specific-syscalls-with-syscall_definex.patch
+alsa-hda-add-missing-terminator-in-slave-dig-out-array.patch
+alsa-mtpav-fix-initial-value-for-input-hwport.patch
+hid-adjust-report-descriptor-fixup-for-ms-1028-receiver.patch
+ide-libata-fix-ata_id_is_cfa.patch
+libata-fix-eh-device-failure-handling.patch
+netfilter-fix-tuple-inversion-for-node-information-request.patch
+netfilter-xt_sctp-sctp-chunk-mapping-doesn-t-work.patch
+x86-microcode_amd-fix-wrong-handling-of-equivalent-cpu-id.patch
diff --git a/queue-2.6.28/x86-microcode_amd-fix-wrong-handling-of-equivalent-cpu-id.patch b/queue-2.6.28/x86-microcode_amd-fix-wrong-handling-of-equivalent-cpu-id.patch
new file mode 100644 (file)
index 0000000..38f81b9
--- /dev/null
@@ -0,0 +1,68 @@
+From 3c763fd77e66e55d029052da31df0abd9920cb1e Mon Sep 17 00:00:00 2001
+From: Andreas Herrmann <andreas.herrmann3@amd.com>
+Date: Tue, 16 Dec 2008 19:07:47 +0100
+Subject: x86: microcode_amd: fix wrong handling of equivalent CPU id
+
+From: Andreas Herrmann <andreas.herrmann3@amd.com>
+
+commit 3c763fd77e66e55d029052da31df0abd9920cb1e upstream.
+
+Impact: fix bug resulting in non-loaded AMD microcode
+
+mc_header->processor_rev_id is a 2 byte value. Similar is true for
+equiv_cpu in an equiv_cpu_entry -- only 2 bytes are of interest.
+
+Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/kernel/microcode_amd.c |   23 ++++++-----------------
+ 1 file changed, 6 insertions(+), 17 deletions(-)
+
+--- a/arch/x86/kernel/microcode_amd.c
++++ b/arch/x86/kernel/microcode_amd.c
+@@ -62,7 +62,7 @@ struct microcode_header_amd {
+       unsigned int  mc_patch_data_checksum;
+       unsigned int  nb_dev_id;
+       unsigned int  sb_dev_id;
+-      unsigned char processor_rev_id[2];
++      u16 processor_rev_id;
+       unsigned char nb_rev_id;
+       unsigned char sb_rev_id;
+       unsigned char bios_api_rev;
+@@ -125,7 +125,7 @@ static int get_matching_microcode(int cp
+       while (equiv_cpu_table[i].installed_cpu != 0) {
+               if (current_cpu_id == equiv_cpu_table[i].installed_cpu) {
+-                      equiv_cpu_id = equiv_cpu_table[i].equiv_cpu;
++                      equiv_cpu_id = equiv_cpu_table[i].equiv_cpu & 0xffff;
+                       break;
+               }
+               i++;
+@@ -137,21 +137,10 @@ static int get_matching_microcode(int cp
+               return 0;
+       }
+-      if ((mc_header->processor_rev_id[0]) != (equiv_cpu_id & 0xff)) {
+-              printk(KERN_ERR
+-                      "microcode: CPU%d patch does not match "
+-                      "(patch is %x, cpu extended is %x) \n",
+-                      cpu, mc_header->processor_rev_id[0],
+-                      (equiv_cpu_id & 0xff));
+-              return 0;
+-      }
+-
+-      if ((mc_header->processor_rev_id[1]) != ((equiv_cpu_id >> 16) & 0xff)) {
+-              printk(KERN_ERR "microcode: CPU%d patch does not match "
+-                      "(patch is %x, cpu base id is %x) \n",
+-                      cpu, mc_header->processor_rev_id[1],
+-                      ((equiv_cpu_id >> 16) & 0xff));
+-
++      if (mc_header->processor_rev_id != equiv_cpu_id) {
++              printk(KERN_ERR "microcode: CPU%d patch does not match "
++                     "(processor_rev_id: %x, eqiv_cpu_id: %x)\n",
++                     cpu, mc_header->processor_rev_id, equiv_cpu_id);
+               return 0;
+       }