From: Greg Kroah-Hartman Date: Wed, 1 Aug 2012 22:41:21 +0000 (-0700) Subject: 3.4-stable patches X-Git-Tag: v3.5.1~25 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9ccbece783cdea1bd0ceb3ade2975e2f3ffd6bbe;p=thirdparty%2Fkernel%2Fstable-queue.git 3.4-stable patches added patches: acpi-ac-prevent-oops-on-some-boxes-due-to-missing-check-power_supply_register-return-value-check.patch acpi-apei-fixup-common-access-width-firmware-bug.patch btrfs-call-the-ordered-free-operation-without-any-locks-held.patch cifs-reinstate-sec-ntlmv2-mount-option.patch qeth-repair-crash-in-qeth_l3_vlan_rx_kill_vid.patch spi-pl022-disable-port-when-unused.patch tg3-add-device-id-of-apple-thunderbolt-ethernet-device.patch tg3-fix-read-dma-workaround-for-5719-a0.patch --- diff --git a/queue-3.4/acpi-ac-prevent-oops-on-some-boxes-due-to-missing-check-power_supply_register-return-value-check.patch b/queue-3.4/acpi-ac-prevent-oops-on-some-boxes-due-to-missing-check-power_supply_register-return-value-check.patch new file mode 100644 index 00000000000..573644fed82 --- /dev/null +++ b/queue-3.4/acpi-ac-prevent-oops-on-some-boxes-due-to-missing-check-power_supply_register-return-value-check.patch @@ -0,0 +1,42 @@ +From f197ac13f6eeb351b31250b9ab7d0da17434ea36 Mon Sep 17 00:00:00 2001 +From: Lan Tianyu +Date: Fri, 20 Jul 2012 13:29:16 +0800 +Subject: ACPI/AC: prevent OOPS on some boxes due to missing check power_supply_register() return value check + +From: Lan Tianyu + +commit f197ac13f6eeb351b31250b9ab7d0da17434ea36 upstream. + +In the ac.c, power_supply_register()'s return value is not checked. + +As a result, the driver's add() ops may return success +even though the device failed to initialize. + +For example, some BIOS may describe two ACADs in the same DSDT. +The second ACAD device will fail to register, +but ACPI driver's add() ops returns sucessfully. +The ACPI device will receive ACPI notification and cause OOPS. + +https://bugzilla.redhat.com/show_bug.cgi?id=772730 + +Signed-off-by: Lan Tianyu +Signed-off-by: Len Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/ac.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/drivers/acpi/ac.c ++++ b/drivers/acpi/ac.c +@@ -292,7 +292,9 @@ static int acpi_ac_add(struct acpi_devic + ac->charger.properties = ac_props; + ac->charger.num_properties = ARRAY_SIZE(ac_props); + ac->charger.get_property = get_ac_property; +- power_supply_register(&ac->device->dev, &ac->charger); ++ result = power_supply_register(&ac->device->dev, &ac->charger); ++ if (result) ++ goto end; + + printk(KERN_INFO PREFIX "%s [%s] (%s)\n", + acpi_device_name(device), acpi_device_bid(device), diff --git a/queue-3.4/acpi-apei-fixup-common-access-width-firmware-bug.patch b/queue-3.4/acpi-apei-fixup-common-access-width-firmware-bug.patch new file mode 100644 index 00000000000..cd6e381cf25 --- /dev/null +++ b/queue-3.4/acpi-apei-fixup-common-access-width-firmware-bug.patch @@ -0,0 +1,41 @@ +From f712c71f7b2b43b894d1e92e1b77385fcad8815f Mon Sep 17 00:00:00 2001 +From: Jean Delvare +Date: Tue, 12 Jun 2012 10:43:28 +0200 +Subject: ACPI, APEI: Fixup common access width firmware bug + +From: Jean Delvare + +commit f712c71f7b2b43b894d1e92e1b77385fcad8815f upstream. + +Many firmwares have a common register definition bug where 8-bit +access width is specified for a 32-bit register. Ideally this should +be fixed in the BIOS, but earlier versions of the kernel did not +complain, so fix that up silently. + +This closes kernel bug #43282: +https://bugzilla.kernel.org/show_bug.cgi?id=43282 + +Signed-off-by: Jean Delvare +Acked-by: Huang Ying +Acked-by: Gary Hade +Signed-off-by: Len Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/apei/apei-base.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/drivers/acpi/apei/apei-base.c ++++ b/drivers/acpi/apei/apei-base.c +@@ -586,6 +586,11 @@ static int apei_check_gar(struct acpi_ge + } + *access_bit_width = 1UL << (access_size_code + 2); + ++ /* Fixup common BIOS bug */ ++ if (bit_width == 32 && bit_offset == 0 && (*paddr & 0x03) == 0 && ++ *access_bit_width < 32) ++ *access_bit_width = 32; ++ + if ((bit_width + bit_offset) > *access_bit_width) { + pr_warning(FW_BUG APEI_PFX + "Invalid bit width + offset in GAR [0x%llx/%u/%u/%u/%u]\n", diff --git a/queue-3.4/btrfs-call-the-ordered-free-operation-without-any-locks-held.patch b/queue-3.4/btrfs-call-the-ordered-free-operation-without-any-locks-held.patch new file mode 100644 index 00000000000..2f248cd9384 --- /dev/null +++ b/queue-3.4/btrfs-call-the-ordered-free-operation-without-any-locks-held.patch @@ -0,0 +1,45 @@ +From e9fbcb42201c862fd6ab45c48ead4f47bb2dea9d Mon Sep 17 00:00:00 2001 +From: Chris Mason +Date: Wed, 25 Jul 2012 15:57:13 -0400 +Subject: Btrfs: call the ordered free operation without any locks held + +From: Chris Mason + +commit e9fbcb42201c862fd6ab45c48ead4f47bb2dea9d upstream. + +Each ordered operation has a free callback, and this was called with the +worker spinlock held. Josef made the free callback also call iput, +which we can't do with the spinlock. + +This drops the spinlock for the free operation and grabs it again before +moving through the rest of the list. We'll circle back around to this +and find a cleaner way that doesn't bounce the lock around so much. + +Signed-off-by: Chris Mason +Signed-off-by: Greg Kroah-Hartman + +--- + fs/btrfs/async-thread.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +--- a/fs/btrfs/async-thread.c ++++ b/fs/btrfs/async-thread.c +@@ -206,10 +206,17 @@ static noinline void run_ordered_complet + + work->ordered_func(work); + +- /* now take the lock again and call the freeing code */ ++ /* now take the lock again and drop our item from the list */ + spin_lock(&workers->order_lock); + list_del(&work->order_list); ++ spin_unlock(&workers->order_lock); ++ ++ /* ++ * we don't want to call the ordered free functions ++ * with the lock held though ++ */ + work->ordered_free(work); ++ spin_lock(&workers->order_lock); + } + + spin_unlock(&workers->order_lock); diff --git a/queue-3.4/cifs-reinstate-sec-ntlmv2-mount-option.patch b/queue-3.4/cifs-reinstate-sec-ntlmv2-mount-option.patch new file mode 100644 index 00000000000..72e14a365d6 --- /dev/null +++ b/queue-3.4/cifs-reinstate-sec-ntlmv2-mount-option.patch @@ -0,0 +1,57 @@ +From 7659624ffb550d69c87f9af9ae63e717daa874bd Mon Sep 17 00:00:00 2001 +From: Jeff Layton +Date: Mon, 23 Jul 2012 20:34:17 -0400 +Subject: cifs: reinstate sec=ntlmv2 mount option +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Jeff Layton + +commit 7659624ffb550d69c87f9af9ae63e717daa874bd upstream. + +sec=ntlmv2 as a mount option got dropped in the mount option overhaul. + +Cc: Sachin Prabhu +Reported-by: Günter Kukkukk +Signed-off-by: Jeff Layton +Signed-off-by: Steve French +Signed-off-by: Greg Kroah-Hartman + +--- + fs/cifs/connect.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +--- a/fs/cifs/connect.c ++++ b/fs/cifs/connect.c +@@ -238,8 +238,8 @@ static const match_table_t cifs_mount_op + enum { + Opt_sec_krb5, Opt_sec_krb5i, Opt_sec_krb5p, + Opt_sec_ntlmsspi, Opt_sec_ntlmssp, +- Opt_ntlm, Opt_sec_ntlmi, Opt_sec_ntlmv2i, +- Opt_sec_nontlm, Opt_sec_lanman, ++ Opt_ntlm, Opt_sec_ntlmi, Opt_sec_ntlmv2, ++ Opt_sec_ntlmv2i, Opt_sec_lanman, + Opt_sec_none, + + Opt_sec_err +@@ -253,8 +253,9 @@ static const match_table_t cifs_secflavo + { Opt_sec_ntlmssp, "ntlmssp" }, + { Opt_ntlm, "ntlm" }, + { Opt_sec_ntlmi, "ntlmi" }, ++ { Opt_sec_ntlmv2, "nontlm" }, ++ { Opt_sec_ntlmv2, "ntlmv2" }, + { Opt_sec_ntlmv2i, "ntlmv2i" }, +- { Opt_sec_nontlm, "nontlm" }, + { Opt_sec_lanman, "lanman" }, + { Opt_sec_none, "none" }, + +@@ -1163,7 +1164,7 @@ static int cifs_parse_security_flavors(c + case Opt_sec_ntlmi: + vol->secFlg |= CIFSSEC_MAY_NTLM | CIFSSEC_MUST_SIGN; + break; +- case Opt_sec_nontlm: ++ case Opt_sec_ntlmv2: + vol->secFlg |= CIFSSEC_MAY_NTLMV2; + break; + case Opt_sec_ntlmv2i: diff --git a/queue-3.4/qeth-repair-crash-in-qeth_l3_vlan_rx_kill_vid.patch b/queue-3.4/qeth-repair-crash-in-qeth_l3_vlan_rx_kill_vid.patch new file mode 100644 index 00000000000..b8ee1b96018 --- /dev/null +++ b/queue-3.4/qeth-repair-crash-in-qeth_l3_vlan_rx_kill_vid.patch @@ -0,0 +1,46 @@ +From eabfbe6230ee7363681e7a561948d362b87169f0 Mon Sep 17 00:00:00 2001 +From: Frank Blaschka +Date: Tue, 24 Jul 2012 22:34:29 +0000 +Subject: qeth: repair crash in qeth_l3_vlan_rx_kill_vid() + +From: Frank Blaschka + +commit eabfbe6230ee7363681e7a561948d362b87169f0 upstream. + +Commit efc73f4b "net: Fix memory leak - vlan_info struct" adds deletion of +VLAN 0 for devices with feature NETIF_F_HW_VLAN_FILTER. For driver +qeth these are the layer 3 devices. Usually there exists no +separate vlan net_device for VLAN 0. Thus the qeth functions +qeth_l3_free_vlan_addresses4() and qeth_l3_free_vlan_addresses6() +require an extra checking if function __vlan_find_dev_deep() +returns with a net_device. + +Signed-off-by: Ursula Braun +Signed-off-by: Frank Blaschka +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/s390/net/qeth_l3_main.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/drivers/s390/net/qeth_l3_main.c ++++ b/drivers/s390/net/qeth_l3_main.c +@@ -1818,6 +1818,8 @@ static void qeth_l3_free_vlan_addresses4 + QETH_CARD_TEXT(card, 4, "frvaddr4"); + + netdev = __vlan_find_dev_deep(card->dev, vid); ++ if (!netdev) ++ return; + in_dev = in_dev_get(netdev); + if (!in_dev) + return; +@@ -1846,6 +1848,8 @@ static void qeth_l3_free_vlan_addresses6 + QETH_CARD_TEXT(card, 4, "frvaddr6"); + + netdev = __vlan_find_dev_deep(card->dev, vid); ++ if (!netdev) ++ return; + in6_dev = in6_dev_get(netdev); + if (!in6_dev) + return; diff --git a/queue-3.4/series b/queue-3.4/series index 9783cf1e074..07e4dbddf39 100644 --- a/queue-3.4/series +++ b/queue-3.4/series @@ -45,3 +45,11 @@ udf-improve-table-length-check-to-avoid-possible-overflow.patch stable-update-references-to-older-2.6-versions-for-3.x.patch staging-zsmalloc-finish-conversion-to-a-separate-module.patch workqueue-perform-cpu-down-operations-from-low-priority-cpu_notifier.patch +acpi-apei-fixup-common-access-width-firmware-bug.patch +acpi-ac-prevent-oops-on-some-boxes-due-to-missing-check-power_supply_register-return-value-check.patch +btrfs-call-the-ordered-free-operation-without-any-locks-held.patch +cifs-reinstate-sec-ntlmv2-mount-option.patch +spi-pl022-disable-port-when-unused.patch +qeth-repair-crash-in-qeth_l3_vlan_rx_kill_vid.patch +tg3-add-device-id-of-apple-thunderbolt-ethernet-device.patch +tg3-fix-read-dma-workaround-for-5719-a0.patch diff --git a/queue-3.4/spi-pl022-disable-port-when-unused.patch b/queue-3.4/spi-pl022-disable-port-when-unused.patch new file mode 100644 index 00000000000..ba7fc9ab26d --- /dev/null +++ b/queue-3.4/spi-pl022-disable-port-when-unused.patch @@ -0,0 +1,38 @@ +From fd316941cfee1fbd12746afea83720fb7823888a Mon Sep 17 00:00:00 2001 +From: Virupax Sadashivpetimath +Date: Tue, 12 Jun 2012 15:10:58 +0200 +Subject: spi/pl022: disable port when unused + +From: Virupax Sadashivpetimath + +commit fd316941cfee1fbd12746afea83720fb7823888a upstream. + +Commit ffbbdd21329f3e15eeca6df2d4bc11c04d9d91c0 +"spi: create a message queueing infrastructure" +Accidentally deleted the logic to disable the port +when unused leading to higher power consumption. +Fix this up. + +Cc: Vinit Shenoy +Signed-off-by: Virupax Sadashivpetimath +Signed-off-by: Linus Walleij +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/spi/spi-pl022.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/drivers/spi/spi-pl022.c ++++ b/drivers/spi/spi-pl022.c +@@ -489,6 +489,11 @@ static void giveback(struct pl022 *pl022 + pl022->cur_transfer = NULL; + pl022->cur_chip = NULL; + spi_finalize_current_message(pl022->master); ++ ++ /* disable the SPI/SSP operation */ ++ writew((readw(SSP_CR1(pl022->virtbase)) & ++ (~SSP_CR1_MASK_SSE)), SSP_CR1(pl022->virtbase)); ++ + } + + /** diff --git a/queue-3.4/tg3-add-device-id-of-apple-thunderbolt-ethernet-device.patch b/queue-3.4/tg3-add-device-id-of-apple-thunderbolt-ethernet-device.patch new file mode 100644 index 00000000000..a03d6ee1a2a --- /dev/null +++ b/queue-3.4/tg3-add-device-id-of-apple-thunderbolt-ethernet-device.patch @@ -0,0 +1,31 @@ +From 02eca3f5f5e458c3a5d7b772bc8042ee2a4ebedf Mon Sep 17 00:00:00 2001 +From: Greg KH +Date: Thu, 12 Jul 2012 15:39:44 +0000 +Subject: tg3: add device id of Apple Thunderbolt Ethernet device + +From: Greg KH + +commit 02eca3f5f5e458c3a5d7b772bc8042ee2a4ebedf upstream. + +The Apple Thunderbolt ethernet device is already listed in the driver, +but not hooked up in the MODULE_DEVICE_TABLE(). This fixes that and +allows it to work properly. + +Signed-off-by: Greg Kroah-Hartman +Acked-by: Michael Chan +Signed-off-by: David S. Miller + +--- + drivers/net/ethernet/broadcom/tg3.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/net/ethernet/broadcom/tg3.c ++++ b/drivers/net/ethernet/broadcom/tg3.c +@@ -298,6 +298,7 @@ static DEFINE_PCI_DEVICE_TABLE(tg3_pci_t + {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57795)}, + {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_5719)}, + {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_5720)}, ++ {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57762)}, + {PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, PCI_DEVICE_ID_SYSKONNECT_9DXX)}, + {PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, PCI_DEVICE_ID_SYSKONNECT_9MXX)}, + {PCI_DEVICE(PCI_VENDOR_ID_ALTIMA, PCI_DEVICE_ID_ALTIMA_AC1000)}, diff --git a/queue-3.4/tg3-fix-read-dma-workaround-for-5719-a0.patch b/queue-3.4/tg3-fix-read-dma-workaround-for-5719-a0.patch new file mode 100644 index 00000000000..4c3b608d75b --- /dev/null +++ b/queue-3.4/tg3-fix-read-dma-workaround-for-5719-a0.patch @@ -0,0 +1,31 @@ +From 10ce95d6ef36c65df7dcd3b8fcf86913f8b298bd Mon Sep 17 00:00:00 2001 +From: Michael Chan +Date: Sun, 29 Jul 2012 19:15:42 +0000 +Subject: tg3: Fix Read DMA workaround for 5719 A0. + +From: Michael Chan + +commit 10ce95d6ef36c65df7dcd3b8fcf86913f8b298bd upstream. + +The workaround was mis-applied to all 5719 and 5720 chips. + +Signed-off-by: Michael Chan +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/ethernet/broadcom/tg3.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/drivers/net/ethernet/broadcom/tg3.c ++++ b/drivers/net/ethernet/broadcom/tg3.c +@@ -8949,8 +8949,7 @@ static int tg3_reset_hw(struct tg3 *tp, + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57780 || + tg3_flag(tp, 57765_PLUS)) { + val = tr32(TG3_RDMA_RSRVCTRL_REG); +- if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 || +- GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) { ++ if (tp->pci_chip_rev_id == CHIPREV_ID_5719_A0) { + val &= ~(TG3_RDMA_RSRVCTRL_TXMRGN_MASK | + TG3_RDMA_RSRVCTRL_FIFO_LWM_MASK | + TG3_RDMA_RSRVCTRL_FIFO_HWM_MASK);