From c190ff9a583443f6580e5a1d09817fdbee021563 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 13 Feb 2009 15:56:01 -0800 Subject: [PATCH] more .28 patches --- ...ng-terminator-in-slave-dig-out-array.patch | 31 +++++++++ ...v-fix-initial-value-for-input-hwport.patch | 41 +++++++++++ ...escriptor-fixup-for-ms-1028-receiver.patch | 56 +++++++++++++++ .../ide-libata-fix-ata_id_is_cfa.patch | 49 +++++++++++++ ...ibata-fix-eh-device-failure-handling.patch | 46 +++++++++++++ ...version-for-node-information-request.patch | 40 +++++++++++ ...sctp-sctp-chunk-mapping-doesn-t-work.patch | 38 +++++++++++ queue-2.6.28/series | 8 +++ ...-wrong-handling-of-equivalent-cpu-id.patch | 68 +++++++++++++++++++ 9 files changed, 377 insertions(+) create mode 100644 queue-2.6.28/alsa-hda-add-missing-terminator-in-slave-dig-out-array.patch create mode 100644 queue-2.6.28/alsa-mtpav-fix-initial-value-for-input-hwport.patch create mode 100644 queue-2.6.28/hid-adjust-report-descriptor-fixup-for-ms-1028-receiver.patch create mode 100644 queue-2.6.28/ide-libata-fix-ata_id_is_cfa.patch create mode 100644 queue-2.6.28/libata-fix-eh-device-failure-handling.patch create mode 100644 queue-2.6.28/netfilter-fix-tuple-inversion-for-node-information-request.patch create mode 100644 queue-2.6.28/netfilter-xt_sctp-sctp-chunk-mapping-doesn-t-work.patch create mode 100644 queue-2.6.28/x86-microcode_amd-fix-wrong-handling-of-equivalent-cpu-id.patch 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 index 00000000000..0cbfdd1db7d --- /dev/null +++ b/queue-2.6.28/alsa-hda-add-missing-terminator-in-slave-dig-out-array.patch @@ -0,0 +1,31 @@ +From 3a08e30de2facffe8e1a25bf4fa62cbc920fbaf6 Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Fri, 13 Feb 2009 11:37:08 +0100 +Subject: ALSA: hda - Add missing terminator in slave dig-out array + +From: Takashi Iwai + +commit 3a08e30de2facffe8e1a25bf4fa62cbc920fbaf6 upstream. + +Added the missing terminator for ad1989b_slave_dig_outs[]. + +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..e1f0d9c3b4a --- /dev/null +++ b/queue-2.6.28/alsa-mtpav-fix-initial-value-for-input-hwport.patch @@ -0,0 +1,41 @@ +From 32cf9a16f4af01573ddec1eb073111fc20a9d7d4 Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Thu, 12 Feb 2009 00:06:42 +0100 +Subject: ALSA: mtpav - Fix initial value for input hwport + +From: Takashi Iwai + +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 +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..136bc2b04a3 --- /dev/null +++ b/queue-2.6.28/hid-adjust-report-descriptor-fixup-for-ms-1028-receiver.patch @@ -0,0 +1,56 @@ +From 0fb21de0799a985d2da3da14ae5625d724256638 Mon Sep 17 00:00:00 2001 +From: Jiri Kosina +Date: Wed, 14 Jan 2009 03:03:21 +0100 +Subject: HID: adjust report descriptor fixup for MS 1028 receiver + +From: Jiri Kosina + +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 +Signed-off-by: Jiri Kosina +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..bebcb8f2645 --- /dev/null +++ b/queue-2.6.28/ide-libata-fix-ata_id_is_cfa.patch @@ -0,0 +1,49 @@ +From 2999b58b795ad81f10e34bdbbfd2742172f247e4 Mon Sep 17 00:00:00 2001 +From: Sergei Shtylyov +Date: Sun, 1 Feb 2009 20:46:39 +0400 +Subject: ide/libata: fix ata_id_is_cfa() (take 4) + +From: Sergei Shtylyov + +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 +Signed-off-by: Jeff Garzik +Cc: Chuck Ebbert +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..4ce11de1b89 --- /dev/null +++ b/queue-2.6.28/libata-fix-eh-device-failure-handling.patch @@ -0,0 +1,46 @@ +From d89293abd95bfd7dd9229087d6c30c1464c5ac83 Mon Sep 17 00:00:00 2001 +From: Tejun Heo +Date: Thu, 29 Jan 2009 20:31:29 +0900 +Subject: libata: fix EH device failure handling + +From: Tejun Heo + +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 +Signed-off-by: Jeff Garzik +Cc: Chuck Ebbert +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..28b681cafce --- /dev/null +++ b/queue-2.6.28/netfilter-fix-tuple-inversion-for-node-information-request.patch @@ -0,0 +1,40 @@ +From kaber@trash.net Fri Feb 13 15:27:29 2009 +From: Eric Leblond +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 , davem@davemloft.net +Message-ID: <20090212070734.4876.53101.sendpatchset@x2.localnet> + +From: Eric Leblond + +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 +Signed-off-by: Patrick McHardy +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..85596ca8e86 --- /dev/null +++ b/queue-2.6.28/netfilter-xt_sctp-sctp-chunk-mapping-doesn-t-work.patch @@ -0,0 +1,38 @@ +From kaber@trash.net Fri Feb 13 15:28:03 2009 +From: Qu Haoran +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 , davem@davemloft.net +Message-ID: <20090212070735.4876.81436.sendpatchset@x2.localnet> + +From: Qu Haoran + +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 +Signed-off-by: Nicolas Dichtel +Signed-off-by: Patrick McHardy +Signed-off-by: Greg Kroah-Hartman + +--- + 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: diff --git a/queue-2.6.28/series b/queue-2.6.28/series index 41b3c132d51..1d23fcd6bc9 100644 --- a/queue-2.6.28/series +++ b/queue-2.6.28/series @@ -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 index 00000000000..38f81b96bd4 --- /dev/null +++ b/queue-2.6.28/x86-microcode_amd-fix-wrong-handling-of-equivalent-cpu-id.patch @@ -0,0 +1,68 @@ +From 3c763fd77e66e55d029052da31df0abd9920cb1e Mon Sep 17 00:00:00 2001 +From: Andreas Herrmann +Date: Tue, 16 Dec 2008 19:07:47 +0100 +Subject: x86: microcode_amd: fix wrong handling of equivalent CPU id + +From: Andreas Herrmann + +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 +Signed-off-by: Ingo Molnar +Signed-off-by: Greg Kroah-Hartman + +--- + 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; + } + -- 2.47.3