From: Greg Kroah-Hartman Date: Mon, 17 Nov 2008 07:18:16 +0000 (-0800) Subject: start 2.6.27.7-rc2 review cycle X-Git-Tag: v2.6.27.7~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2a1695861beabb1f0312dc858bb701078fa792a4;p=thirdparty%2Fkernel%2Fstable-queue.git start 2.6.27.7-rc2 review cycle --- diff --git a/queue-2.6.27/acpi-avoid-empty-file-name-in-sysfs.patch b/review-2.6.27/acpi-avoid-empty-file-name-in-sysfs.patch similarity index 100% rename from queue-2.6.27/acpi-avoid-empty-file-name-in-sysfs.patch rename to review-2.6.27/acpi-avoid-empty-file-name-in-sysfs.patch diff --git a/queue-2.6.27/acpi-ec-don-t-do-transaction-from-gpe-handler-in-poll-mode.patch b/review-2.6.27/acpi-ec-don-t-do-transaction-from-gpe-handler-in-poll-mode.patch similarity index 100% rename from queue-2.6.27/acpi-ec-don-t-do-transaction-from-gpe-handler-in-poll-mode.patch rename to review-2.6.27/acpi-ec-don-t-do-transaction-from-gpe-handler-in-poll-mode.patch diff --git a/queue-2.6.27/acpi-ec-lower-interrupt-storm-treshold.patch b/review-2.6.27/acpi-ec-lower-interrupt-storm-treshold.patch similarity index 100% rename from queue-2.6.27/acpi-ec-lower-interrupt-storm-treshold.patch rename to review-2.6.27/acpi-ec-lower-interrupt-storm-treshold.patch diff --git a/queue-2.6.27/acpi-ec-make-kernel-messages-more-useful-when-gpe-storm-is-detected.patch b/review-2.6.27/acpi-ec-make-kernel-messages-more-useful-when-gpe-storm-is-detected.patch similarity index 100% rename from queue-2.6.27/acpi-ec-make-kernel-messages-more-useful-when-gpe-storm-is-detected.patch rename to review-2.6.27/acpi-ec-make-kernel-messages-more-useful-when-gpe-storm-is-detected.patch diff --git a/queue-2.6.27/acpi-ec-restart-failed-command.patch b/review-2.6.27/acpi-ec-restart-failed-command.patch similarity index 100% rename from queue-2.6.27/acpi-ec-restart-failed-command.patch rename to review-2.6.27/acpi-ec-restart-failed-command.patch diff --git a/queue-2.6.27/acpi-ec-revert-msleep-patch.patch b/review-2.6.27/acpi-ec-revert-msleep-patch.patch similarity index 100% rename from queue-2.6.27/acpi-ec-revert-msleep-patch.patch rename to review-2.6.27/acpi-ec-revert-msleep-patch.patch diff --git a/queue-2.6.27/acpi-ec-wait-for-last-write-gpe.patch b/review-2.6.27/acpi-ec-wait-for-last-write-gpe.patch similarity index 100% rename from queue-2.6.27/acpi-ec-wait-for-last-write-gpe.patch rename to review-2.6.27/acpi-ec-wait-for-last-write-gpe.patch diff --git a/queue-2.6.27/acpi-load-device-driver-according-to-the-status-of-acpi-device.patch b/review-2.6.27/acpi-load-device-driver-according-to-the-status-of-acpi-device.patch similarity index 100% rename from queue-2.6.27/acpi-load-device-driver-according-to-the-status-of-acpi-device.patch rename to review-2.6.27/acpi-load-device-driver-according-to-the-status-of-acpi-device.patch diff --git a/queue-2.6.27/arm-5329-1-feroceon-fix-feroceon_l2_inv_range.patch b/review-2.6.27/arm-5329-1-feroceon-fix-feroceon_l2_inv_range.patch similarity index 100% rename from queue-2.6.27/arm-5329-1-feroceon-fix-feroceon_l2_inv_range.patch rename to review-2.6.27/arm-5329-1-feroceon-fix-feroceon_l2_inv_range.patch diff --git a/queue-2.6.27/ath5k-fix-reset-sequence-for-ar5212-in-general-and-rf5111-in-particular.patch b/review-2.6.27/ath5k-fix-reset-sequence-for-ar5212-in-general-and-rf5111-in-particular.patch similarity index 100% rename from queue-2.6.27/ath5k-fix-reset-sequence-for-ar5212-in-general-and-rf5111-in-particular.patch rename to review-2.6.27/ath5k-fix-reset-sequence-for-ar5212-in-general-and-rf5111-in-particular.patch diff --git a/queue-2.6.27/ath5k-fix-suspend-related-oops-on-rmmod.patch b/review-2.6.27/ath5k-fix-suspend-related-oops-on-rmmod.patch similarity index 100% rename from queue-2.6.27/ath5k-fix-suspend-related-oops-on-rmmod.patch rename to review-2.6.27/ath5k-fix-suspend-related-oops-on-rmmod.patch diff --git a/queue-2.6.27/block-fix-nr_phys_segments-miscalculation-bug.patch b/review-2.6.27/block-fix-nr_phys_segments-miscalculation-bug.patch similarity index 100% rename from queue-2.6.27/block-fix-nr_phys_segments-miscalculation-bug.patch rename to review-2.6.27/block-fix-nr_phys_segments-miscalculation-bug.patch diff --git a/queue-2.6.27/bnx2x-calling-netif_carrier_off-at-the-end-of-the-probe.patch b/review-2.6.27/bnx2x-calling-netif_carrier_off-at-the-end-of-the-probe.patch similarity index 100% rename from queue-2.6.27/bnx2x-calling-netif_carrier_off-at-the-end-of-the-probe.patch rename to review-2.6.27/bnx2x-calling-netif_carrier_off-at-the-end-of-the-probe.patch diff --git a/queue-2.6.27/bnx2x-pci-configuration-bug-on-big-endian.patch b/review-2.6.27/bnx2x-pci-configuration-bug-on-big-endian.patch similarity index 100% rename from queue-2.6.27/bnx2x-pci-configuration-bug-on-big-endian.patch rename to review-2.6.27/bnx2x-pci-configuration-bug-on-big-endian.patch diff --git a/queue-2.6.27/bnx2x-removing-the-pmf-indication-when-unloading.patch b/review-2.6.27/bnx2x-removing-the-pmf-indication-when-unloading.patch similarity index 100% rename from queue-2.6.27/bnx2x-removing-the-pmf-indication-when-unloading.patch rename to review-2.6.27/bnx2x-removing-the-pmf-indication-when-unloading.patch diff --git a/queue-2.6.27/dm-raid1-flush-workqueue-before-destruction.patch b/review-2.6.27/dm-raid1-flush-workqueue-before-destruction.patch similarity index 100% rename from queue-2.6.27/dm-raid1-flush-workqueue-before-destruction.patch rename to review-2.6.27/dm-raid1-flush-workqueue-before-destruction.patch diff --git a/queue-2.6.27/fix-broken-ownership-of-proc-sys-files.patch b/review-2.6.27/fix-broken-ownership-of-proc-sys-files.patch similarity index 100% rename from queue-2.6.27/fix-broken-ownership-of-proc-sys-files.patch rename to review-2.6.27/fix-broken-ownership-of-proc-sys-files.patch diff --git a/queue-2.6.27/fix-platform-drivers-that-crash-on-suspend-resume.patch b/review-2.6.27/fix-platform-drivers-that-crash-on-suspend-resume.patch similarity index 100% rename from queue-2.6.27/fix-platform-drivers-that-crash-on-suspend-resume.patch rename to review-2.6.27/fix-platform-drivers-that-crash-on-suspend-resume.patch diff --git a/queue-2.6.27/hostap-pad-the-skb-cb-usage-in-lieu-of-a-proper-fix.patch b/review-2.6.27/hostap-pad-the-skb-cb-usage-in-lieu-of-a-proper-fix.patch similarity index 100% rename from queue-2.6.27/hostap-pad-the-skb-cb-usage-in-lieu-of-a-proper-fix.patch rename to review-2.6.27/hostap-pad-the-skb-cb-usage-in-lieu-of-a-proper-fix.patch diff --git a/queue-2.6.27/hugetlb-make-unmap_ref_private-multi-size-aware.patch b/review-2.6.27/hugetlb-make-unmap_ref_private-multi-size-aware.patch similarity index 100% rename from queue-2.6.27/hugetlb-make-unmap_ref_private-multi-size-aware.patch rename to review-2.6.27/hugetlb-make-unmap_ref_private-multi-size-aware.patch diff --git a/queue-2.6.27/input-alps-add-signature-for-dualpoint-found-in-dell-latitude-e6500.patch b/review-2.6.27/input-alps-add-signature-for-dualpoint-found-in-dell-latitude-e6500.patch similarity index 100% rename from queue-2.6.27/input-alps-add-signature-for-dualpoint-found-in-dell-latitude-e6500.patch rename to review-2.6.27/input-alps-add-signature-for-dualpoint-found-in-dell-latitude-e6500.patch diff --git a/queue-2.6.27/iwlagn-avoid-sleep-in-softirq-context.patch b/review-2.6.27/iwlagn-avoid-sleep-in-softirq-context.patch similarity index 100% rename from queue-2.6.27/iwlagn-avoid-sleep-in-softirq-context.patch rename to review-2.6.27/iwlagn-avoid-sleep-in-softirq-context.patch diff --git a/queue-2.6.27/kbuild-fixup-deb-pkg-target-to-generate-separate-firmware-deb.patch b/review-2.6.27/kbuild-fixup-deb-pkg-target-to-generate-separate-firmware-deb.patch similarity index 100% rename from queue-2.6.27/kbuild-fixup-deb-pkg-target-to-generate-separate-firmware-deb.patch rename to review-2.6.27/kbuild-fixup-deb-pkg-target-to-generate-separate-firmware-deb.patch diff --git a/queue-2.6.27/m68k-fix-off-by-one-in-m68k_setup_user_interrupt.patch b/review-2.6.27/m68k-fix-off-by-one-in-m68k_setup_user_interrupt.patch similarity index 100% rename from queue-2.6.27/m68k-fix-off-by-one-in-m68k_setup_user_interrupt.patch rename to review-2.6.27/m68k-fix-off-by-one-in-m68k_setup_user_interrupt.patch diff --git a/review-2.6.27/mbox b/review-2.6.27/mbox new file mode 100644 index 00000000000..ecb95a2dfad --- /dev/null +++ b/review-2.6.27/mbox @@ -0,0 +1,4966 @@ +From greg@blue.kroah.org Sun Nov 16 23:09:37 2008 +Message-Id: <20081117070937.442748273@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:22 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Kay Sievers , + Neil Brown , + Dan Williams , + Greg Kroah-Hartman +Subject: [patch 01/46] touch_mnt_namespace when the mount flags change +Content-Disposition: inline; filename=touch_mnt_namespace-when-the-mount-flags-change.patch +Content-Length: 931 +Lines: 36 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Dan Williams + +commit 0e55a7cca4b66f625d67b292f80b6a976e77c51b upstream + +Daemons that need to be launched while the rootfs is read-only can now +poll /proc/mounts to be notified when their O_RDWR requests may no +longer end in EROFS. + +Cc: Kay Sievers +Cc: Neil Brown +Signed-off-by: Dan Williams +Signed-off-by: Greg Kroah-Hartman + +--- + fs/namespace.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +--- a/fs/namespace.c ++++ b/fs/namespace.c +@@ -1553,8 +1553,13 @@ static noinline int do_remount(struct na + if (!err) + nd->path.mnt->mnt_flags = mnt_flags; + up_write(&sb->s_umount); +- if (!err) ++ if (!err) { + security_sb_post_remount(nd->path.mnt, flags, data); ++ ++ spin_lock(&vfsmount_lock); ++ touch_mnt_namespace(nd->path.mnt->mnt_ns); ++ spin_unlock(&vfsmount_lock); ++ } + return err; + } + + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:38 2008 +Message-Id: <20081117070937.826559973@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:23 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + "John W. Linville" , + Holger Macht , + Greg Kroah-Hartman +Subject: [patch 02/46] iwlagn: avoid sleep in softirq context +Content-Disposition: inline; filename=iwlagn-avoid-sleep-in-softirq-context.patch +Content-Length: 1358 +Lines: 42 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: John W. Linville + +commit 964d2777438bf7687324243d38ade538d9bbfe3c upstream. + +__ieee80211_tasklet_handler -> __ieee80211_rx -> + __ieee80211_rx_handle_packet -> ieee80211_invoke_rx_handlers -> + ieee80211_rx_h_decrypt -> ieee80211_crypto_tkip_decrypt -> + ieee80211_tkip_decrypt_data -> iwl4965_mac_update_tkip_key -> + iwl_scan_cancel_timeout -> msleep + +Ooops! + +Avoid the sleep by changing iwl_scan_cancel_timeout with +iwl_scan_cancel and simply returning on failure if the scan persists. +This will cause hardware decryption to fail and we'll handle a few more +frames with software decryption. + +Signed-off-by: John W. Linville +Cc: Holger Macht +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/iwlwifi/iwl-agn.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/iwlwifi/iwl-agn.c ++++ b/drivers/net/wireless/iwlwifi/iwl-agn.c +@@ -3275,7 +3275,11 @@ static void iwl4965_mac_update_tkip_key( + return; + } + +- iwl_scan_cancel_timeout(priv, 100); ++ if (iwl_scan_cancel(priv)) { ++ /* cancel scan failed, just live w/ bad key and rely ++ briefly on SW decryption */ ++ return; ++ } + + key_flags |= (STA_KEY_FLG_TKIP | STA_KEY_FLG_MAP_KEY_MSK); + key_flags |= cpu_to_le16(keyconf->keyidx << STA_KEY_FLG_KEYID_POS); + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:38 2008 +Message-Id: <20081117070938.031228374@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:24 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Bob Copeland , + "John W. Linville" , + Elias Oltmanns , + Greg Kroah-Hartman +Subject: [patch 03/46] ath5k: fix suspend-related oops on rmmod +Content-Disposition: inline; filename=ath5k-fix-suspend-related-oops-on-rmmod.patch +Content-Length: 6837 +Lines: 229 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Elias Oltmanns + +Cumulative patch backporting the following two commits from upstream: + +commit 8bdd5b9c6bd53add260756b6673a0545fbdbba21 upstream +Author: Bob Copeland + +Based on a patch by Elias Oltmanns, we call ath5k_init in resume even +if we didn't previously open the device. Besides starting up the +device unnecessarily, this also causes an oops on rmmod because +mac80211 will not invoke ath5k_stop and softirqs are left running after +the module has been unloaded. Add a new state bit, ATH_STAT_STARTED, +to indicate that we have been started up. + +commit bc1b32d6bdd2d6f3fbee9a7c01c9b099f11c579c upstream +Author: Elias Oltmanns + +After a s2ram / resume cycle, resetting the key cache does not work +unless it is deferred until after the hardware has been reinitialised by +a call to ath5k_hw_reset(). This fixes a regression introduced by +"ath5k: fix suspend-related oops on rmmod". + +Reported-by: Toralf Förster +Signed-off-by: Elias Oltmanns +Signed-off-by: Bob Copeland +Signed-off-by: Greg Kroah-Hartman + + +--- + drivers/net/wireless/ath5k/base.c | 67 +++++++++++++++++++------------------- + drivers/net/wireless/ath5k/base.h | 3 + + 2 files changed, 36 insertions(+), 34 deletions(-) + +--- a/drivers/net/wireless/ath5k/base.c ++++ b/drivers/net/wireless/ath5k/base.c +@@ -294,9 +294,9 @@ static inline u64 ath5k_extend_tsf(struc + } + + /* Interrupt handling */ +-static int ath5k_init(struct ath5k_softc *sc); ++static int ath5k_init(struct ath5k_softc *sc, bool is_resume); + static int ath5k_stop_locked(struct ath5k_softc *sc); +-static int ath5k_stop_hw(struct ath5k_softc *sc); ++static int ath5k_stop_hw(struct ath5k_softc *sc, bool is_suspend); + static irqreturn_t ath5k_intr(int irq, void *dev_id); + static void ath5k_tasklet_reset(unsigned long data); + +@@ -584,7 +584,7 @@ ath5k_pci_suspend(struct pci_dev *pdev, + + ath5k_led_off(sc); + +- ath5k_stop_hw(sc); ++ ath5k_stop_hw(sc, true); + + free_irq(pdev->irq, sc); + pci_save_state(pdev); +@@ -599,8 +599,7 @@ ath5k_pci_resume(struct pci_dev *pdev) + { + struct ieee80211_hw *hw = pci_get_drvdata(pdev); + struct ath5k_softc *sc = hw->priv; +- struct ath5k_hw *ah = sc->ah; +- int i, err; ++ int err; + + pci_restore_state(pdev); + +@@ -621,21 +620,11 @@ ath5k_pci_resume(struct pci_dev *pdev) + goto err_no_irq; + } + +- err = ath5k_init(sc); ++ err = ath5k_init(sc, true); + if (err) + goto err_irq; + ath5k_led_enable(sc); + +- /* +- * Reset the key cache since some parts do not +- * reset the contents on initial power up or resume. +- * +- * FIXME: This may need to be revisited when mac80211 becomes +- * aware of suspend/resume. +- */ +- for (i = 0; i < AR5K_KEYTABLE_SIZE; i++) +- ath5k_hw_reset_key(ah, i); +- + return 0; + err_irq: + free_irq(pdev->irq, sc); +@@ -657,7 +646,6 @@ ath5k_attach(struct pci_dev *pdev, struc + struct ath5k_softc *sc = hw->priv; + struct ath5k_hw *ah = sc->ah; + u8 mac[ETH_ALEN]; +- unsigned int i; + int ret; + + ATH5K_DBG(sc, ATH5K_DEBUG_ANY, "devid 0x%x\n", pdev->device); +@@ -676,13 +664,6 @@ ath5k_attach(struct pci_dev *pdev, struc + __set_bit(ATH_STAT_MRRETRY, sc->status); + + /* +- * Reset the key cache since some parts do not +- * reset the contents on initial power up. +- */ +- for (i = 0; i < AR5K_KEYTABLE_SIZE; i++) +- ath5k_hw_reset_key(ah, i); +- +- /* + * Collect the channel list. The 802.11 layer + * is resposible for filtering this list based + * on settings like the phy mode and regulatory +@@ -2197,12 +2178,18 @@ ath5k_beacon_config(struct ath5k_softc * + \********************/ + + static int +-ath5k_init(struct ath5k_softc *sc) ++ath5k_init(struct ath5k_softc *sc, bool is_resume) + { +- int ret; ++ struct ath5k_hw *ah = sc->ah; ++ int ret, i; + + mutex_lock(&sc->lock); + ++ if (is_resume && !test_bit(ATH_STAT_STARTED, sc->status)) ++ goto out_ok; ++ ++ __clear_bit(ATH_STAT_STARTED, sc->status); ++ + ATH5K_DBG(sc, ATH5K_DEBUG_RESET, "mode %d\n", sc->opmode); + + /* +@@ -2220,7 +2207,7 @@ ath5k_init(struct ath5k_softc *sc) + */ + sc->curchan = sc->hw->conf.channel; + sc->curband = &sc->sbands[sc->curchan->band]; +- ret = ath5k_hw_reset(sc->ah, sc->opmode, sc->curchan, false); ++ ret = ath5k_hw_reset(ah, sc->opmode, sc->curchan, false); + if (ret) { + ATH5K_ERR(sc, "unable to reset hardware: %d\n", ret); + goto done; +@@ -2229,7 +2216,14 @@ ath5k_init(struct ath5k_softc *sc) + * This is needed only to setup initial state + * but it's best done after a reset. + */ +- ath5k_hw_set_txpower_limit(sc->ah, 0); ++ ath5k_hw_set_txpower_limit(ah, 0); ++ ++ /* ++ * Reset the key cache since some parts do not reset the ++ * contents on initial power up or resume from suspend. ++ */ ++ for (i = 0; i < AR5K_KEYTABLE_SIZE; i++) ++ ath5k_hw_reset_key(ah, i); + + /* + * Setup the hardware after reset: the key cache +@@ -2249,13 +2243,17 @@ ath5k_init(struct ath5k_softc *sc) + AR5K_INT_RXORN | AR5K_INT_FATAL | AR5K_INT_GLOBAL | + AR5K_INT_MIB; + +- ath5k_hw_set_intr(sc->ah, sc->imask); ++ ath5k_hw_set_intr(ah, sc->imask); ++ ++ __set_bit(ATH_STAT_STARTED, sc->status); ++ + /* Set ack to be sent at low bit-rates */ +- ath5k_hw_set_ack_bitrate_high(sc->ah, false); ++ ath5k_hw_set_ack_bitrate_high(ah, false); + + mod_timer(&sc->calib_tim, round_jiffies(jiffies + + msecs_to_jiffies(ath5k_calinterval * 1000))); + ++out_ok: + ret = 0; + done: + mmiowb(); +@@ -2310,7 +2308,7 @@ ath5k_stop_locked(struct ath5k_softc *sc + * stop is preempted). + */ + static int +-ath5k_stop_hw(struct ath5k_softc *sc) ++ath5k_stop_hw(struct ath5k_softc *sc, bool is_suspend) + { + int ret; + +@@ -2341,6 +2339,9 @@ ath5k_stop_hw(struct ath5k_softc *sc) + } + } + ath5k_txbuf_free(sc, sc->bbuf); ++ if (!is_suspend) ++ __clear_bit(ATH_STAT_STARTED, sc->status); ++ + mmiowb(); + mutex_unlock(&sc->lock); + +@@ -2719,12 +2720,12 @@ err: + + static int ath5k_start(struct ieee80211_hw *hw) + { +- return ath5k_init(hw->priv); ++ return ath5k_init(hw->priv, false); + } + + static void ath5k_stop(struct ieee80211_hw *hw) + { +- ath5k_stop_hw(hw->priv); ++ ath5k_stop_hw(hw->priv, false); + } + + static int ath5k_add_interface(struct ieee80211_hw *hw, +--- a/drivers/net/wireless/ath5k/base.h ++++ b/drivers/net/wireless/ath5k/base.h +@@ -132,11 +132,12 @@ struct ath5k_softc { + size_t desc_len; /* size of TX/RX descriptors */ + u16 cachelsz; /* cache line size */ + +- DECLARE_BITMAP(status, 4); ++ DECLARE_BITMAP(status, 5); + #define ATH_STAT_INVALID 0 /* disable hardware accesses */ + #define ATH_STAT_MRRETRY 1 /* multi-rate retry support */ + #define ATH_STAT_PROMISC 2 + #define ATH_STAT_LEDSOFT 3 /* enable LED gpio status */ ++#define ATH_STAT_STARTED 4 /* opened & irqs enabled */ + + unsigned int filter_flags; /* HW flags, AR5K_RX_FILTER_* */ + unsigned int curmode; /* current phy mode */ + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:38 2008 +Message-Id: <20081117070938.239486057@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:25 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Bob Copeland , + "John W. Linville" , + Elias Oltmanns , + Greg Kroah-Hartman +Subject: [patch 04/46] ath5k: Fix reset sequence for AR5212 in general and RF5111 in particular +Content-Disposition: inline; filename=ath5k-fix-reset-sequence-for-ar5212-in-general-and-rf5111-in-particular.patch +Content-Length: 2662 +Lines: 75 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Elias Oltmanns + +commit 7d19267b8d1e12c0baebf9be96e04cddffe63f67 upstream + +Take care to handle register 0xa228 exactly as in the HAL released by +Atheros. This change is required to make ath5k work again on my system +since commit 2203d6be (ath5k: Misc hw_reset updates), thus fixing a +regression in 2.6.27 and therefore hopefully eligible for inclusion into +a stable release. + +v2: Only overwrite initial register values on later revisions of AR5212 + chips. +v3: Use standard macros to manipulate the register. + +Signed-off-by: Elias Oltmanns +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/ath5k/hw.c | 22 +++++++--------------- + drivers/net/wireless/ath5k/initvals.c | 2 ++ + 2 files changed, 9 insertions(+), 15 deletions(-) + +--- a/drivers/net/wireless/ath5k/hw.c ++++ b/drivers/net/wireless/ath5k/hw.c +@@ -826,9 +826,10 @@ int ath5k_hw_reset(struct ath5k_hw *ah, + mdelay(1); + + /* +- * Write some more initial register settings ++ * Write some more initial register settings for revised chips + */ +- if (ah->ah_version == AR5K_AR5212) { ++ if (ah->ah_version == AR5K_AR5212 && ++ ah->ah_phy_revision > 0x41) { + ath5k_hw_reg_write(ah, 0x0002a002, 0x982c); + + if (channel->hw_value == CHANNEL_G) +@@ -847,19 +848,10 @@ int ath5k_hw_reset(struct ath5k_hw *ah, + else + ath5k_hw_reg_write(ah, 0x00000000, 0x994c); + +- /* Some bits are disabled here, we know nothing about +- * register 0xa228 yet, most of the times this ends up +- * with a value 0x9b5 -haven't seen any dump with +- * a different value- */ +- /* Got this from decompiling binary HAL */ +- data = ath5k_hw_reg_read(ah, 0xa228); +- data &= 0xfffffdff; +- ath5k_hw_reg_write(ah, data, 0xa228); +- +- data = ath5k_hw_reg_read(ah, 0xa228); +- data &= 0xfffe03ff; +- ath5k_hw_reg_write(ah, data, 0xa228); +- data = 0; ++ /* Got this from legacy-hal */ ++ AR5K_REG_DISABLE_BITS(ah, 0xa228, 0x200); ++ ++ AR5K_REG_MASKED_BITS(ah, 0xa228, 2 << 10, ~0x1fc00); + + /* Just write 0x9b5 ? */ + /* ath5k_hw_reg_write(ah, 0x000009b5, 0xa228); */ +--- a/drivers/net/wireless/ath5k/initvals.c ++++ b/drivers/net/wireless/ath5k/initvals.c +@@ -810,6 +810,8 @@ static const struct ath5k_ini_mode ar521 + { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, + { AR5K_PHY(642), + { 0xd03e6788, 0xd03e6788, 0xd03e6788, 0xd03e6788, 0xd03e6788 } }, ++ { 0xa228, ++ { 0x000001b5, 0x000001b5, 0x000001b5, 0x000001b5, 0x000001b5 } }, + { 0xa23c, + { 0x13c889af, 0x13c889af, 0x13c889af, 0x13c889af, 0x13c889af } }, + }; + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:38 2008 +Message-Id: <20081117070938.444939753@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:26 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Eilon Greenstein , + "David S. Miller" , + Alex Chiang , + Greg Kroah-Hartman +Subject: [patch 05/46] bnx2x: Removing the PMF indication when unloading +Content-Disposition: inline; filename=bnx2x-removing-the-pmf-indication-when-unloading.patch +Content-Length: 1144 +Lines: 38 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Eilon Greenstein + +commit 9a0354405feb0f8bd460349a93db05e4cca8d166 upstream. + +When the PMF flag is set, the driver can access the HW freely. When the +driver is unloaded, it should not access the HW. The problem caused fatal +errors when "ethtool -i" was called after the calling instance was unloaded +and another instance was already loaded + +Signed-off-by: Eilon Greenstein +Signed-off-by: David S. Miller +Cc: Alex Chiang +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/bnx2x_main.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/net/bnx2x_main.c ++++ b/drivers/net/bnx2x_main.c +@@ -6480,6 +6480,7 @@ load_int_disable: + bnx2x_free_irq(bp); + load_error: + bnx2x_free_mem(bp); ++ bp->port.pmf = 0; + + /* TBD we really need to reset the chip + if we want to recover from this */ +@@ -6790,6 +6791,7 @@ unload_error: + /* Report UNLOAD_DONE to MCP */ + if (!BP_NOMCP(bp)) + bnx2x_fw_command(bp, DRV_MSG_CODE_UNLOAD_DONE); ++ bp->port.pmf = 0; + + /* Free SKBs, SGEs, TPA pool and driver internals */ + bnx2x_free_skbs(bp); + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:39 2008 +Message-Id: <20081117070938.840687886@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:27 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Eilon Greenstein , + "David S. Miller" , + Alex Chiang , + Greg Kroah-Hartman +Subject: [patch 06/46] bnx2x: PCI configuration bug on big-endian +Content-Disposition: inline; filename=bnx2x-pci-configuration-bug-on-big-endian.patch +Content-Length: 1460 +Lines: 42 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Eilon Greenstein + +commit 7d96567ac0527703cf1b80043fc0ebd7f21a10ad upstream. + +The current code read nothing but zeros on big-endian (wrong part of the +32bits). This caused poor performance on big-endian machines. Though this +issue did not cause the system to crash, the performance is significantly +better with the fix so I view it as critical bug fix. + +Signed-off-by: Eilon Greenstein +Signed-off-by: David S. Miller +Cc: Alex Chiang +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/bnx2x_init.h | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +--- a/drivers/net/bnx2x_init.h ++++ b/drivers/net/bnx2x_init.h +@@ -564,14 +564,15 @@ static const struct arb_line write_arb_a + + static void bnx2x_init_pxp(struct bnx2x *bp) + { ++ u16 devctl; + int r_order, w_order; + u32 val, i; + + pci_read_config_word(bp->pdev, +- bp->pcie_cap + PCI_EXP_DEVCTL, (u16 *)&val); +- DP(NETIF_MSG_HW, "read 0x%x from devctl\n", (u16)val); +- w_order = ((val & PCI_EXP_DEVCTL_PAYLOAD) >> 5); +- r_order = ((val & PCI_EXP_DEVCTL_READRQ) >> 12); ++ bp->pcie_cap + PCI_EXP_DEVCTL, &devctl); ++ DP(NETIF_MSG_HW, "read 0x%x from devctl\n", devctl); ++ w_order = ((devctl & PCI_EXP_DEVCTL_PAYLOAD) >> 5); ++ r_order = ((devctl & PCI_EXP_DEVCTL_READRQ) >> 12); + + if (r_order > MAX_RD_ORD) { + DP(NETIF_MSG_HW, "read order of %d order adjusted to %d\n", + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:39 2008 +Message-Id: <20081117070939.104067799@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:28 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Eilon Greenstein , + "David S. Miller" , + Alex Chiang , + Greg Kroah-Hartman +Subject: [patch 07/46] bnx2x: Calling netif_carrier_off at the end of the probe +Content-Disposition: inline; filename=bnx2x-calling-netif_carrier_off-at-the-end-of-the-probe.patch +Content-Length: 1084 +Lines: 39 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Eilon Greenstein + +commit 12b56ea89e70d4b04f2f5199750310e82894ebbd upstream. + +netif_carrier_off was called too early at the probe. In case of failure +or simply bad timing, this can cause a fatal error since linkwatch_event +might run too soon. + +Signed-off-by: Eilon Greenstein +Signed-off-by: David S. Miller +Cc: Alex Chiang +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/bnx2x_main.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/net/bnx2x_main.c ++++ b/drivers/net/bnx2x_main.c +@@ -10205,8 +10205,6 @@ static int __devinit bnx2x_init_one(stru + return -ENOMEM; + } + +- netif_carrier_off(dev); +- + bp = netdev_priv(dev); + bp->msglevel = debug; + +@@ -10230,6 +10228,8 @@ static int __devinit bnx2x_init_one(stru + goto init_one_exit; + } + ++ netif_carrier_off(dev); ++ + bp->common.name = board_info[ent->driver_data].name; + printk(KERN_INFO "%s: %s (%c%d) PCI-E x%d %s found at mem %lx," + " IRQ %d, ", dev->name, bp->common.name, + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:39 2008 +Message-Id: <20081117070939.331166704@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:29 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Nicolas Pitre , + Russell King , + Greg Kroah-Hartman +Subject: [patch 08/46] ARM: 5329/1: Feroceon: fix feroceon_l2_inv_range +Content-Disposition: inline; filename=arm-5329-1-feroceon-fix-feroceon_l2_inv_range.patch +Content-Length: 1231 +Lines: 38 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Nicolas Pitre + +commit 72bc2b1ad62f4d2f0a51b35829093d41f55accce upstream. + +Same fix as commit c7cf72dcadb: when 'start' and 'end' are less than a +cacheline apart and 'start' is unaligned we are done after cleaning and +invalidating the first cacheline. + +Signed-off-by: Nicolas Pitre +Signed-off-by: Russell King +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/mm/cache-feroceon-l2.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/arch/arm/mm/cache-feroceon-l2.c ++++ b/arch/arm/mm/cache-feroceon-l2.c +@@ -148,7 +148,7 @@ static void feroceon_l2_inv_range(unsign + /* + * Clean and invalidate partial last cache line. + */ +- if (end & (CACHE_LINE_SIZE - 1)) { ++ if (start < end && end & (CACHE_LINE_SIZE - 1)) { + l2_clean_inv_pa(end & ~(CACHE_LINE_SIZE - 1)); + end &= ~(CACHE_LINE_SIZE - 1); + } +@@ -156,7 +156,7 @@ static void feroceon_l2_inv_range(unsign + /* + * Invalidate all full cache lines between 'start' and 'end'. + */ +- while (start != end) { ++ while (start < end) { + unsigned long range_end = calc_range_end(start, end); + l2_inv_pa_range(start, range_end - CACHE_LINE_SIZE); + start = range_end; + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:39 2008 +Message-Id: <20081117070939.662705698@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:30 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + "Darrick J. Wong" , + Corey Minyard , + Jean Delvare , + Kay Sievers , + Greg Kroah-Hartman +Subject: [patch 09/46] Fix platform drivers that crash on suspend/resume +Content-Disposition: inline; filename=fix-platform-drivers-that-crash-on-suspend-resume.patch +Content-Length: 6340 +Lines: 209 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Darrick J. Wong + +commit fe2d5ffc74a1de6a31e9fd65b65cce72d881edf7 upstream. + +It turns out that if one registers a struct platform_device, the +platform device code expects that platform_device.device->driver points +to a struct driver inside a struct platform_driver. + +This is not the case with the ipmi-si, ipmi-msghandler and ibmaem +drivers, which causes the suspend/resume hook functions to jump off into +nowhere, causing a crash. Make this assumption hold true for these +three drivers. + +Signed-off-by: Darrick J. Wong +Acked-by: Corey Minyard +Cc: Jean Delvare +Cc: Kay Sievers +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/char/ipmi/ipmi_msghandler.c | 20 +++++++++++--------- + drivers/char/ipmi/ipmi_si_intf.c | 16 +++++++++------- + drivers/hwmon/ibmaem.c | 18 ++++++++++-------- + 3 files changed, 30 insertions(+), 24 deletions(-) + +--- a/drivers/char/ipmi/ipmi_msghandler.c ++++ b/drivers/char/ipmi/ipmi_msghandler.c +@@ -422,9 +422,11 @@ struct ipmi_smi { + /** + * The driver model view of the IPMI messaging driver. + */ +-static struct device_driver ipmidriver = { +- .name = "ipmi", +- .bus = &platform_bus_type ++static struct platform_driver ipmidriver = { ++ .driver = { ++ .name = "ipmi", ++ .bus = &platform_bus_type ++ } + }; + static DEFINE_MUTEX(ipmidriver_mutex); + +@@ -2384,9 +2386,9 @@ static int ipmi_bmc_register(ipmi_smi_t + * representing the interfaced BMC already + */ + if (bmc->guid_set) +- old_bmc = ipmi_find_bmc_guid(&ipmidriver, bmc->guid); ++ old_bmc = ipmi_find_bmc_guid(&ipmidriver.driver, bmc->guid); + else +- old_bmc = ipmi_find_bmc_prod_dev_id(&ipmidriver, ++ old_bmc = ipmi_find_bmc_prod_dev_id(&ipmidriver.driver, + bmc->id.product_id, + bmc->id.device_id); + +@@ -2416,7 +2418,7 @@ static int ipmi_bmc_register(ipmi_smi_t + snprintf(name, sizeof(name), + "ipmi_bmc.%4.4x", bmc->id.product_id); + +- while (ipmi_find_bmc_prod_dev_id(&ipmidriver, ++ while (ipmi_find_bmc_prod_dev_id(&ipmidriver.driver, + bmc->id.product_id, + bmc->id.device_id)) { + if (!warn_printed) { +@@ -2446,7 +2448,7 @@ static int ipmi_bmc_register(ipmi_smi_t + " Unable to allocate platform device\n"); + return -ENOMEM; + } +- bmc->dev->dev.driver = &ipmidriver; ++ bmc->dev->dev.driver = &ipmidriver.driver; + dev_set_drvdata(&bmc->dev->dev, bmc); + kref_init(&bmc->refcount); + +@@ -4247,7 +4249,7 @@ static int ipmi_init_msghandler(void) + if (initialized) + return 0; + +- rv = driver_register(&ipmidriver); ++ rv = driver_register(&ipmidriver.driver); + if (rv) { + printk(KERN_ERR PFX "Could not register IPMI driver\n"); + return rv; +@@ -4308,7 +4310,7 @@ static __exit void cleanup_ipmi(void) + remove_proc_entry(proc_ipmi_root->name, NULL); + #endif /* CONFIG_PROC_FS */ + +- driver_unregister(&ipmidriver); ++ driver_unregister(&ipmidriver.driver); + + initialized = 0; + +--- a/drivers/char/ipmi/ipmi_si_intf.c ++++ b/drivers/char/ipmi/ipmi_si_intf.c +@@ -114,9 +114,11 @@ static char *si_to_str[] = { "kcs", "smi + + #define DEVICE_NAME "ipmi_si" + +-static struct device_driver ipmi_driver = { +- .name = DEVICE_NAME, +- .bus = &platform_bus_type ++static struct platform_driver ipmi_driver = { ++ .driver = { ++ .name = DEVICE_NAME, ++ .bus = &platform_bus_type ++ } + }; + + +@@ -2868,7 +2870,7 @@ static int try_smi_init(struct smi_info + goto out_err; + } + new_smi->dev = &new_smi->pdev->dev; +- new_smi->dev->driver = &ipmi_driver; ++ new_smi->dev->driver = &ipmi_driver.driver; + + rv = platform_device_add(new_smi->pdev); + if (rv) { +@@ -2983,7 +2985,7 @@ static __devinit int init_ipmi_si(void) + initialized = 1; + + /* Register the device drivers. */ +- rv = driver_register(&ipmi_driver); ++ rv = driver_register(&ipmi_driver.driver); + if (rv) { + printk(KERN_ERR + "init_ipmi_si: Unable to register driver: %d\n", +@@ -3052,7 +3054,7 @@ static __devinit int init_ipmi_si(void) + #ifdef CONFIG_PPC_OF + of_unregister_platform_driver(&ipmi_of_platform_driver); + #endif +- driver_unregister(&ipmi_driver); ++ driver_unregister(&ipmi_driver.driver); + printk(KERN_WARNING + "ipmi_si: Unable to find any System Interface(s)\n"); + return -ENODEV; +@@ -3151,7 +3153,7 @@ static __exit void cleanup_ipmi_si(void) + cleanup_one_si(e); + mutex_unlock(&smi_infos_lock); + +- driver_unregister(&ipmi_driver); ++ driver_unregister(&ipmi_driver.driver); + } + module_exit(cleanup_ipmi_si); + +--- a/drivers/hwmon/ibmaem.c ++++ b/drivers/hwmon/ibmaem.c +@@ -88,9 +88,11 @@ + static DEFINE_IDR(aem_idr); + static DEFINE_SPINLOCK(aem_idr_lock); + +-static struct device_driver aem_driver = { +- .name = DRVNAME, +- .bus = &platform_bus_type, ++static struct platform_driver aem_driver = { ++ .driver = { ++ .name = DRVNAME, ++ .bus = &platform_bus_type, ++ } + }; + + struct aem_ipmi_data { +@@ -583,7 +585,7 @@ static int aem_init_aem1_inst(struct aem + data->pdev = platform_device_alloc(DRVNAME, data->id); + if (!data->pdev) + goto dev_err; +- data->pdev->dev.driver = &aem_driver; ++ data->pdev->dev.driver = &aem_driver.driver; + + res = platform_device_add(data->pdev); + if (res) +@@ -716,7 +718,7 @@ static int aem_init_aem2_inst(struct aem + data->pdev = platform_device_alloc(DRVNAME, data->id); + if (!data->pdev) + goto dev_err; +- data->pdev->dev.driver = &aem_driver; ++ data->pdev->dev.driver = &aem_driver.driver; + + res = platform_device_add(data->pdev); + if (res) +@@ -1085,7 +1087,7 @@ static int __init aem_init(void) + { + int res; + +- res = driver_register(&aem_driver); ++ res = driver_register(&aem_driver.driver); + if (res) { + printk(KERN_ERR "Can't register aem driver\n"); + return res; +@@ -1097,7 +1099,7 @@ static int __init aem_init(void) + return 0; + + ipmi_reg_err: +- driver_unregister(&aem_driver); ++ driver_unregister(&aem_driver.driver); + return res; + + } +@@ -1107,7 +1109,7 @@ static void __exit aem_exit(void) + struct aem_data *p1, *next1; + + ipmi_smi_watcher_unregister(&driver_data.bmc_events); +- driver_unregister(&aem_driver); ++ driver_unregister(&aem_driver.driver); + list_for_each_entry_safe(p1, next1, &driver_data.aem_devices, list) + aem_delete(p1); + } + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:40 2008 +Message-Id: <20081117070939.925272100@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:31 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Johannes Berg , + "John W. Linville" , + Greg Kroah-Hartman +Subject: [patch 10/46] hostap: pad the skb->cb usage in lieu of a proper fix +Content-Disposition: inline; filename=hostap-pad-the-skb-cb-usage-in-lieu-of-a-proper-fix.patch +Content-Length: 1470 +Lines: 43 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Johannes Berg + +commit f7cd168645dda3e9067f24fabbfa787f9a237488 upstream. + +Like mac80211 did, this driver makes 'clever' use of skb->cb to pass +information along with an skb as it is requeued from the virtual device +to the physical wireless device. Unfortunately, that trick no longer +works... + +Unlike mac80211, code complexity and driver apathy makes this hack +the best option we have in the short run. Hopefully someone will +eventually be motivated to code a proper fix before all the effected +hardware dies. + +(Above text by me. Johannes officially disavows all knowledge of this +hack. -- JWL) + +Signed-off-by: Johannes Berg +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/hostap/hostap_wlan.h | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/hostap/hostap_wlan.h ++++ b/drivers/net/wireless/hostap/hostap_wlan.h +@@ -918,9 +918,12 @@ struct hostap_interface { + + /* + * TX meta data - stored in skb->cb buffer, so this must not be increased over +- * the 40-byte limit ++ * the 48-byte limit. ++ * THE PADDING THIS STARTS WITH IS A HORRIBLE HACK THAT SHOULD NOT LIVE ++ * TO SEE THE DAY. + */ + struct hostap_skb_tx_data { ++ unsigned int __padding_for_default_qdiscs; + u32 magic; /* HOSTAP_SKB_TX_DATA_MAGIC */ + u8 rate; /* transmit rate */ + #define HOSTAP_TX_FLAGS_WDS BIT(0) + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:40 2008 +Message-Id: <20081117070940.133944152@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:32 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Zhang Rui , + Len Brown , + Greg Kroah-Hartman +Subject: [patch 11/46] ACPI: avoid empty file name in sysfs +Content-Disposition: inline; filename=acpi-avoid-empty-file-name-in-sysfs.patch +Content-Length: 2515 +Lines: 74 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Peter Gruber + +commit 4feba70a2c1a1a0c96909f657f48b2e11e682370 upstream. + +Since commit bc45b1d39a925b56796bebf8a397a0491489d85c acpi tables are +allowed to have an empty signature and /sys/firmware/acpi/tables uses the +signature as filename. Applications using naive recursion through /sys +loop forever. A possible solution would be: (replacing the zero length +filename with the string "NULL") + +http://bugzilla.kernel.org/show_bug.cgi?id=11539 + +Acked-by: Zhang Rui +Signed-off-by: Andrew Morton +Signed-off-by: Len Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/system.c | 25 +++++++++++++++++-------- + 1 file changed, 17 insertions(+), 8 deletions(-) + +--- a/drivers/acpi/system.c ++++ b/drivers/acpi/system.c +@@ -78,9 +78,15 @@ static ssize_t acpi_table_show(struct ko + container_of(bin_attr, struct acpi_table_attr, attr); + struct acpi_table_header *table_header = NULL; + acpi_status status; ++ char name[ACPI_NAME_SIZE]; ++ ++ if (strncmp(table_attr->name, "NULL", 4)) ++ memcpy(name, table_attr->name, ACPI_NAME_SIZE); ++ else ++ memcpy(name, "\0\0\0\0", 4); + + status = +- acpi_get_table(table_attr->name, table_attr->instance, ++ acpi_get_table(name, table_attr->instance, + &table_header); + if (ACPI_FAILURE(status)) + return -ENODEV; +@@ -95,21 +101,24 @@ static void acpi_table_attr_init(struct + struct acpi_table_header *header = NULL; + struct acpi_table_attr *attr = NULL; + +- memcpy(table_attr->name, table_header->signature, ACPI_NAME_SIZE); ++ if (table_header->signature[0] != '\0') ++ memcpy(table_attr->name, table_header->signature, ++ ACPI_NAME_SIZE); ++ else ++ memcpy(table_attr->name, "NULL", 4); + + list_for_each_entry(attr, &acpi_table_attr_list, node) { +- if (!memcmp(table_header->signature, attr->name, +- ACPI_NAME_SIZE)) ++ if (!memcmp(table_attr->name, attr->name, ACPI_NAME_SIZE)) + if (table_attr->instance < attr->instance) + table_attr->instance = attr->instance; + } + table_attr->instance++; + + if (table_attr->instance > 1 || (table_attr->instance == 1 && +- !acpi_get_table(table_header-> +- signature, 2, +- &header))) +- sprintf(table_attr->name + 4, "%d", table_attr->instance); ++ !acpi_get_table ++ (table_header->signature, 2, &header))) ++ sprintf(table_attr->name + ACPI_NAME_SIZE, "%d", ++ table_attr->instance); + + table_attr->attr.size = 0; + table_attr->attr.read = acpi_table_show; + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:40 2008 +Message-Id: <20081117070940.362969349@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:33 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Alan Jenkins , + Alexey Starikovskiy , + Len Brown , + "Rafael J. Wysocki" , + Greg Kroah-Hartman +Subject: [patch 12/46] ACPI: EC: make kernel messages more useful when GPE storm is detected +Content-Disposition: inline; filename=acpi-ec-make-kernel-messages-more-useful-when-gpe-storm-is-detected.patch +Content-Length: 1871 +Lines: 53 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Alan Jenkins + +commit f8248434e6a11d7cd314281be3b39bbcf82fc243 upstream. + +Make sure we can tell if the GPE storm workaround gets activated, +and avoid flooding the logs afterwards. + +http://bugzilla.kernel.org/show_bug.cgi?id=11841 +"plenty of line "ACPI: EC: non-query interrupt received, + switching to interrupt mode" in dmesg" + +Signed-off-by: Alan Jenkins +Acked-by: Alexey Starikovskiy +Signed-off-by: Len Brown +Cc: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/ec.c | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +--- a/drivers/acpi/ec.c ++++ b/drivers/acpi/ec.c +@@ -286,7 +286,8 @@ static int acpi_ec_transaction_unlocked( + acpi_enable_gpe(NULL, ec->gpe, ACPI_NOT_ISR); + } else if (test_bit(EC_FLAGS_GPE_MODE, &ec->flags) && + t->irq_count > ACPI_EC_STORM_THRESHOLD) { +- pr_debug(PREFIX "GPE storm detected\n"); ++ pr_info(PREFIX "GPE storm detected, " ++ "transactions will use polling mode\n"); + set_bit(EC_FLAGS_GPE_STORM, &ec->flags); + } + return ret; +@@ -566,9 +567,15 @@ static u32 acpi_ec_gpe_handler(void *dat + if (!test_bit(EC_FLAGS_GPE_MODE, &ec->flags) && + !test_bit(EC_FLAGS_NO_GPE, &ec->flags)) { + /* this is non-query, must be confirmation */ +- if (printk_ratelimit()) +- pr_info(PREFIX "non-query interrupt received," ++ if (!test_bit(EC_FLAGS_GPE_STORM, &ec->flags)) { ++ if (printk_ratelimit()) ++ pr_info(PREFIX "non-query interrupt received," ++ " switching to interrupt mode\n"); ++ } else { ++ /* hush, STORM switches the mode every transaction */ ++ pr_debug(PREFIX "non-query interrupt received," + " switching to interrupt mode\n"); ++ } + set_bit(EC_FLAGS_GPE_MODE, &ec->flags); + } + return ACPI_INTERRUPT_HANDLED; + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:40 2008 +Message-Id: <20081117070940.714761965@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:34 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Adam Litke , + Jon Tollefson , + Mel Gorman , + Greg Kroah-Hartman +Subject: [patch 13/46] hugetlb: make unmap_ref_private multi-size-aware +Content-Disposition: inline; filename=hugetlb-make-unmap_ref_private-multi-size-aware.patch +Content-Length: 1869 +Lines: 54 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Adam Litke + +commit 7526674de0c921e7f1e9b6f71a1f9d832557b554 upstream. + +Oops. Part of the hugetlb private reservation code was not fully +converted to use hstates. + +When a huge page must be unmapped from VMAs due to a failed COW, +HPAGE_SIZE is used in the call to unmap_hugepage_range() regardless of +the page size being used. This works if the VMA is using the default +huge page size. Otherwise we might unmap too much, too little, or +trigger a BUG_ON. Rare but serious -- fix it. + +Signed-off-by: Adam Litke +Cc: Jon Tollefson +Cc: Mel Gorman +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + mm/hugetlb.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/mm/hugetlb.c ++++ b/mm/hugetlb.c +@@ -1797,6 +1797,7 @@ int unmap_ref_private(struct mm_struct * + struct page *page, + unsigned long address) + { ++ struct hstate *h = hstate_vma(vma); + struct vm_area_struct *iter_vma; + struct address_space *mapping; + struct prio_tree_iter iter; +@@ -1806,7 +1807,7 @@ int unmap_ref_private(struct mm_struct * + * vm_pgoff is in PAGE_SIZE units, hence the different calculation + * from page cache lookup which is in HPAGE_SIZE units. + */ +- address = address & huge_page_mask(hstate_vma(vma)); ++ address = address & huge_page_mask(h); + pgoff = ((address - vma->vm_start) >> PAGE_SHIFT) + + (vma->vm_pgoff >> PAGE_SHIFT); + mapping = (struct address_space *)page_private(page); +@@ -1825,7 +1826,7 @@ int unmap_ref_private(struct mm_struct * + */ + if (!is_vma_resv_set(iter_vma, HPAGE_RESV_OWNER)) + unmap_hugepage_range(iter_vma, +- address, address + HPAGE_SIZE, ++ address, address + huge_page_size(h), + page); + } + + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:41 2008 +Message-Id: <20081117070940.958734104@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:35 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Ivan Kuten , + Larry Finger , + "John W. Linville" , + Greg Kroah-Hartman +Subject: [patch 14/46] rtl8187: Add Abocom USB ID +Content-Disposition: inline; filename=rtl8187-add-abocom-usb-id.patch +Content-Length: 779 +Lines: 26 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Ivan Kuten + +commit 8f7c41d4cec91cdbfa89b4a77d5a628938875366 upstream. + +Signed-off-by: Ivan Kuten +Signed-off-by: Larry Finger +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/rtl8187_dev.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/net/wireless/rtl8187_dev.c ++++ b/drivers/net/wireless/rtl8187_dev.c +@@ -45,6 +45,8 @@ static struct usb_device_id rtl8187_tabl + {USB_DEVICE(0x03f0, 0xca02), .driver_info = DEVICE_RTL8187}, + /* Sitecom */ + {USB_DEVICE(0x0df6, 0x000d), .driver_info = DEVICE_RTL8187}, ++ /* Abocom */ ++ {USB_DEVICE(0x13d1, 0xabe6), .driver_info = DEVICE_RTL8187}, + {} + }; + + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:41 2008 +Message-Id: <20081117070941.192857296@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:36 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + "John W. Linville" , + Greg Kroah-Hartman +Subject: [patch 15/46] rtl8187 : support for Sitecom WL-168 0001 v4 +Content-Disposition: inline; filename=rtl8187-support-for-sitecom-wl-168-0001-v4.patch +Content-Length: 841 +Lines: 26 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Bob Jolliffe + +commit f3c769185a28b7947d97b3552a977102c1fac3f2 upstream. + +the Sitecom 0001 v4 with product id 0x0df6:0028, uses Realtek's +RTL8187B and work fine with new 2.6.27 driver. + +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/rtl8187_dev.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/net/wireless/rtl8187_dev.c ++++ b/drivers/net/wireless/rtl8187_dev.c +@@ -45,6 +45,7 @@ static struct usb_device_id rtl8187_tabl + {USB_DEVICE(0x03f0, 0xca02), .driver_info = DEVICE_RTL8187}, + /* Sitecom */ + {USB_DEVICE(0x0df6, 0x000d), .driver_info = DEVICE_RTL8187}, ++ {USB_DEVICE(0x0df6, 0x0028), .driver_info = DEVICE_RTL8187B}, + /* Abocom */ + {USB_DEVICE(0x13d1, 0xabe6), .driver_info = DEVICE_RTL8187}, + {} + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:41 2008 +Message-Id: <20081117070941.401574535@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:37 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Jonathan McDowell , + Frans Pop , + Sam Ravnborg , + Greg Kroah-Hartman +Subject: [patch 16/46] kbuild: Fixup deb-pkg target to generate separate firmware deb +Content-Disposition: inline; filename=kbuild-fixup-deb-pkg-target-to-generate-separate-firmware-deb.patch +Content-Length: 2200 +Lines: 75 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Jonathan McDowell + +commit bf1b36445dc868cbbde194aa1dd87e38fe24cf16 upstream. + +The below is a simplistic fix for "make deb-pkg"; it splits the +firmware out to a linux-firmware-image package and adds an +(unversioned) Suggests to the linux package for this firmware. + +Signed-Off-By: Jonathan McDowell +Acked-by: Frans Pop +Signed-off-by: Sam Ravnborg +Signed-off-by: Greg Kroah-Hartman + +--- + scripts/package/builddeb | 24 ++++++++++++++++++++++-- + 1 file changed, 22 insertions(+), 2 deletions(-) + +--- a/scripts/package/builddeb ++++ b/scripts/package/builddeb +@@ -15,15 +15,18 @@ set -e + version=$KERNELRELEASE + revision=`cat .version` + tmpdir="$objtree/debian/tmp" ++fwdir="$objtree/debian/fwtmp" + packagename=linux-$version ++fwpackagename=linux-firmware-image + + if [ "$ARCH" == "um" ] ; then + packagename=user-mode-linux-$version + fi + + # Setup the directory structure +-rm -rf "$tmpdir" ++rm -rf "$tmpdir" "$fwdir" + mkdir -p "$tmpdir/DEBIAN" "$tmpdir/lib" "$tmpdir/boot" ++mkdir -p "$fwdir/DEBIAN" "$fwdir/lib" + if [ "$ARCH" == "um" ] ; then + mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/share/doc/$packagename" "$tmpdir/usr/bin" + fi +@@ -107,6 +110,7 @@ Standards-Version: 3.6.1 + + Package: $packagename + Provides: kernel-image-$version, linux-image-$version ++Suggests: $fwpackagename + Architecture: any + Description: Linux kernel, version $version + This package contains the Linux kernel, modules and corresponding other +@@ -118,8 +122,24 @@ fi + chown -R root:root "$tmpdir" + chmod -R go-w "$tmpdir" + ++# Do we have firmware? Move it out of the way and build it into a package. ++if [ -e "$tmpdir/lib/firmware" ]; then ++ mv "$tmpdir/lib/firmware" "$fwdir/lib/" ++ ++ cat <> debian/control ++ ++Package: $fwpackagename ++Architecture: all ++Description: Linux kernel firmware, version $version ++ This package contains firmware from the Linux kernel, version $version ++EOF ++ ++ dpkg-gencontrol -isp -p$fwpackagename -P"$fwdir" ++ dpkg --build "$fwdir" .. ++fi ++ + # Perform the final magic +-dpkg-gencontrol -isp ++dpkg-gencontrol -isp -p$packagename + dpkg --build "$tmpdir" .. + + exit 0 + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:42 2008 +Message-Id: <20081117070941.794850356@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:38 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + FUJITA Tomonori , + Jens Axboe , + Nikanth Karthikesan , + Greg Kroah-Hartman +Subject: [patch 17/46] block: fix nr_phys_segments miscalculation bug +Content-Disposition: inline; filename=block-fix-nr_phys_segments-miscalculation-bug.patch +Content-Length: 3838 +Lines: 115 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: FUJITA Tomonori + +commit 8677142710516d986d932d6f1fba7be8382c1fec upstream +backported by Nikanth Karthikesan to the 2.6.27.y tree. + +block: fix nr_phys_segments miscalculation bug + +This fixes the bug reported by Nikanth Karthikesan : + +http://lkml.org/lkml/2008/10/2/203 + +The root cause of the bug is that blk_phys_contig_segment +miscalculates q->max_segment_size. + +blk_phys_contig_segment checks: + +req->biotail->bi_size + next_req->bio->bi_size > q->max_segment_size + +But blk_recalc_rq_segments might expect that req->biotail and the +previous bio in the req are supposed be merged into one +segment. blk_recalc_rq_segments might also expect that next_req->bio +and the next bio in the next_req are supposed be merged into one +segment. In such case, we merge two requests that can't be merged +here. Later, blk_rq_map_sg gives more segments than it should. + +We need to keep track of segment size in blk_recalc_rq_segments and +use it to see if two requests can be merged. This patch implements it +in the similar way that we used to do for hw merging (virtual +merging). + +Signed-off-by: FUJITA Tomonori +Signed-off-by: Jens Axboe +Cc: Nikanth Karthikesan +Signed-off-by: Greg Kroah-Hartman + +--- + block/blk-merge.c | 19 +++++++++++++++++-- + include/linux/bio.h | 7 +++++++ + 2 files changed, 24 insertions(+), 2 deletions(-) + +--- a/block/blk-merge.c ++++ b/block/blk-merge.c +@@ -95,6 +95,9 @@ new_hw_segment: + nr_hw_segs++; + } + ++ if (nr_phys_segs == 1 && seg_size > rq->bio->bi_seg_front_size) ++ rq->bio->bi_seg_front_size = seg_size; ++ + nr_phys_segs++; + bvprv = bv; + seg_size = bv->bv_len; +@@ -106,6 +109,10 @@ new_hw_segment: + rq->bio->bi_hw_front_size = hw_seg_size; + if (hw_seg_size > rq->biotail->bi_hw_back_size) + rq->biotail->bi_hw_back_size = hw_seg_size; ++ if (nr_phys_segs == 1 && seg_size > rq->bio->bi_seg_front_size) ++ rq->bio->bi_seg_front_size = seg_size; ++ if (seg_size > rq->biotail->bi_seg_back_size) ++ rq->biotail->bi_seg_back_size = seg_size; + rq->nr_phys_segments = nr_phys_segs; + rq->nr_hw_segments = nr_hw_segs; + } +@@ -133,7 +140,8 @@ static int blk_phys_contig_segment(struc + + if (!BIOVEC_PHYS_MERGEABLE(__BVEC_END(bio), __BVEC_START(nxt))) + return 0; +- if (bio->bi_size + nxt->bi_size > q->max_segment_size) ++ if (bio->bi_seg_back_size + nxt->bi_seg_front_size > ++ q->max_segment_size) + return 0; + + /* +@@ -377,6 +385,8 @@ static int ll_merge_requests_fn(struct r + { + int total_phys_segments; + int total_hw_segments; ++ unsigned int seg_size = ++ req->biotail->bi_seg_back_size + next->bio->bi_seg_front_size; + + /* + * First check if the either of the requests are re-queued +@@ -392,8 +402,13 @@ static int ll_merge_requests_fn(struct r + return 0; + + total_phys_segments = req->nr_phys_segments + next->nr_phys_segments; +- if (blk_phys_contig_segment(q, req->biotail, next->bio)) ++ if (blk_phys_contig_segment(q, req->biotail, next->bio)) { ++ if (req->nr_phys_segments == 1) ++ req->bio->bi_seg_front_size = seg_size; ++ if (next->nr_phys_segments == 1) ++ next->biotail->bi_seg_back_size = seg_size; + total_phys_segments--; ++ } + + if (total_phys_segments > q->max_phys_segments) + return 0; +--- a/include/linux/bio.h ++++ b/include/linux/bio.h +@@ -98,6 +98,13 @@ struct bio { + unsigned int bi_size; /* residual I/O count */ + + /* ++ * To keep track of the max segment size, we account for the ++ * sizes of the first and last mergeable segments in this bio. ++ */ ++ unsigned int bi_seg_front_size; ++ unsigned int bi_seg_back_size; ++ ++ /* + * To keep track of the max hw size, we account for the + * sizes of the first and last virtually mergeable segments + * in this bio + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:42 2008 +Message-Id: <20081117070942.018196899@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:39 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Kumar Gala , + Paul Mackerras , + Greg Kroah-Hartman +Subject: [patch 18/46] powerpc/mpic: Fix regression caused by change of default IRQ affinity +Content-Disposition: inline; filename=powerpc-mpic-fix-regression-caused-by-change-of-default-irq-affinity.patch +Content-Length: 4098 +Lines: 138 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Kumar Gala + +commit 3c10c9c45e290022ca7d2aa1ad33a0b6ed767520 upstream. + +The Freescale implementation of MPIC only allows a single CPU destination +for non-IPI interrupts. We add a flag to the mpic_init to distinquish +these variants of MPIC. We pull in the irq_choose_cpu from sparc64 to +select a single CPU as the destination of the interrupt. + +This is to deal with the fact that the default smp affinity was +changed by commit 18404756765c713a0be4eb1082920c04822ce588 ("genirq: +Expose default irq affinity mask (take 3)") to be all CPUs. + +Signed-off-by: Kumar Gala +Signed-off-by: Paul Mackerras +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/include/asm/mpic.h | 2 + + arch/powerpc/platforms/85xx/mpc85xx_ds.c | 3 + + arch/powerpc/platforms/86xx/pic.c | 3 + + arch/powerpc/sysdev/mpic.c | 59 ++++++++++++++++++++++++++++--- + 4 files changed, 61 insertions(+), 6 deletions(-) + +--- a/arch/powerpc/include/asm/mpic.h ++++ b/arch/powerpc/include/asm/mpic.h +@@ -355,6 +355,8 @@ struct mpic + #define MPIC_NO_BIAS 0x00000400 + /* Ignore NIRQS as reported by FRR */ + #define MPIC_BROKEN_FRR_NIRQS 0x00000800 ++/* Destination only supports a single CPU at a time */ ++#define MPIC_SINGLE_DEST_CPU 0x00001000 + + /* MPIC HW modification ID */ + #define MPIC_REGSET_MASK 0xf0000000 +--- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c ++++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c +@@ -78,7 +78,8 @@ void __init mpc85xx_ds_pic_init(void) + + mpic = mpic_alloc(np, r.start, + MPIC_PRIMARY | MPIC_WANTS_RESET | +- MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS, ++ MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS | ++ MPIC_SINGLE_DEST_CPU, + 0, 256, " OpenPIC "); + BUG_ON(mpic == NULL); + of_node_put(np); +--- a/arch/powerpc/platforms/86xx/pic.c ++++ b/arch/powerpc/platforms/86xx/pic.c +@@ -44,7 +44,8 @@ void __init mpc86xx_init_irq(void) + + mpic = mpic_alloc(np, res.start, + MPIC_PRIMARY | MPIC_WANTS_RESET | +- MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS, ++ MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS | ++ MPIC_SINGLE_DEST_CPU, + 0, 256, " MPIC "); + of_node_put(np); + BUG_ON(mpic == NULL); +--- a/arch/powerpc/sysdev/mpic.c ++++ b/arch/powerpc/sysdev/mpic.c +@@ -563,6 +563,51 @@ static void __init mpic_scan_ht_pics(str + + #endif /* CONFIG_MPIC_U3_HT_IRQS */ + ++#ifdef CONFIG_SMP ++static int irq_choose_cpu(unsigned int virt_irq) ++{ ++ cpumask_t mask = irq_desc[virt_irq].affinity; ++ int cpuid; ++ ++ if (cpus_equal(mask, CPU_MASK_ALL)) { ++ static int irq_rover; ++ static DEFINE_SPINLOCK(irq_rover_lock); ++ unsigned long flags; ++ ++ /* Round-robin distribution... */ ++ do_round_robin: ++ spin_lock_irqsave(&irq_rover_lock, flags); ++ ++ while (!cpu_online(irq_rover)) { ++ if (++irq_rover >= NR_CPUS) ++ irq_rover = 0; ++ } ++ cpuid = irq_rover; ++ do { ++ if (++irq_rover >= NR_CPUS) ++ irq_rover = 0; ++ } while (!cpu_online(irq_rover)); ++ ++ spin_unlock_irqrestore(&irq_rover_lock, flags); ++ } else { ++ cpumask_t tmp; ++ ++ cpus_and(tmp, cpu_online_map, mask); ++ ++ if (cpus_empty(tmp)) ++ goto do_round_robin; ++ ++ cpuid = first_cpu(tmp); ++ } ++ ++ return cpuid; ++} ++#else ++static int irq_choose_cpu(unsigned int virt_irq) ++{ ++ return hard_smp_processor_id(); ++} ++#endif + + #define mpic_irq_to_hw(virq) ((unsigned int)irq_map[virq].hwirq) + +@@ -777,12 +822,18 @@ void mpic_set_affinity(unsigned int irq, + struct mpic *mpic = mpic_from_irq(irq); + unsigned int src = mpic_irq_to_hw(irq); + +- cpumask_t tmp; ++ if (mpic->flags & MPIC_SINGLE_DEST_CPU) { ++ int cpuid = irq_choose_cpu(irq); ++ ++ mpic_irq_write(src, MPIC_INFO(IRQ_DESTINATION), 1 << cpuid); ++ } else { ++ cpumask_t tmp; + +- cpus_and(tmp, cpumask, cpu_online_map); ++ cpus_and(tmp, cpumask, cpu_online_map); + +- mpic_irq_write(src, MPIC_INFO(IRQ_DESTINATION), +- mpic_physmask(cpus_addr(tmp)[0])); ++ mpic_irq_write(src, MPIC_INFO(IRQ_DESTINATION), ++ mpic_physmask(cpus_addr(tmp)[0])); ++ } + } + + static unsigned int mpic_type_to_vecpri(struct mpic *mpic, unsigned int type) + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:42 2008 +Message-Id: <20081117070942.223289446@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:40 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Elvis Pranskevichus , + Dmitry Torokhov , + Greg Kroah-Hartman +Subject: [patch 19/46] Input: ALPS - add signature for DualPoint found in Dell Latitude E6500 +Content-Disposition: inline; filename=input-alps-add-signature-for-dualpoint-found-in-dell-latitude-e6500.patch +Content-Length: 868 +Lines: 24 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Elvis Pranskevichus + +commit 0d46ed1c747edfe6476961d4d9f732ceb7a29074 upstream. + +Signed-off-by: Elvis Pranskevichus +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/input/mouse/alps.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/input/mouse/alps.c ++++ b/drivers/input/mouse/alps.c +@@ -54,6 +54,7 @@ static const struct alps_model_info alps + { { 0x20, 0x02, 0x0e }, 0xf8, 0xf8, ALPS_PASS | ALPS_DUALPOINT }, /* XXX */ + { { 0x22, 0x02, 0x0a }, 0xf8, 0xf8, ALPS_PASS | ALPS_DUALPOINT }, + { { 0x22, 0x02, 0x14 }, 0xff, 0xff, ALPS_PASS | ALPS_DUALPOINT }, /* Dell Latitude D600 */ ++ { { 0x62, 0x02, 0x14 }, 0xcf, 0xcf, ALPS_PASS | ALPS_DUALPOINT }, /* Dell Latitude E6500 */ + { { 0x73, 0x02, 0x50 }, 0xcf, 0xcf, ALPS_FW_BK_1 } /* Dell Vostro 1400 */ + }; + + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:42 2008 +Message-Id: <20081117070942.427916221@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:41 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Gerald Schaefer , + Nathan Fontenot , + Greg Kroah-Hartman +Subject: [patch 20/46] memory hotplug: fix page_zone() calculation in test_pages_isolated() +Content-Disposition: inline; filename=memory-hotplug-fix-page_zone-calculation-in-test_pages_isolated.patch +Content-Length: 1552 +Lines: 42 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Gerald Schaefer + +commit a70dcb969f64e2fa98c24f47854f20bf02ff0092 upstream. + +My last bugfix here (adding zone->lock) introduced a new problem: Using +page_zone(pfn_to_page(pfn)) to get the zone after the for() loop is wrong. + pfn will then be >= end_pfn, which may be in a different zone or not +present at all. This may lead to an addressing exception in page_zone() +or spin_lock_irqsave(). + +Now I use __first_valid_page() again after the loop to find a valid page +for page_zone(). + +Signed-off-by: Gerald Schaefer +Acked-by: Nathan Fontenot +Reviewed-by: KAMEZAWA Hiroyuki +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + mm/page_isolation.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/mm/page_isolation.c ++++ b/mm/page_isolation.c +@@ -130,10 +130,11 @@ int test_pages_isolated(unsigned long st + if (page && get_pageblock_migratetype(page) != MIGRATE_ISOLATE) + break; + } +- if (pfn < end_pfn) ++ page = __first_valid_page(start_pfn, end_pfn - start_pfn); ++ if ((pfn < end_pfn) || !page) + return -EBUSY; + /* Check all pages are free or Marked as ISOLATED */ +- zone = page_zone(pfn_to_page(pfn)); ++ zone = page_zone(page); + spin_lock_irqsave(&zone->lock, flags); + ret = __test_page_isolated_in_pageblock(start_pfn, end_pfn); + spin_unlock_irqrestore(&zone->lock, flags); + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:43 2008 +Message-Id: <20081117070942.806711012@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:42 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Hugh Dickins , + Francois Romieu , + Edward Hsu , + Jeff Garzik , + Greg Kroah-Hartman +Subject: [patch 21/46] r8169: select MII in Kconfig +Content-Disposition: inline; filename=r8169-select-mii-in-kconfig.patch +Content-Length: 807 +Lines: 29 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Francois Romieu + +commit b73724921d906d1642f9f6d054079c6b095903fe upstream. + +drivers/built-in.o: In function `rtl8169_gset_xmii': +r8169.c:(.text+0x82259): undefined reference to `mii_ethtool_gset' + +Signed-off-by: Hugh Dickins +Acked-by: Francois Romieu +Cc: Edward Hsu +Signed-off-by: Jeff Garzik +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/Kconfig | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/net/Kconfig ++++ b/drivers/net/Kconfig +@@ -2046,6 +2046,7 @@ config R8169 + tristate "Realtek 8169 gigabit ethernet support" + depends on PCI + select CRC32 ++ select MII + ---help--- + Say Y here if you have a Realtek 8169 PCI Gigabit Ethernet adapter. + + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:43 2008 +Message-Id: <20081117070943.023851389@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:43 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Adam Jackson , + Mattia Dongili , + Len Brown , + Steve Conklin , + Greg Kroah-Hartman +Subject: [patch 22/46] sony-laptop: ignore missing _DIS method on pic device +Content-Disposition: inline; filename=sony-laptop-ignore-missing-_dis-method-on-pic-device.patch +Content-Length: 1092 +Lines: 37 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Matthew Garrett + +commit 6158d3a2323835546c7cf83a170316fa77b726e0 upstream. + +At least the Vaio VGN-Z540N doesn't have this method, so let's not fail +to suspend just because it doesn't exist. + +Signed-off-by: Adam Jackson +Acked-by: Mattia Dongili +Cc: Len Brown +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Cc: Steve Conklin +Signed-off-by: Greg Kroah-Hartman + + +--- + drivers/misc/sony-laptop.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +--- a/drivers/misc/sony-laptop.c ++++ b/drivers/misc/sony-laptop.c +@@ -2315,8 +2315,10 @@ end: + */ + static int sony_pic_disable(struct acpi_device *device) + { +- if (ACPI_FAILURE(acpi_evaluate_object(device->handle, +- "_DIS", NULL, NULL))) ++ acpi_status ret = acpi_evaluate_object(device->handle, "_DIS", NULL, ++ NULL); ++ ++ if (ACPI_FAILURE(ret) && ret != AE_NOT_FOUND) + return -ENXIO; + + dprintk("Device disabled\n"); + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:43 2008 +Message-Id: <20081117070943.232981180@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:44 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Alexey Dobriyan , + Eric Dumazet , + "David S. Miller" , + Greg Kroah-Hartman +Subject: [patch 23/46] net: fix /proc/net/snmp as memory corruptor +Content-Disposition: inline; filename=net-fix-proc-net-snmp-as-memory-corruptor.patch +Content-Length: 2574 +Lines: 96 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Eric Dumazet + +commit b971e7ac834e9f4bda96d5a96ae9abccd01c1dd8 upstream. + +icmpmsg_put() can happily corrupt kernel memory, using a static +table and forgetting to reset an array index in a loop. + +Remove the static array since its not safe without proper locking. + +Signed-off-by: Alexey Dobriyan +Signed-off-by: Eric Dumazet +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + net/ipv4/proc.c | 58 ++++++++++++++++++++++++++++---------------------------- + 1 file changed, 30 insertions(+), 28 deletions(-) + +--- a/net/ipv4/proc.c ++++ b/net/ipv4/proc.c +@@ -237,43 +237,45 @@ static const struct snmp_mib snmp4_net_l + SNMP_MIB_SENTINEL + }; + ++static void icmpmsg_put_line(struct seq_file *seq, unsigned long *vals, ++ unsigned short *type, int count) ++{ ++ int j; ++ ++ if (count) { ++ seq_printf(seq, "\nIcmpMsg:"); ++ for (j = 0; j < count; ++j) ++ seq_printf(seq, " %sType%u", ++ type[j] & 0x100 ? "Out" : "In", ++ type[j] & 0xff); ++ seq_printf(seq, "\nIcmpMsg:"); ++ for (j = 0; j < count; ++j) ++ seq_printf(seq, " %lu", vals[j]); ++ } ++} ++ + static void icmpmsg_put(struct seq_file *seq) + { + #define PERLINE 16 + +- int j, i, count; +- static int out[PERLINE]; ++ int i, count; ++ unsigned short type[PERLINE]; ++ unsigned long vals[PERLINE], val; + struct net *net = seq->private; + + count = 0; + for (i = 0; i < ICMPMSG_MIB_MAX; i++) { +- +- if (snmp_fold_field((void **) net->mib.icmpmsg_statistics, i)) +- out[count++] = i; +- if (count < PERLINE) +- continue; +- +- seq_printf(seq, "\nIcmpMsg:"); +- for (j = 0; j < PERLINE; ++j) +- seq_printf(seq, " %sType%u", i & 0x100 ? "Out" : "In", +- i & 0xff); +- seq_printf(seq, "\nIcmpMsg: "); +- for (j = 0; j < PERLINE; ++j) +- seq_printf(seq, " %lu", +- snmp_fold_field((void **) net->mib.icmpmsg_statistics, +- out[j])); +- seq_putc(seq, '\n'); +- } +- if (count) { +- seq_printf(seq, "\nIcmpMsg:"); +- for (j = 0; j < count; ++j) +- seq_printf(seq, " %sType%u", out[j] & 0x100 ? "Out" : +- "In", out[j] & 0xff); +- seq_printf(seq, "\nIcmpMsg:"); +- for (j = 0; j < count; ++j) +- seq_printf(seq, " %lu", snmp_fold_field((void **) +- net->mib.icmpmsg_statistics, out[j])); ++ val = snmp_fold_field((void **) net->mib.icmpmsg_statistics, i); ++ if (val) { ++ type[count] = i; ++ vals[count++] = val; ++ } ++ if (count == PERLINE) { ++ icmpmsg_put_line(seq, vals, type, count); ++ count = 0; ++ } + } ++ icmpmsg_put_line(seq, vals, type, count); + + #undef PERLINE + } + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:43 2008 +Message-Id: <20081117070943.440358095@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:45 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Al Viro , + Greg Kroah-Hartman +Subject: [patch 24/46] Fix broken ownership of /proc/sys/ files +Content-Disposition: inline; filename=fix-broken-ownership-of-proc-sys-files.patch +Content-Length: 824 +Lines: 27 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Al Viro + +commit 5c06fe772da43db63b053addcd2c267f76d0be91 upstream. + +D'oh... + +Signed-off-by: Al Viro +Reported-and-tested-by: Peter Palfrader +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + fs/proc/proc_sysctl.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/fs/proc/proc_sysctl.c ++++ b/fs/proc/proc_sysctl.c +@@ -31,6 +31,7 @@ static struct inode *proc_sys_make_inode + inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME; + inode->i_flags |= S_PRIVATE; /* tell selinux to ignore this inode */ + inode->i_mode = table->mode; ++ inode->i_uid = inode->i_gid = 0; + if (!table->child) { + inode->i_mode |= S_IFREG; + inode->i_op = &proc_sys_inode_operations; + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:44 2008 +Message-Id: <20081117070943.824954532@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:46 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Mauro Carvalho Chehab , + Greg Kroah-Hartman +Subject: [patch 25/46] V4L/DVB (9624): CVE-2008-5033: fix OOPS on tvaudio when controlling bass/treble +Content-Disposition: inline; filename=v4l-dvb-cve-2008-5033-fix-oops-on-tvaudio-when-controlling-bass-treble.patch +Content-Length: 5047 +Lines: 128 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Mauro Carvalho Chehab + +commit 01a1a3cc1e3fbe718bd06a2a5d4d1a2d0fb4d7d9 upstream. + +This bug were supposed to be fixed by 5ba2f67afb02c5302b2898949ed6fc3b3d37dcf1, +where a call to NULL happens. + +Not all tvaudio chips allow controlling bass/treble. So, the driver +has a table with a flag to indicate if the chip does support it. + +Unfortunately, the handling of this logic were broken for a very long +time (probably since the first module version). Due to that, an OOPS +were generated for devices that don't support bass/treble. + +This were the resulting OOPS message before the patch, with debug messages +enabled: + +tvaudio' 1-005b: VIDIOC_S_CTRL +BUG: unable to handle kernel NULL pointer dereference at 00000000 +IP: [<00000000>] +*pde = 22fda067 *pte = 00000000 +Oops: 0000 [#1] SMP +Modules linked in: snd_hda_intel snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device +snd_pcm_oss snd_mixer_oss snd_pcm snd_timer snd_hwdep snd soundcore tuner_simple tuner_types tea5767 tuner +tvaudio bttv bridgebnep rfcomm l2cap bluetooth it87 hwmon_vid hwmon fuse sunrpc ipt_REJECT +nf_conntrack_ipv4 iptable_filter ip_tables ip6t_REJECT xt_tcpudp nf_conntrack_ipv6 xt_state nf_conntrack +ip6table_filter ip6_tables x_tables ipv6 dm_mirrordm_multipath dm_mod configfs videodev v4l1_compat +ir_common 8139cp compat_ioctl32 v4l2_common 8139too videobuf_dma_sg videobuf_core mii btcx_risc tveeprom +i915 button snd_page_alloc serio_raw drm pcspkr i2c_algo_bit i2c_i801 i2c_core iTCO_wdt +iTCO_vendor_support sr_mod cdrom sg ata_generic pata_acpi ata_piix libata sd_mod scsi_mod ext3 jbdmbcache +uhci_hcd ohci_hcd ehci_hcd [last unloaded: soundcore] + +Pid: 15413, comm: qv4l2 Not tainted (2.6.25.14-108.fc9.i686 #1) +EIP: 0060:[<00000000>] EFLAGS: 00210246 CPU: 0 +EIP is at 0x0 +EAX: 00008000 EBX: ebd21600 ECX: e2fd9ec4 EDX: 00200046 +ESI: f8c0f0c4 EDI: f8c0f0c4 EBP: e2fd9d50 ESP: e2fd9d2c + DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 +Process qv4l2 (pid: 15413, ti=e2fd9000 task=ebe44000 task.ti=e2fd9000) +Stack: f8c0c6ae e2ff2a00 00000d00 e2fd9ec4 ebc4e000 e2fd9d5c f8c0c448 00000000 + f899c12a e2fd9d5c f899c154 e2fd9d68 e2fd9d80 c0560185 e2fd9d88 f8f3e1d8 + f8f3e1dc ebc4e034 f8f3e18c e2fd9ec4 00000000 e2fd9d90 f899c286 c008561c +Call Trace: + [] ? chip_command+0x266/0x4b6 [tvaudio] + [] ? chip_command+0x0/0x4b6 [tvaudio] + [] ? i2c_cmd+0x0/0x2f [i2c_core] + [] ? i2c_cmd+0x2a/0x2f [i2c_core] + [] ? device_for_each_child+0x21/0x49 + [] ? i2c_clients_command+0x1c/0x1e [i2c_core] + [] ? bttv_call_i2c_clients+0x14/0x16 [bttv] + [] ? bttv_s_ctrl+0x1bc/0x313 [bttv] + [] ? bttv_s_ctrl+0x0/0x313 [bttv] + [] ? __video_do_ioctl+0x1f84/0x3726 [videodev] + [] ? sock_aio_write+0x100/0x10d + [] ? kmap_atomic_prot+0x1dd/0x1df + [] ? enqueue_hrtimer+0xc2/0xcd + [] ? copy_from_user+0x39/0x121 + [] ? __video_ioctl2+0x1aa/0x24a [videodev] + [] ? do_notify_resume+0x768/0x795 + [] ? getnstimeofday+0x34/0xd1 + [] ? autoremove_wake_function+0x0/0x33 + [] ? video_ioctl2+0xf/0x13 [videodev] + [] ? vfs_ioctl+0x50/0x69 + [] ? do_vfs_ioctl+0x239/0x24c + [] ? sys_ioctl+0x40/0x5b + [] ? syscall_call+0x7/0xb + [] ? cpuid4_cache_sysfs_exit+0x3d/0x69 + ======================= +Code: Bad EIP value. +EIP: [<00000000>] 0x0 SS:ESP 0068:e2fd9d2c + +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/media/video/tvaudio.c | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +--- a/drivers/media/video/tvaudio.c ++++ b/drivers/media/video/tvaudio.c +@@ -1576,13 +1576,13 @@ static int tvaudio_get_ctrl(struct CHIPS + return 0; + } + case V4L2_CID_AUDIO_BASS: +- if (desc->flags & CHIP_HAS_BASSTREBLE) ++ if (!(desc->flags & CHIP_HAS_BASSTREBLE)) + break; + ctrl->value = chip->bass; + return 0; + case V4L2_CID_AUDIO_TREBLE: +- if (desc->flags & CHIP_HAS_BASSTREBLE) +- return -EINVAL; ++ if (!(desc->flags & CHIP_HAS_BASSTREBLE)) ++ break; + ctrl->value = chip->treble; + return 0; + } +@@ -1642,16 +1642,15 @@ static int tvaudio_set_ctrl(struct CHIPS + return 0; + } + case V4L2_CID_AUDIO_BASS: +- if (desc->flags & CHIP_HAS_BASSTREBLE) ++ if (!(desc->flags & CHIP_HAS_BASSTREBLE)) + break; + chip->bass = ctrl->value; + chip_write(chip,desc->bassreg,desc->bassfunc(chip->bass)); + + return 0; + case V4L2_CID_AUDIO_TREBLE: +- if (desc->flags & CHIP_HAS_BASSTREBLE) +- return -EINVAL; +- ++ if (!(desc->flags & CHIP_HAS_BASSTREBLE)) ++ break; + chip->treble = ctrl->value; + chip_write(chip,desc->treblereg,desc->treblefunc(chip->treble)); + +@@ -1695,7 +1694,7 @@ static int chip_command(struct i2c_clien + break; + case V4L2_CID_AUDIO_BASS: + case V4L2_CID_AUDIO_TREBLE: +- if (desc->flags & CHIP_HAS_BASSTREBLE) ++ if (!(desc->flags & CHIP_HAS_BASSTREBLE)) + return -EINVAL; + break; + default: + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:44 2008 +Message-Id: <20081117070944.035183486@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:47 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Jens Axboe , + Heiko Carstens , + Martin Schwidefsky , + Greg Kroah-Hartman +Subject: [patch 26/46] S390: cpu topology: fix locking +Content-Disposition: inline; filename=s390-cpu-topology-fix-locking.patch +Content-Length: 2311 +Lines: 76 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Heiko Carstens + +commit 74af283102b358b0da545460d0d176f473e110f6 upstream. + +cpu_coregroup_map used to grab a mutex on s390 since it was only +called from process context. +Since c7c22e4d5c1fdebfac4dba76de7d0338c2b0d832 "block: add support +for IO CPU affinity" this is not true anymore. +It now also gets called from softirq context. + +To prevent possible deadlocks change this in architecture code and +use a spinlock instead of a mutex. + +Cc: Jens Axboe +Signed-off-by: Heiko Carstens +Signed-off-by: Martin Schwidefsky +Signed-off-by: Greg Kroah-Hartman + +--- + arch/s390/kernel/topology.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +--- a/arch/s390/kernel/topology.c ++++ b/arch/s390/kernel/topology.c +@@ -65,18 +65,21 @@ static int machine_has_topology_irq; + static struct timer_list topology_timer; + static void set_topology_timer(void); + static DECLARE_WORK(topology_work, topology_work_fn); ++/* topology_lock protects the core linked list */ ++static DEFINE_SPINLOCK(topology_lock); + + cpumask_t cpu_core_map[NR_CPUS]; + + cpumask_t cpu_coregroup_map(unsigned int cpu) + { + struct core_info *core = &core_info; ++ unsigned long flags; + cpumask_t mask; + + cpus_clear(mask); + if (!machine_has_topology) + return cpu_present_map; +- mutex_lock(&smp_cpu_state_mutex); ++ spin_lock_irqsave(&topology_lock, flags); + while (core) { + if (cpu_isset(cpu, core->mask)) { + mask = core->mask; +@@ -84,7 +87,7 @@ cpumask_t cpu_coregroup_map(unsigned int + } + core = core->next; + } +- mutex_unlock(&smp_cpu_state_mutex); ++ spin_unlock_irqrestore(&topology_lock, flags); + if (cpus_empty(mask)) + mask = cpumask_of_cpu(cpu); + return mask; +@@ -133,7 +136,7 @@ static void tl_to_cores(struct tl_info * + union tl_entry *tle, *end; + struct core_info *core = &core_info; + +- mutex_lock(&smp_cpu_state_mutex); ++ spin_lock_irq(&topology_lock); + clear_cores(); + tle = info->tle; + end = (union tl_entry *)((unsigned long)info + info->length); +@@ -157,7 +160,7 @@ static void tl_to_cores(struct tl_info * + } + tle = next_tle(tle); + } +- mutex_unlock(&smp_cpu_state_mutex); ++ spin_unlock_irq(&topology_lock); + } + + static void topology_update_polarization_simple(void) + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:44 2008 +Message-Id: <20081117070944.243835284@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:48 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Zhao Yakui , + Li Shaohua , + Zhang Rui , + Andi Kleen , + Len Brown , + Holger Macht , + Greg Kroah-Hartman +Subject: [patch 27/46] ACPI : Load device driver according to the status of acpi device +Content-Disposition: inline; filename=acpi-load-device-driver-according-to-the-status-of-acpi-device.patch +Content-Length: 5135 +Lines: 141 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Zhao Yakui + +commit 39a0ad871000d2a016a4fa113a6e53d22aabf25d upstream. + +According to ACPI spec when the status of some device is not present +but functional, the device is valid and the children of this device +should be enumerated. It means that the device should be added to +linux acpi device tree. But the device driver for this device should not +be loaded. + The detailed info can be found in the section 6.3.7 of ACPI 3.0b spec. + _STA may return bit 0 clear (not present) with bit 3 set (device is +functional). This case is used to indicate a valid device for which no +device driver should be loaded (for example, a bridge device.). +Children of this device may be present and valid. OS should continue +enumeration below a device whose _STA returns this bit combination + +http://bugzilla.kernel.org/show_bug.cgi?id=3358 + +Signed-off-by: Zhao Yakui +Signed-off-by: Li Shaohua +Signed-off-by: Zhang Rui +Signed-off-by: Andi Kleen +Signed-off-by: Len Brown +Cc: Holger Macht +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/bus.c | 16 ++++++++-------- + drivers/acpi/scan.c | 35 +++++++++++++++++++++++++---------- + drivers/pnp/pnpacpi/core.c | 6 +++++- + 3 files changed, 38 insertions(+), 19 deletions(-) + +--- a/drivers/acpi/bus.c ++++ b/drivers/acpi/bus.c +@@ -95,21 +95,21 @@ int acpi_bus_get_status(struct acpi_devi + } + + /* +- * Otherwise we assume the status of our parent (unless we don't +- * have one, in which case status is implied). ++ * According to ACPI spec some device can be present and functional ++ * even if the parent is not present but functional. ++ * In such conditions the child device should not inherit the status ++ * from the parent. + */ +- else if (device->parent) +- device->status = device->parent->status; + else + STRUCT_TO_INT(device->status) = + ACPI_STA_DEVICE_PRESENT | ACPI_STA_DEVICE_ENABLED | + ACPI_STA_DEVICE_UI | ACPI_STA_DEVICE_FUNCTIONING; + + if (device->status.functional && !device->status.present) { +- printk(KERN_WARNING PREFIX "Device [%s] status [%08x]: " +- "functional but not present; setting present\n", +- device->pnp.bus_id, (u32) STRUCT_TO_INT(device->status)); +- device->status.present = 1; ++ ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device [%s] status [%08x]: " ++ "functional but not present;\n", ++ device->pnp.bus_id, ++ (u32) STRUCT_TO_INT(device->status))); + } + + ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device [%s] status [%08x]\n", +--- a/drivers/acpi/scan.c ++++ b/drivers/acpi/scan.c +@@ -276,6 +276,13 @@ int acpi_match_device_ids(struct acpi_de + { + const struct acpi_device_id *id; + ++ /* ++ * If the device is not present, it is unnecessary to load device ++ * driver for it. ++ */ ++ if (!device->status.present) ++ return -ENODEV; ++ + if (device->flags.hardware_id) { + for (id = ids; id->id[0]; id++) { + if (!strcmp((char*)id->id, device->pnp.hardware_id)) +@@ -1221,15 +1228,18 @@ acpi_add_single_object(struct acpi_devic + result = -ENODEV; + goto end; + } +- if (!device->status.present) { +- /* Bay and dock should be handled even if absent */ +- if (!ACPI_SUCCESS( +- acpi_is_child_device(device, acpi_bay_match)) && +- !ACPI_SUCCESS( +- acpi_is_child_device(device, acpi_dock_match))) { +- result = -ENODEV; +- goto end; +- } ++ /* ++ * When the device is neither present nor functional, the ++ * device should not be added to Linux ACPI device tree. ++ * When the status of the device is not present but functinal, ++ * it should be added to Linux ACPI tree. For example : bay ++ * device , dock device. ++ * In such conditions it is unncessary to check whether it is ++ * bay device or dock device. ++ */ ++ if (!device->status.present && !device->status.functional) { ++ result = -ENODEV; ++ goto end; + } + break; + default: +@@ -1402,7 +1412,12 @@ static int acpi_bus_scan(struct acpi_dev + * TBD: Need notifications and other detection mechanisms + * in place before we can fully implement this. + */ +- if (child->status.present) { ++ /* ++ * When the device is not present but functional, it is also ++ * necessary to scan the children of this device. ++ */ ++ if (child->status.present || (!child->status.present && ++ child->status.functional)) { + status = acpi_get_next_object(ACPI_TYPE_ANY, chandle, + NULL, NULL); + if (ACPI_SUCCESS(status)) { +--- a/drivers/pnp/pnpacpi/core.c ++++ b/drivers/pnp/pnpacpi/core.c +@@ -148,9 +148,13 @@ static int __init pnpacpi_add_device(str + acpi_status status; + struct pnp_dev *dev; + ++ /* ++ * If a PnPacpi device is not present , the device ++ * driver should not be loaded. ++ */ + status = acpi_get_handle(device->handle, "_CRS", &temp); + if (ACPI_FAILURE(status) || !ispnpidacpi(acpi_device_hid(device)) || +- is_exclusive_device(device)) ++ is_exclusive_device(device) || (!device->status.present)) + return 0; + + dev = pnp_alloc_dev(&pnpacpi_protocol, num, acpi_device_hid(device)); + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:44 2008 +Message-Id: <20081117070944.450877170@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:49 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Geert Uytterhoeven , + Greg Kroah-Hartman +Subject: [patch 28/46] m68k: Fix off-by-one in m68k_setup_user_interrupt() +Content-Disposition: inline; filename=m68k-fix-off-by-one-in-m68k_setup_user_interrupt.patch +Content-Length: 1037 +Lines: 32 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Geert Uytterhoeven + +commit 27123cbc264de89ce6951b1b4c84c223eb0f1702 upstream. + +commit 69961c375288bdab7604e0bb1c8d22999bb8a347 ("[PATCH] m68k/Atari: +Interrupt updates") added a BUG_ON() with an incorrect upper bound +comparison, which causes an early crash on VME boards, where IRQ_USER is +8, cnt is 192 and NR_IRQS is 200. + +Reported-by: Stephen N Chivers +Tested-by: Kars de Jong +Signed-off-by: Geert Uytterhoeven +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + arch/m68k/kernel/ints.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/m68k/kernel/ints.c ++++ b/arch/m68k/kernel/ints.c +@@ -133,7 +133,7 @@ void __init m68k_setup_user_interrupt(un + { + int i; + +- BUG_ON(IRQ_USER + cnt >= NR_IRQS); ++ BUG_ON(IRQ_USER + cnt > NR_IRQS); + m68k_first_user_vec = vec; + for (i = 0; i < cnt; i++) + irq_controller[IRQ_USER + i] = &user_irq_controller; + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:45 2008 +Message-Id: <20081117070944.835411028@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:50 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Andrew Vasquez , + James Bottomley , + Greg Kroah-Hartman +Subject: [patch 29/46] SCSI: qla2xxx: Return a FAILED status when abort mailbox-command fails. +Content-Disposition: inline; filename=scsi-qla2xxx-return-a-failed-status-when-abort-mailbox-command-fails.patch +Content-Length: 1315 +Lines: 35 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Michael Reed + +commit 5bff55db3dc4d659f46b4d2fce2f61c1964c2762 upstream. + +Mike Reed noted +(https://bugzilla.novell.com/show_bug.cgi?id=421330) that the +driver was incorrectly returning a SUCCESS status if the driver's +request to the firmware to abort a command failed. By doing so, +the mid-layer believed, incorrectly, that the command has +completed and has been returned (ultimately clearing +scsi_cmnd.request_buffer) yet the driver still has the command. +What should correctly happen is a mid-layer escalation +(device-reset, etc.) of recovery during which the driver will +eventually return the outstanding commands to the mid-layer. + +Signed-off-by: Andrew Vasquez +Signed-off-by: James Bottomley +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/scsi/qla2xxx/qla_os.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/scsi/qla2xxx/qla_os.c ++++ b/drivers/scsi/qla2xxx/qla_os.c +@@ -730,6 +730,7 @@ qla2xxx_eh_abort(struct scsi_cmnd *cmd) + if (ha->isp_ops->abort_command(ha, sp)) { + DEBUG2(printk("%s(%ld): abort_command " + "mbx failed.\n", __func__, ha->host_no)); ++ ret = FAILED; + } else { + DEBUG3(printk("%s(%ld): abort_command " + "mbx success.\n", __func__, ha->host_no)); + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:45 2008 +Message-Id: <20081117070945.041509289@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:51 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Andrew Vasquez , + James Bottomley , + Greg Kroah-Hartman +Subject: [patch 30/46] SCSI: qla2xxx: Do not honour max_vports from firmware for 2G ISPs and below. +Content-Disposition: inline; filename=scsi-qla2xxx-do-not-honour-max_vports-from-firmware-for-2g-isps-and-below.patch +Content-Length: 1476 +Lines: 47 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Shyam Sundar + +commit 680d7db88ace53c673e1c437c9b6abcc053e8d6f upstream. + +For 23XX ISPs, max_vports may return an invalid value. +Do not honour it. + +Signed-off-by: Andrew Vasquez +Signed-off-by: James Bottomley +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/scsi/qla2xxx/qla_init.c | 2 +- + drivers/scsi/qla2xxx/qla_mbx.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/scsi/qla2xxx/qla_init.c ++++ b/drivers/scsi/qla2xxx/qla_init.c +@@ -974,7 +974,6 @@ qla2x00_setup_chip(scsi_qla_host_t *ha) + &ha->fw_minor_version, + &ha->fw_subminor_version, + &ha->fw_attributes, &ha->fw_memory_size); +- qla2x00_resize_request_q(ha); + ha->flags.npiv_supported = 0; + if ((IS_QLA24XX(ha) || IS_QLA25XX(ha) || + IS_QLA84XX(ha)) && +@@ -986,6 +985,7 @@ qla2x00_setup_chip(scsi_qla_host_t *ha) + ha->max_npiv_vports = + MIN_MULTI_ID_FABRIC - 1; + } ++ qla2x00_resize_request_q(ha); + + if (ql2xallocfwdump) + qla2x00_alloc_fw_dump(ha); +--- a/drivers/scsi/qla2xxx/qla_mbx.c ++++ b/drivers/scsi/qla2xxx/qla_mbx.c +@@ -1964,7 +1964,7 @@ qla2x00_get_resource_cnts(scsi_qla_host_ + *cur_iocb_cnt = mcp->mb[7]; + if (orig_iocb_cnt) + *orig_iocb_cnt = mcp->mb[10]; +- if (max_npiv_vports) ++ if (ha->flags.npiv_supported && max_npiv_vports) + *max_npiv_vports = mcp->mb[11]; + } + + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:45 2008 +Message-Id: <20081117070945.249955195@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:52 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Lalit Chandivade , + Andrew Vasquez , + James Bottomley , + Greg Kroah-Hartman +Subject: [patch 31/46] SCSI: qla2xxx: Correct Atmel flash-part handling. +Content-Disposition: inline; filename=scsi-qla2xxx-correct-atmel-flash-part-handling.patch +Content-Length: 2973 +Lines: 87 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Lalit Chandivade + +commit 821b3996001508e872582dcafc7575021f122728 upstream. + +Use correct block size (4K) for erase command 0x20 for Atmel +Flash. Use dword addresses for determining sector boundary. + +Signed-off-by: Lalit Chandivade +Signed-off-by: Andrew Vasquez +Signed-off-by: James Bottomley +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/scsi/qla2xxx/qla_def.h | 1 - + drivers/scsi/qla2xxx/qla_sup.c | 19 +++++++------------ + 2 files changed, 7 insertions(+), 13 deletions(-) + +--- a/drivers/scsi/qla2xxx/qla_def.h ++++ b/drivers/scsi/qla2xxx/qla_def.h +@@ -2546,7 +2546,6 @@ typedef struct scsi_qla_host { + uint8_t fcode_revision[16]; + uint32_t fw_revision[4]; + +- uint16_t fdt_odd_index; + uint32_t fdt_wrt_disable; + uint32_t fdt_erase_cmd; + uint32_t fdt_block_size; +--- a/drivers/scsi/qla2xxx/qla_sup.c ++++ b/drivers/scsi/qla2xxx/qla_sup.c +@@ -546,6 +546,7 @@ qla24xx_get_flash_manufacturer(scsi_qla_ + void + qla2xxx_get_flash_info(scsi_qla_host_t *ha) + { ++#define FLASH_BLK_SIZE_4K 0x1000 + #define FLASH_BLK_SIZE_32K 0x8000 + #define FLASH_BLK_SIZE_64K 0x10000 + uint16_t cnt, chksum; +@@ -577,7 +578,6 @@ qla2xxx_get_flash_info(scsi_qla_host_t * + goto no_flash_data; + } + +- ha->fdt_odd_index = le16_to_cpu(fdt->man_id) == 0x1f; + ha->fdt_wrt_disable = fdt->wrt_disable_bits; + ha->fdt_erase_cmd = flash_conf_to_access_addr(0x0300 | fdt->erase_cmd); + ha->fdt_block_size = le32_to_cpu(fdt->block_size); +@@ -590,10 +590,10 @@ qla2xxx_get_flash_info(scsi_qla_host_t * + } + + DEBUG2(qla_printk(KERN_DEBUG, ha, "Flash[FDT]: (0x%x/0x%x) erase=0x%x " +- "pro=%x upro=%x idx=%d wrtd=0x%x blk=0x%x.\n", ++ "pro=%x upro=%x wrtd=0x%x blk=0x%x.\n", + le16_to_cpu(fdt->man_id), le16_to_cpu(fdt->id), ha->fdt_erase_cmd, + ha->fdt_protect_sec_cmd, ha->fdt_unprotect_sec_cmd, +- ha->fdt_odd_index, ha->fdt_wrt_disable, ha->fdt_block_size)); ++ ha->fdt_wrt_disable, ha->fdt_block_size)); + return; + + no_flash_data: +@@ -614,8 +614,7 @@ no_flash_data: + ha->fdt_block_size = FLASH_BLK_SIZE_64K; + break; + case 0x1f: /* Atmel 26DF081A. */ +- ha->fdt_odd_index = 1; +- ha->fdt_block_size = FLASH_BLK_SIZE_64K; ++ ha->fdt_block_size = FLASH_BLK_SIZE_4K; + ha->fdt_erase_cmd = flash_conf_to_access_addr(0x0320); + ha->fdt_unprotect_sec_cmd = flash_conf_to_access_addr(0x0339); + ha->fdt_protect_sec_cmd = flash_conf_to_access_addr(0x0336); +@@ -710,13 +709,9 @@ qla24xx_write_flash_data(scsi_qla_host_t + qla24xx_unprotect_flash(ha); + + for (liter = 0; liter < dwords; liter++, faddr++, dwptr++) { +- if (ha->fdt_odd_index) { +- findex = faddr << 2; +- fdata = findex & sec_mask; +- } else { +- findex = faddr; +- fdata = (findex & sec_mask) << 2; +- } ++ ++ findex = faddr; ++ fdata = (findex & sec_mask) << 2; + + /* Are we at the beginning of a sector? */ + if ((findex & rest_addr) == 0) { + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:45 2008 +Message-Id: <20081117070945.457899851@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:53 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Miquel van Smoorenburg , + James Bottomley , + Greg Kroah-Hartman +Subject: [patch 32/46] SCSI: dpt_i2o: fix transferred data length for scsi_set_resid() +Content-Disposition: inline; filename=scsi-dpt_i2o-fix-transferred-data-length-for-scsi_set_resid.patch +Content-Length: 1723 +Lines: 50 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Miquel van Smoorenburg + +commit df81d2371aeca0f7474f197a3090830899016e39 upstream. + +dpt_i2o.c::adpt_i2o_to_scsi() reads the value at (reply+5) which +should contain the length in bytes of the transferred data. This +would be correct if reply was a u32 *. However it is a void * here, +so we need to read the value at (reply+20) instead. + +The value at (reply+5) is usually 0xff0000, which is apparently +'large enough' and didn't cause any trouble until 2.6.27 where + +commit 427e59f09fdba387547106de7bab980b7fff77be +Author: James Bottomley +Date: Sat Mar 8 18:24:17 2008 -0600 + + [SCSI] make use of the residue value + +caused this to become visible through e.g. iostat -x . + +Signed-off-by: Miquel van Smoorenburg +Signed-off-by: James Bottomley +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/scsi/dpt_i2o.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/scsi/dpt_i2o.c ++++ b/drivers/scsi/dpt_i2o.c +@@ -2445,7 +2445,7 @@ static s32 adpt_i2o_to_scsi(void __iomem + hba_status = detailed_status >> 8; + + // calculate resid for sg +- scsi_set_resid(cmd, scsi_bufflen(cmd) - readl(reply+5)); ++ scsi_set_resid(cmd, scsi_bufflen(cmd) - readl(reply+20)); + + pHba = (adpt_hba*) cmd->device->host->hostdata[0]; + +@@ -2456,7 +2456,7 @@ static s32 adpt_i2o_to_scsi(void __iomem + case I2O_SCSI_DSC_SUCCESS: + cmd->result = (DID_OK << 16); + // handle underflow +- if(readl(reply+5) < cmd->underflow ) { ++ if (readl(reply+20) < cmd->underflow) { + cmd->result = (DID_ERROR <<16); + printk(KERN_WARNING"%s: SCSI CMD underflow\n",pHba->name); + } + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:46 2008 +Message-Id: <20081117070945.842965620@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:54 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Mikulas Patocka , + Alasdair G Kergon , + Greg Kroah-Hartman +Subject: [patch 33/46] dm raid1: flush workqueue before destruction +Content-Disposition: inline; filename=dm-raid1-flush-workqueue-before-destruction.patch +Content-Length: 819 +Lines: 27 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Mikulas Patocka + +commit 18776c7316545482a02bfaa2629a2aa1afc48357 upstream. + +We queue work on keventd queue --- so this queue must be flushed in the +destructor. Otherwise, keventd could access mirror_set after it was freed. + +Signed-off-by: Mikulas Patocka +Signed-off-by: Alasdair G Kergon +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/md/dm-raid1.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/md/dm-raid1.c ++++ b/drivers/md/dm-raid1.c +@@ -1598,6 +1598,7 @@ static void mirror_dtr(struct dm_target + + del_timer_sync(&ms->timer); + flush_workqueue(ms->kmirrord_wq); ++ flush_scheduled_work(); + dm_kcopyd_client_destroy(ms->kcopyd_client); + destroy_workqueue(ms->kmirrord_wq); + free_context(ms, ti, ms->nr_mirrors); + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:46 2008 +Message-Id: <20081117070946.048808122@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:55 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Sebastian Andrzej Siewior , + Greg Kroah-Hartman +Subject: [patch 34/46] USB: remove optional bus bindings in isp1760, fixing runtime warning +Content-Disposition: inline; filename=usb-remove-optional-bus-bindings-in-isp1760-fixing-runtime-warning.patch +Content-Length: 4610 +Lines: 160 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Sebastian Andrzej Siewior + +commit ff30bf1ca4b548c0928dae6bfce89458b95e5bf4 upstream. + +Roland Reported the following: +| kmem_cache_create: duplicate cache isp1760_qtd +| Pid: 461, comm: modprobe Tainted: G W 2.6.28-rc2-git3-default #4 +| Call Trace: +| [] kmem_cache_create+0xc9/0x3a3 +| [] free_pages_bulk+0x16c/0x1c9 +| [] isp1760_init+0x0/0xb [isp1760] +| [] init_kmem_once+0x18/0x5f [isp1760] +| [] isp1760_init+0x5/0xb [isp1760] +| [] _stext+0x4d/0x148 +| [] load_module+0x12cd/0x142e +| [] kmem_cache_destroy+0x0/0xd7 +| [] sys_init_module+0x87/0x176 +| [] sysenter_do_call+0x12/0x2f + +The reason, is that ret is initialized with ENODEV instead of 0 _or_ +the kmem cache is not freed in error case with no bus binding. + +The difference between OF+PCI and OF only is +| 15148 804 32 15984 3e70 isp1760-of-pci.o +| 13748 676 8 14432 3860 isp1760-of.o + +about 1.5 KiB. + +Until there is a checkbox where the user *must* select atleast one item, +and may select multiple entries I don't make it selectable anymore. +Having a driver which can't be used under any circumstances is broken +anyway and I've seen distros shipping it that way. + +Reported-by: Roland Kletzing +Signed-off-by: Sebastian Andrzej Siewior +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/Kconfig | 23 ++++++----------------- + drivers/usb/host/isp1760-if.c | 22 +++++++++++----------- + 2 files changed, 17 insertions(+), 28 deletions(-) + +--- a/drivers/usb/host/isp1760-if.c ++++ b/drivers/usb/host/isp1760-if.c +@@ -14,16 +14,16 @@ + #include "../core/hcd.h" + #include "isp1760-hcd.h" + +-#ifdef CONFIG_USB_ISP1760_OF ++#ifdef CONFIG_PPC_OF + #include + #include + #endif + +-#ifdef CONFIG_USB_ISP1760_PCI ++#ifdef CONFIG_PCI + #include + #endif + +-#ifdef CONFIG_USB_ISP1760_OF ++#ifdef CONFIG_PPC_OF + static int of_isp1760_probe(struct of_device *dev, + const struct of_device_id *match) + { +@@ -128,7 +128,7 @@ static struct of_platform_driver isp1760 + }; + #endif + +-#ifdef CONFIG_USB_ISP1760_PCI ++#ifdef CONFIG_PCI + static u32 nxp_pci_io_base; + static u32 iolength; + static u32 pci_mem_phy0; +@@ -287,28 +287,28 @@ static struct pci_driver isp1761_pci_dri + + static int __init isp1760_init(void) + { +- int ret = -ENODEV; ++ int ret; + + init_kmem_once(); + +-#ifdef CONFIG_USB_ISP1760_OF ++#ifdef CONFIG_PPC_OF + ret = of_register_platform_driver(&isp1760_of_driver); + if (ret) { + deinit_kmem_cache(); + return ret; + } + #endif +-#ifdef CONFIG_USB_ISP1760_PCI ++#ifdef CONFIG_PCI + ret = pci_register_driver(&isp1761_pci_driver); + if (ret) + goto unreg_of; + #endif + return ret; + +-#ifdef CONFIG_USB_ISP1760_PCI ++#ifdef CONFIG_PCI + unreg_of: + #endif +-#ifdef CONFIG_USB_ISP1760_OF ++#ifdef CONFIG_PPC_OF + of_unregister_platform_driver(&isp1760_of_driver); + #endif + deinit_kmem_cache(); +@@ -318,10 +318,10 @@ module_init(isp1760_init); + + static void __exit isp1760_exit(void) + { +-#ifdef CONFIG_USB_ISP1760_OF ++#ifdef CONFIG_PPC_OF + of_unregister_platform_driver(&isp1760_of_driver); + #endif +-#ifdef CONFIG_USB_ISP1760_PCI ++#ifdef CONFIG_PCI + pci_unregister_driver(&isp1761_pci_driver); + #endif + deinit_kmem_cache(); +--- a/drivers/usb/host/Kconfig ++++ b/drivers/usb/host/Kconfig +@@ -110,29 +110,18 @@ config USB_ISP116X_HCD + + config USB_ISP1760_HCD + tristate "ISP 1760 HCD support" +- depends on USB && EXPERIMENTAL ++ depends on USB && EXPERIMENTAL && (PCI || PPC_OF) + ---help--- + The ISP1760 chip is a USB 2.0 host controller. + + This driver does not support isochronous transfers or OTG. ++ This USB controller is usually attached to a non-DMA-Master ++ capable bus. NXP's eval kit brings this chip on PCI card ++ where the chip itself is behind a PLB to simulate such ++ a bus. + + To compile this driver as a module, choose M here: the +- module will be called isp1760-hcd. +- +-config USB_ISP1760_PCI +- bool "Support for the PCI bus" +- depends on USB_ISP1760_HCD && PCI +- ---help--- +- Enables support for the device present on the PCI bus. +- This should only be required if you happen to have the eval kit from +- NXP and you are going to test it. +- +-config USB_ISP1760_OF +- bool "Support for the OF platform bus" +- depends on USB_ISP1760_HCD && PPC_OF +- ---help--- +- Enables support for the device present on the PowerPC +- OpenFirmware platform bus. ++ module will be called isp1760. + + config USB_OHCI_HCD + tristate "OHCI HCD support" + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:46 2008 +Message-Id: <20081117070946.254148325@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:56 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + David Brownell , + Greg Kroah-Hartman +Subject: [patch 35/46] USB: gadget: cdc-acm deadlock fix +Content-Disposition: inline; filename=usb-gadget-cdc-acm-deadlock-fix.patch +Content-Length: 1374 +Lines: 40 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: David Brownell + +commit e50ae572b33646656fa7037541613834dcadedfb upstream. + +This fixes a deadlock appearing with some USB peripheral drivers +when running CDC ACM gadget code. + +The newish (2.6.27) CDC ACM event notification mechanism sends +messages (IN to the host) which are short enough to fit in most +FIFOs. That means that with some peripheral controller drivers +(evidently not the ones used to verify the notification code!!) +the completion callback can be issued before queue() returns. + +The deadlock would come because the completion callback and the +event-issuing code shared a spinlock. Fix is trivial: drop +that lock while queueing the message. + +Signed-off-by: David Brownell +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/gadget/f_acm.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/drivers/usb/gadget/f_acm.c ++++ b/drivers/usb/gadget/f_acm.c +@@ -463,7 +463,11 @@ static int acm_cdc_notify(struct f_acm * + notify->wLength = cpu_to_le16(length); + memcpy(buf, data, length); + ++ /* ep_queue() can complete immediately if it fills the fifo... */ ++ spin_unlock(&acm->lock); + status = usb_ep_queue(ep, req, GFP_ATOMIC); ++ spin_lock(&acm->lock); ++ + if (status < 0) { + ERROR(acm->port.func.config->cdev, + "acm ttyGS%d can't notify serial state, %d\n", + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:46 2008 +Message-Id: <20081117070946.459388377@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:57 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Alan Stern , + Greg Kroah-Hartman +Subject: [patch 36/46] USB: unusual_devs entry for Argosy USB mass-storage interface +Content-Disposition: inline; filename=usb-unusual_devs-entry-for-argosy-usb-mass-storage-interface.patch +Content-Length: 1085 +Lines: 33 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Alan Stern + +commit 8010e06cc90367b4d3fba3b0ec3ced32360ac890 upstream. + +This patch (as1162) adds an unusual_devs entry for Argosy's USB-IDE +interface. This fixes Bugzilla #11843. + +Signed-off-by: Alan Stern +Tested-by: Luciano Rocha +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/storage/unusual_devs.h | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/usb/storage/unusual_devs.h ++++ b/drivers/usb/storage/unusual_devs.h +@@ -1251,6 +1251,13 @@ UNUSUAL_DEV( 0x0839, 0x000a, 0x0001, 0x0 + US_SC_DEVICE, US_PR_DEVICE, NULL, + US_FL_FIX_INQUIRY), + ++/* Reported by Luciano Rocha */ ++UNUSUAL_DEV( 0x0840, 0x0082, 0x0001, 0x0001, ++ "Argosy", ++ "Storage", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ US_FL_FIX_CAPACITY), ++ + /* Entry and supporting patch by Theodore Kilgore . + * Flag will support Bulk devices which use a standards-violating 32-byte + * Command Block Wrapper. Here, the "DC2MEGA" cameras (several brands) with + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:47 2008 +Message-Id: <20081117070946.844340935@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:58 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Geoff Levand , + Greg Kroah-Hartman +Subject: [patch 37/46] USB: Fix PS3 USB shutdown problems +Content-Disposition: inline; filename=usb-fix-ps3-usb-shutdown-problems.patch +Content-Length: 1549 +Lines: 57 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Geoff Levand + +commit ddcb01ff9bf49c4dbbb058423559f7bc90b89374 upstream. + +Add ehci_shutdown() or ohci_shutdown() calls to the USB +PS3 bus glue. ehci_shutdown() and ohci_shutdown() do some +controller specific cleanups not done by usb_remove_hcd(). + +Fixes errors on shutdown or reboot similar to these: + + ps3-ehci-driver sb_07: HC died; cleaning up + irq 51: nobody cared (try booting with the "irqpoll" option) + +Related bugzilla reports: + + http://bugzilla.kernel.org/show_bug.cgi?id=11819 + http://bugzilla.terrasoftsolutions.com/show_bug.cgi?id=317 + +Signed-off-by: Geoff Levand +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/ehci-ps3.c | 1 + + drivers/usb/host/ohci-ps3.c | 3 ++- + 2 files changed, 3 insertions(+), 1 deletion(-) + +--- a/drivers/usb/host/ehci-ps3.c ++++ b/drivers/usb/host/ehci-ps3.c +@@ -205,6 +205,7 @@ static int ps3_ehci_remove(struct ps3_sy + + tmp = hcd->irq; + ++ ehci_shutdown(hcd); + usb_remove_hcd(hcd); + + ps3_system_bus_set_driver_data(dev, NULL); +--- a/drivers/usb/host/ohci-ps3.c ++++ b/drivers/usb/host/ohci-ps3.c +@@ -192,7 +192,7 @@ fail_start: + return result; + } + +-static int ps3_ohci_remove (struct ps3_system_bus_device *dev) ++static int ps3_ohci_remove(struct ps3_system_bus_device *dev) + { + unsigned int tmp; + struct usb_hcd *hcd = +@@ -205,6 +205,7 @@ static int ps3_ohci_remove (struct ps3_s + + tmp = hcd->irq; + ++ ohci_shutdown(hcd); + usb_remove_hcd(hcd); + + ps3_system_bus_set_driver_data(dev, NULL); + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:47 2008 +Message-Id: <20081117070947.053658879@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:59 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Brandon Philips , + Oliver Neukum , + Greg Kroah-Hartman +Subject: [patch 38/46] USB: cdc-acm.c: fix recursive lock in acm_start_wb error path +Content-Disposition: inline; filename=usb-cdc-acm.c-fix-recursive-lock-in-acm_start_wb-error-path.patch +Content-Length: 2898 +Lines: 92 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Brandon Philips + +commit ad0b65efd12d020b046cde8d6f474e37bb98dd73 upstream. + +Fixes an obvious bug in cdc-acm by avoiding a recursive lock on +acm_start_wb()'s error path. Should apply towards 2.6.27 stable and +2.6.28. + +============================================= +[ INFO: possible recursive locking detected ] +2.6.27-2-pae #109 +--------------------------------------------- +python/31449 is trying to acquire lock: + (&acm->write_lock){++..}, at: [] acm_start_wb+0x5c/0x7b [cdc_acm] + +but task is already holding lock: + (&acm->write_lock){++..}, at: [] acm_tty_write+0xe1/0x167 [cdc_acm] + +other info that might help us debug this: +2 locks held by python/31449: + #0: (&tty->atomic_write_lock){--..}, at: [] tty_write_lock+0x14/0x3b + #1: (&acm->write_lock){++..}, at: [] acm_tty_write+0xe1/0x167 [cdc_acm] + +stack backtrace: +Pid: 31449, comm: python Not tainted 2.6.27-2-pae #109 + [] ? printk+0xf/0x18 + [] __lock_acquire+0xc7b/0x1316 + [] lock_acquire+0x70/0x97 + [] ? acm_start_wb+0x5c/0x7b [cdc_acm] + [] _spin_lock_irqsave+0x37/0x47 + [] ? acm_start_wb+0x5c/0x7b [cdc_acm] + [] acm_start_wb+0x5c/0x7b [cdc_acm] + [] acm_tty_write+0x143/0x167 [cdc_acm] + [] write_chan+0x1cd/0x297 + [] ? default_wake_function+0x0/0xd + [] tty_write+0x149/0x1b9 + [] ? write_chan+0x0/0x297 + [] ? rw_verify_area+0x76/0x98 + [] ? tty_write+0x0/0x1b9 + [] vfs_write+0x8c/0x136 + [] sys_write+0x3b/0x60 + [] sysenter_do_call+0x12/0x3f + ======================= + +Signed-off-by: Brandon Philips +Cc: Oliver Neukum +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/class/cdc-acm.c | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +--- a/drivers/usb/class/cdc-acm.c ++++ b/drivers/usb/class/cdc-acm.c +@@ -158,16 +158,12 @@ static int acm_wb_is_avail(struct acm *a + } + + /* +- * Finish write. ++ * Finish write. Caller must hold acm->write_lock + */ + static void acm_write_done(struct acm *acm, struct acm_wb *wb) + { +- unsigned long flags; +- +- spin_lock_irqsave(&acm->write_lock, flags); + wb->use = 0; + acm->transmitting--; +- spin_unlock_irqrestore(&acm->write_lock, flags); + } + + /* +@@ -482,6 +478,7 @@ static void acm_write_bulk(struct urb *u + { + struct acm_wb *wb = urb->context; + struct acm *acm = wb->instance; ++ unsigned long flags; + + if (verbose || urb->status + || (urb->actual_length != urb->transfer_buffer_length)) +@@ -490,7 +487,9 @@ static void acm_write_bulk(struct urb *u + urb->transfer_buffer_length, + urb->status); + ++ spin_lock_irqsave(&acm->write_lock, flags); + acm_write_done(acm, wb); ++ spin_unlock_irqrestore(&acm->write_lock, flags); + if (ACM_READY(acm)) + schedule_work(&acm->work); + else + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:47 2008 +Message-Id: <20081117070947.260841565@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:07:00 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Alan Stern , + David Brownell , + Greg Kroah-Hartman +Subject: [patch 39/46] USB: EHCI: fix divide-by-zero bug +Content-Disposition: inline; filename=usb-ehci-fix-divide-by-zero-bug.patch +Content-Length: 1175 +Lines: 39 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Alan Stern + +commit 372dd6e8ed924e876f3beb598721e813ad7fa323 upstream. + +This patch (as1164) fixes a bug in the EHCI scheduler. The interval +value it uses is already in linear format, not logarithmically coded. +The existing code can sometimes crash the system by trying to divide +by zero. + +Signed-off-by: Alan Stern +Cc: David Brownell +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/ehci-sched.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/usb/host/ehci-sched.c ++++ b/drivers/usb/host/ehci-sched.c +@@ -918,7 +918,7 @@ iso_stream_init ( + */ + stream->usecs = HS_USECS_ISO (maxp); + bandwidth = stream->usecs * 8; +- bandwidth /= 1 << (interval - 1); ++ bandwidth /= interval; + + } else { + u32 addr; +@@ -951,7 +951,7 @@ iso_stream_init ( + } else + stream->raw_mask = smask_out [hs_transfers - 1]; + bandwidth = stream->usecs + stream->c_usecs; +- bandwidth /= 1 << (interval + 2); ++ bandwidth /= interval << 3; + + /* stream->splits gets created from raw_mask later */ + stream->address = cpu_to_hc32(ehci, addr); + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:47 2008 +Message-Id: <20081117070947.466679807@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:07:01 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Alan Stern , + David Brownell , + Greg Kroah-Hartman +Subject: [patch 40/46] USB: EHCI: fix handling of dead controllers +Content-Disposition: inline; filename=usb-ehci-fix-handling-of-dead-controllers.patch +Content-Length: 2659 +Lines: 86 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Alan Stern + +commit 67b2e029743a52670d77864723b4d0d40f7733b5 upstream. + +This patch (as1165) makes a few small changes in the logic used by +ehci-hcd when it encounters a controller error: + + Instead of printing out the masked status, it prints the + original status as read directly from the hardware. + + It doesn't check for the STS_HALT status bit before taking + action. The mere fact that the STS_FATAL bit is set means + that something bad has happened and the controller needs to + be reset. With the old code this test could never succeed + because the STS_HALT bit was masked out from the status. + +I anticipate that this will prevent the occasional "irq X: nobody cared" +problem people encounter when their EHCI controllers die. + +Signed-off-by: Alan Stern +Cc: David Brownell +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/ehci-hcd.c | 25 ++++++++++++------------- + 1 file changed, 12 insertions(+), 13 deletions(-) + +--- a/drivers/usb/host/ehci-hcd.c ++++ b/drivers/usb/host/ehci-hcd.c +@@ -643,7 +643,7 @@ static int ehci_run (struct usb_hcd *hcd + static irqreturn_t ehci_irq (struct usb_hcd *hcd) + { + struct ehci_hcd *ehci = hcd_to_ehci (hcd); +- u32 status, pcd_status = 0, cmd; ++ u32 status, masked_status, pcd_status = 0, cmd; + int bh; + + spin_lock (&ehci->lock); +@@ -656,14 +656,14 @@ static irqreturn_t ehci_irq (struct usb_ + goto dead; + } + +- status &= INTR_MASK; +- if (!status) { /* irq sharing? */ ++ masked_status = status & INTR_MASK; ++ if (!masked_status) { /* irq sharing? */ + spin_unlock(&ehci->lock); + return IRQ_NONE; + } + + /* clear (just) interrupts */ +- ehci_writel(ehci, status, &ehci->regs->status); ++ ehci_writel(ehci, masked_status, &ehci->regs->status); + cmd = ehci_readl(ehci, &ehci->regs->command); + bh = 0; + +@@ -731,19 +731,18 @@ static irqreturn_t ehci_irq (struct usb_ + + /* PCI errors [4.15.2.4] */ + if (unlikely ((status & STS_FATAL) != 0)) { ++ ehci_err(ehci, "fatal error\n"); + dbg_cmd (ehci, "fatal", ehci_readl(ehci, + &ehci->regs->command)); + dbg_status (ehci, "fatal", status); +- if (status & STS_HALT) { +- ehci_err (ehci, "fatal error\n"); ++ ehci_halt(ehci); + dead: +- ehci_reset (ehci); +- ehci_writel(ehci, 0, &ehci->regs->configured_flag); +- /* generic layer kills/unlinks all urbs, then +- * uses ehci_stop to clean up the rest +- */ +- bh = 1; +- } ++ ehci_reset(ehci); ++ ehci_writel(ehci, 0, &ehci->regs->configured_flag); ++ /* generic layer kills/unlinks all urbs, then ++ * uses ehci_stop to clean up the rest ++ */ ++ bh = 1; + } + + if (bh) + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:48 2008 +Message-Id: <20081117070947.865228295@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:07:02 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Alan Stern , + Greg Kroah-Hartman +Subject: [patch 41/46] USB: dont register endpoints for interfaces that are going away +Content-Disposition: inline; filename=usb-don-t-register-endpoints-for-interfaces-that-are-going-away.patch +Content-Length: 2779 +Lines: 66 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Alan Stern + +commit 352d026338378b1f13f044e33c1047da6e470056 upstream. + +This patch (as1155) fixes a bug in usbcore. When interfaces are +deleted, either because the device was disconnected or because of a +configuration change, the extra attribute files and child endpoint +devices may get left behind. This is because the core removes them +before calling device_del(). But during device_del(), after the +driver is unbound the core will reinstall altsetting 0 and recreate +those extra attributes and children. + +The patch prevents this by adding a flag to record when the interface +is in the midst of being unregistered. When the flag is set, the +attribute files and child devices will not be created. + +Signed-off-by: Alan Stern +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/core/message.c | 1 + + drivers/usb/core/sysfs.c | 2 +- + include/linux/usb.h | 2 ++ + 3 files changed, 4 insertions(+), 1 deletion(-) + +--- a/drivers/usb/core/message.c ++++ b/drivers/usb/core/message.c +@@ -1091,6 +1091,7 @@ void usb_disable_device(struct usb_devic + continue; + dev_dbg(&dev->dev, "unregistering interface %s\n", + dev_name(&interface->dev)); ++ interface->unregistering = 1; + usb_remove_sysfs_intf_files(interface); + device_del(&interface->dev); + } +--- a/drivers/usb/core/sysfs.c ++++ b/drivers/usb/core/sysfs.c +@@ -816,7 +816,7 @@ int usb_create_sysfs_intf_files(struct u + struct usb_host_interface *alt = intf->cur_altsetting; + int retval; + +- if (intf->sysfs_files_created) ++ if (intf->sysfs_files_created || intf->unregistering) + return 0; + + /* The interface string may be present in some altsettings +--- a/include/linux/usb.h ++++ b/include/linux/usb.h +@@ -108,6 +108,7 @@ enum usb_interface_condition { + * (in probe()), bound to a driver, or unbinding (in disconnect()) + * @is_active: flag set when the interface is bound and not suspended. + * @sysfs_files_created: sysfs attributes exist ++ * @unregistering: flag set when the interface is being unregistered + * @needs_remote_wakeup: flag set when the driver requires remote-wakeup + * capability during autosuspend. + * @needs_altsetting0: flag set when a set-interface request for altsetting 0 +@@ -163,6 +164,7 @@ struct usb_interface { + enum usb_interface_condition condition; /* state of binding */ + unsigned is_active:1; /* the interface is not suspended */ + unsigned sysfs_files_created:1; /* the sysfs attributes exist */ ++ unsigned unregistering:1; /* unregistration is in progress */ + unsigned needs_remote_wakeup:1; /* driver requires remote wakeup */ + unsigned needs_altsetting0:1; /* switch to altsetting 0 is pending */ + unsigned needs_binding:1; /* needs delayed unbind/rebind */ + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:48 2008 +Message-Id: <20081117070948.090253753@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:07:03 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Alexey Starikovskiy , + Len Brown , + "Rafael J. Wysocki" , + Greg Kroah-Hartman +Subject: [patch 42/46] ACPI: EC: revert msleep patch +Content-Disposition: inline; filename=acpi-ec-revert-msleep-patch.patch +Content-Length: 1047 +Lines: 37 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Alexey Starikovskiy + +commit 1cfe62c8010ac56e1bd3827e30386a87cc2f3594 upstream. + +With the better solution for EC interrupt storm issue, +there is no need to use msleep over udelay. + +References: + http://bugzilla.kernel.org/show_bug.cgi?id=11810 + http://bugzilla.kernel.org/show_bug.cgi?id=10724 + +Signed-off-by: Alexey Starikovskiy +Signed-off-by: Len Brown +Cc: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/ec.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/acpi/ec.c ++++ b/drivers/acpi/ec.c +@@ -239,10 +239,10 @@ static int ec_check_sci(struct acpi_ec * + static int ec_poll(struct acpi_ec *ec) + { + unsigned long delay = jiffies + msecs_to_jiffies(ACPI_EC_DELAY); +- msleep(1); ++ udelay(ACPI_EC_UDELAY); + while (time_before(jiffies, delay)) { + gpe_transaction(ec, acpi_ec_read_status(ec)); +- msleep(1); ++ udelay(ACPI_EC_UDELAY); + if (ec_transaction_done(ec)) + return 0; + } + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:48 2008 +Message-Id: <20081117070948.293485868@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:07:04 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Alexey Starikovskiy , + Len Brown , + "Rafael J. Wysocki" , + Greg Kroah-Hartman +Subject: [patch 43/46] ACPI: EC: wait for last write gpe +Content-Disposition: inline; filename=acpi-ec-wait-for-last-write-gpe.patch +Content-Length: 2156 +Lines: 74 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Alexey Starikovskiy + +commit dd15f8c42af09031e27da5b4d697ce925511f2e1 upstream. + +There is a possibility that EC might break if next command is +issued within 1 us after write or burst-disable command. + +Suggestd-by: Zhao Yakui +Signed-off-by: Alexey Starikovskiy +Signed-off-by: Len Brown +Cc: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/ec.c | 21 +++++++++++++-------- + 1 file changed, 13 insertions(+), 8 deletions(-) + +--- a/drivers/acpi/ec.c ++++ b/drivers/acpi/ec.c +@@ -102,6 +102,7 @@ struct transaction { + u8 command; + u8 wlen; + u8 rlen; ++ bool done; + }; + + static struct acpi_ec { +@@ -178,7 +179,7 @@ static int ec_transaction_done(struct ac + unsigned long flags; + int ret = 0; + spin_lock_irqsave(&ec->curr_lock, flags); +- if (!ec->curr || (!ec->curr->wlen && !ec->curr->rlen)) ++ if (!ec->curr || ec->curr->done) + ret = 1; + spin_unlock_irqrestore(&ec->curr_lock, flags); + return ret; +@@ -195,17 +196,20 @@ static void gpe_transaction(struct acpi_ + acpi_ec_write_data(ec, *(ec->curr->wdata++)); + --ec->curr->wlen; + } else +- /* false interrupt, state didn't change */ +- ++ec->curr->irq_count; +- ++ goto err; + } else if (ec->curr->rlen > 0) { + if ((status & ACPI_EC_FLAG_OBF) == 1) { + *(ec->curr->rdata++) = acpi_ec_read_data(ec); +- --ec->curr->rlen; ++ if (--ec->curr->rlen == 0) ++ ec->curr->done = true; + } else +- /* false interrupt, state didn't change */ +- ++ec->curr->irq_count; +- } ++ goto err; ++ } else if (ec->curr->wlen == 0 && (status & ACPI_EC_FLAG_IBF) == 0) ++ ec->curr->done = true; ++ goto unlock; ++err: ++ /* false interrupt, state didn't change */ ++ ++ec->curr->irq_count; + unlock: + spin_unlock_irqrestore(&ec->curr_lock, flags); + } +@@ -265,6 +269,7 @@ static int acpi_ec_transaction_unlocked( + spin_lock_irqsave(&ec->curr_lock, tmp); + /* following two actions should be kept atomic */ + t->irq_count = 0; ++ t->done = false; + ec->curr = t; + acpi_ec_write_cmd(ec, ec->curr->command); + if (ec->curr->command == ACPI_EC_COMMAND_QUERY) + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:48 2008 +Message-Id: <20081117070948.575277199@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:07:05 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Alexey Starikovskiy , + Len Brown , + "Rafael J. Wysocki" , + Greg Kroah-Hartman +Subject: [patch 44/46] ACPI: EC: restart failed command +Content-Disposition: inline; filename=acpi-ec-restart-failed-command.patch +Content-Length: 3183 +Lines: 103 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Alexey Starikovskiy + +commit a2f93aeadf97e870ff385030633a73e21146815d upstream. + +Restart current transaction if we recieved unexpected GPEs instead +of needed ones. + +http://bugzilla.kernel.org/show_bug.cgi?id=11896 + +Signed-off-by: Alexey Starikovskiy +Signed-off-by: Len Brown +Cc: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/ec.c | 41 +++++++++++++++++++++++++++++------------ + 1 file changed, 29 insertions(+), 12 deletions(-) + +--- a/drivers/acpi/ec.c ++++ b/drivers/acpi/ec.c +@@ -100,6 +100,8 @@ struct transaction { + u8 *rdata; + unsigned short irq_count; + u8 command; ++ u8 wi; ++ u8 ri; + u8 wlen; + u8 rlen; + bool done; +@@ -185,26 +187,34 @@ static int ec_transaction_done(struct ac + return ret; + } + ++static void start_transaction(struct acpi_ec *ec) ++{ ++ ec->curr->irq_count = ec->curr->wi = ec->curr->ri = 0; ++ ec->curr->done = false; ++ acpi_ec_write_cmd(ec, ec->curr->command); ++} ++ + static void gpe_transaction(struct acpi_ec *ec, u8 status) + { + unsigned long flags; + spin_lock_irqsave(&ec->curr_lock, flags); + if (!ec->curr) + goto unlock; +- if (ec->curr->wlen > 0) { +- if ((status & ACPI_EC_FLAG_IBF) == 0) { +- acpi_ec_write_data(ec, *(ec->curr->wdata++)); +- --ec->curr->wlen; +- } else ++ if (ec->curr->wlen > ec->curr->wi) { ++ if ((status & ACPI_EC_FLAG_IBF) == 0) ++ acpi_ec_write_data(ec, ++ ec->curr->wdata[ec->curr->wi++]); ++ else + goto err; +- } else if (ec->curr->rlen > 0) { ++ } else if (ec->curr->rlen > ec->curr->ri) { + if ((status & ACPI_EC_FLAG_OBF) == 1) { +- *(ec->curr->rdata++) = acpi_ec_read_data(ec); +- if (--ec->curr->rlen == 0) ++ ec->curr->rdata[ec->curr->ri++] = acpi_ec_read_data(ec); ++ if (ec->curr->rlen == ec->curr->ri) + ec->curr->done = true; + } else + goto err; +- } else if (ec->curr->wlen == 0 && (status & ACPI_EC_FLAG_IBF) == 0) ++ } else if (ec->curr->wlen == ec->curr->wi && ++ (status & ACPI_EC_FLAG_IBF) == 0) + ec->curr->done = true; + goto unlock; + err: +@@ -219,6 +229,15 @@ static int acpi_ec_wait(struct acpi_ec * + if (wait_event_timeout(ec->wait, ec_transaction_done(ec), + msecs_to_jiffies(ACPI_EC_DELAY))) + return 0; ++ /* try restart command if we get any false interrupts */ ++ if (ec->curr->irq_count && ++ (acpi_ec_read_status(ec) & ACPI_EC_FLAG_IBF) == 0) { ++ pr_debug(PREFIX "controller reset, restart transaction\n"); ++ start_transaction(ec); ++ if (wait_event_timeout(ec->wait, ec_transaction_done(ec), ++ msecs_to_jiffies(ACPI_EC_DELAY))) ++ return 0; ++ } + /* missing GPEs, switch back to poll mode */ + if (printk_ratelimit()) + pr_info(PREFIX "missing confirmations, " +@@ -268,10 +287,8 @@ static int acpi_ec_transaction_unlocked( + /* start transaction */ + spin_lock_irqsave(&ec->curr_lock, tmp); + /* following two actions should be kept atomic */ +- t->irq_count = 0; +- t->done = false; + ec->curr = t; +- acpi_ec_write_cmd(ec, ec->curr->command); ++ start_transaction(ec); + if (ec->curr->command == ACPI_EC_COMMAND_QUERY) + clear_bit(EC_FLAGS_QUERY_PENDING, &ec->flags); + spin_unlock_irqrestore(&ec->curr_lock, tmp); + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:49 2008 +Message-Id: <20081117070948.884055339@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:07:06 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Alexey Starikovskiy , + Len Brown , + "Rafael J. Wysocki" , + Greg Kroah-Hartman +Subject: [patch 45/46] ACPI: EC: lower interrupt storm treshold +Content-Disposition: inline; filename=acpi-ec-lower-interrupt-storm-treshold.patch +Content-Length: 841 +Lines: 28 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Alexey Starikovskiy + +commit 06cf7d3c7af902939cd1754abcafb2464060cba8 upstream. + +http://bugzilla.kernel.org/show_bug.cgi?id=11892 + +Signed-off-by: Alexey Starikovskiy +Signed-off-by: Len Brown +Cc: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/ec.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/acpi/ec.c ++++ b/drivers/acpi/ec.c +@@ -70,7 +70,7 @@ enum ec_command { + #define ACPI_EC_UDELAY_GLK 1000 /* Wait 1ms max. to get global lock */ + #define ACPI_EC_UDELAY 100 /* Wait 100us before polling EC again */ + +-#define ACPI_EC_STORM_THRESHOLD 20 /* number of false interrupts ++#define ACPI_EC_STORM_THRESHOLD 8 /* number of false interrupts + per one transaction */ + + enum { + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:49 2008 +Message-Id: <20081117070949.087589866@blue.kroah.org> +References: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:07:07 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Alexey Starikovskiy , + Len Brown , + "Rafael J. Wysocki" , + Greg Kroah-Hartman +Subject: [patch 46/46] ACPI: EC: Dont do transaction from GPE handler in poll mode. +Content-Disposition: inline; filename=acpi-ec-don-t-do-transaction-from-gpe-handler-in-poll-mode.patch +Content-Length: 1034 +Lines: 35 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Alexey Starikovskiy + +commit 8517934ef6aaa28d6e055b98df65b31cedbd1372 upstream. + +Referencies: http://bugzilla.kernel.org/show_bug.cgi?id=12004 + +Signed-off-by: Alexey Starikovskiy +Signed-off-by: Len Brown +Cc: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/ec.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +--- a/drivers/acpi/ec.c ++++ b/drivers/acpi/ec.c +@@ -581,9 +581,12 @@ static u32 acpi_ec_gpe_handler(void *dat + pr_debug(PREFIX "~~~> interrupt\n"); + status = acpi_ec_read_status(ec); + +- gpe_transaction(ec, status); +- if (ec_transaction_done(ec) && (status & ACPI_EC_FLAG_IBF) == 0) +- wake_up(&ec->wait); ++ if (test_bit(EC_FLAGS_GPE_MODE, &ec->flags)) { ++ gpe_transaction(ec, status); ++ if (ec_transaction_done(ec) && ++ (status & ACPI_EC_FLAG_IBF) == 0) ++ wake_up(&ec->wait); ++ } + + ec_check_sci(ec, status); + if (!test_bit(EC_FLAGS_GPE_MODE, &ec->flags) && + +-- + +From greg@blue.kroah.org Sun Nov 16 23:09:37 2008 +Message-Id: <20081117070621.430169021@blue.kroah.org> +User-Agent: quilt/0.46-1 +Date: Sun, 16 Nov 2008 23:06:21 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk +Subject: [patch 00/46] 2.6.27.7-stable review +Content-Length: 4433 +Lines: 88 + +Ok, let's try this again. The 2.6.27.7-rc1 patch was a mess. It had a +patch that was applied corrupted, and some other problems. So here's a +second try at this kernel release. I've added a few more patches that +have gone into Linus's tree and people have asked for, so it is bigger +than 2.6.27.7-rc1 was. Because of this, I'm resetting the review period +clock to start over, as this all needs a good review. + +There are 46 patches in this series, all will be posted as a response to +this one. If anyone has any issues with these being applied, please let +us know. If anyone is a maintainer of the proper subsystem, and wants +to add a Signed-off-by: line to the patch, please respond with it. + +These patches are sent out with a number of different people on the Cc: +line. If you wish to be a reviewer, please email stable@kernel.org to +add your name to the list. If you want to be off the reviewer list, +also email us. + +Responses should be made by November 19, 2008, 07:00:00 UTC. Anything +received after that time might be too late. + +The whole patch series can be found in one patch at: + kernel.org/pub/linux/kernel/v2.6/stable-review/patch-2.6.27.7-rc2.gz +and the diffstat can be found below. + + +thanks, + +greg k-h + +-------------- + + Makefile | 2 +- + arch/arm/mm/cache-feroceon-l2.c | 4 +- + arch/m68k/kernel/ints.c | 2 +- + arch/powerpc/include/asm/mpic.h | 2 + + arch/powerpc/platforms/85xx/mpc85xx_ds.c | 3 +- + arch/powerpc/platforms/86xx/pic.c | 3 +- + arch/powerpc/sysdev/mpic.c | 59 +++++++++++++++++++-- + arch/s390/kernel/topology.c | 11 +++-- + block/blk-merge.c | 19 ++++++- + drivers/acpi/bus.c | 16 +++--- + drivers/acpi/ec.c | 84 ++++++++++++++++++++--------- + drivers/acpi/scan.c | 35 +++++++++---- + drivers/acpi/system.c | 25 ++++++--- + drivers/char/ipmi/ipmi_msghandler.c | 20 ++++--- + drivers/char/ipmi/ipmi_si_intf.c | 16 +++--- + drivers/hwmon/ibmaem.c | 18 ++++--- + drivers/input/mouse/alps.c | 1 + + drivers/md/dm-raid1.c | 1 + + drivers/media/video/tvaudio.c | 15 +++--- + drivers/misc/sony-laptop.c | 6 ++- + drivers/net/Kconfig | 1 + + drivers/net/bnx2x_init.h | 9 ++-- + drivers/net/bnx2x_main.c | 6 ++- + drivers/net/wireless/ath5k/base.c | 67 ++++++++++++----------- + drivers/net/wireless/ath5k/base.h | 3 +- + drivers/net/wireless/ath5k/hw.c | 22 +++----- + drivers/net/wireless/ath5k/initvals.c | 2 + + drivers/net/wireless/hostap/hostap_wlan.h | 5 ++- + drivers/net/wireless/iwlwifi/iwl-agn.c | 6 ++- + drivers/net/wireless/rtl8187_dev.c | 3 + + drivers/pnp/pnpacpi/core.c | 6 ++- + drivers/scsi/dpt_i2o.c | 4 +- + drivers/scsi/qla2xxx/qla_def.h | 1 - + drivers/scsi/qla2xxx/qla_init.c | 2 +- + drivers/scsi/qla2xxx/qla_mbx.c | 2 +- + drivers/scsi/qla2xxx/qla_os.c | 1 + + drivers/scsi/qla2xxx/qla_sup.c | 19 +++---- + drivers/usb/class/cdc-acm.c | 9 ++-- + drivers/usb/core/message.c | 1 + + drivers/usb/core/sysfs.c | 2 +- + drivers/usb/gadget/f_acm.c | 4 ++ + drivers/usb/host/Kconfig | 23 ++------ + drivers/usb/host/ehci-hcd.c | 25 ++++----- + drivers/usb/host/ehci-ps3.c | 1 + + drivers/usb/host/ehci-sched.c | 4 +- + drivers/usb/host/isp1760-if.c | 22 ++++---- + drivers/usb/host/ohci-ps3.c | 3 +- + drivers/usb/storage/unusual_devs.h | 7 +++ + fs/namespace.c | 7 ++- + fs/proc/proc_sysctl.c | 1 + + include/linux/bio.h | 7 +++ + include/linux/usb.h | 2 + + mm/hugetlb.c | 5 +- + mm/page_isolation.c | 5 +- + net/ipv4/proc.c | 58 ++++++++++---------- + scripts/package/builddeb | 24 ++++++++- + 56 files changed, 449 insertions(+), 262 deletions(-) + diff --git a/queue-2.6.27/memory-hotplug-fix-page_zone-calculation-in-test_pages_isolated.patch b/review-2.6.27/memory-hotplug-fix-page_zone-calculation-in-test_pages_isolated.patch similarity index 100% rename from queue-2.6.27/memory-hotplug-fix-page_zone-calculation-in-test_pages_isolated.patch rename to review-2.6.27/memory-hotplug-fix-page_zone-calculation-in-test_pages_isolated.patch diff --git a/queue-2.6.27/net-fix-proc-net-snmp-as-memory-corruptor.patch b/review-2.6.27/net-fix-proc-net-snmp-as-memory-corruptor.patch similarity index 100% rename from queue-2.6.27/net-fix-proc-net-snmp-as-memory-corruptor.patch rename to review-2.6.27/net-fix-proc-net-snmp-as-memory-corruptor.patch diff --git a/queue-2.6.27/powerpc-mpic-fix-regression-caused-by-change-of-default-irq-affinity.patch b/review-2.6.27/powerpc-mpic-fix-regression-caused-by-change-of-default-irq-affinity.patch similarity index 100% rename from queue-2.6.27/powerpc-mpic-fix-regression-caused-by-change-of-default-irq-affinity.patch rename to review-2.6.27/powerpc-mpic-fix-regression-caused-by-change-of-default-irq-affinity.patch diff --git a/queue-2.6.27/r8169-select-mii-in-kconfig.patch b/review-2.6.27/r8169-select-mii-in-kconfig.patch similarity index 100% rename from queue-2.6.27/r8169-select-mii-in-kconfig.patch rename to review-2.6.27/r8169-select-mii-in-kconfig.patch diff --git a/queue-2.6.27/rtl8187-add-abocom-usb-id.patch b/review-2.6.27/rtl8187-add-abocom-usb-id.patch similarity index 100% rename from queue-2.6.27/rtl8187-add-abocom-usb-id.patch rename to review-2.6.27/rtl8187-add-abocom-usb-id.patch diff --git a/queue-2.6.27/rtl8187-support-for-sitecom-wl-168-0001-v4.patch b/review-2.6.27/rtl8187-support-for-sitecom-wl-168-0001-v4.patch similarity index 100% rename from queue-2.6.27/rtl8187-support-for-sitecom-wl-168-0001-v4.patch rename to review-2.6.27/rtl8187-support-for-sitecom-wl-168-0001-v4.patch diff --git a/queue-2.6.27/s390-cpu-topology-fix-locking.patch b/review-2.6.27/s390-cpu-topology-fix-locking.patch similarity index 100% rename from queue-2.6.27/s390-cpu-topology-fix-locking.patch rename to review-2.6.27/s390-cpu-topology-fix-locking.patch diff --git a/queue-2.6.27/scsi-dpt_i2o-fix-transferred-data-length-for-scsi_set_resid.patch b/review-2.6.27/scsi-dpt_i2o-fix-transferred-data-length-for-scsi_set_resid.patch similarity index 100% rename from queue-2.6.27/scsi-dpt_i2o-fix-transferred-data-length-for-scsi_set_resid.patch rename to review-2.6.27/scsi-dpt_i2o-fix-transferred-data-length-for-scsi_set_resid.patch diff --git a/queue-2.6.27/scsi-qla2xxx-correct-atmel-flash-part-handling.patch b/review-2.6.27/scsi-qla2xxx-correct-atmel-flash-part-handling.patch similarity index 100% rename from queue-2.6.27/scsi-qla2xxx-correct-atmel-flash-part-handling.patch rename to review-2.6.27/scsi-qla2xxx-correct-atmel-flash-part-handling.patch diff --git a/queue-2.6.27/scsi-qla2xxx-do-not-honour-max_vports-from-firmware-for-2g-isps-and-below.patch b/review-2.6.27/scsi-qla2xxx-do-not-honour-max_vports-from-firmware-for-2g-isps-and-below.patch similarity index 100% rename from queue-2.6.27/scsi-qla2xxx-do-not-honour-max_vports-from-firmware-for-2g-isps-and-below.patch rename to review-2.6.27/scsi-qla2xxx-do-not-honour-max_vports-from-firmware-for-2g-isps-and-below.patch diff --git a/queue-2.6.27/scsi-qla2xxx-return-a-failed-status-when-abort-mailbox-command-fails.patch b/review-2.6.27/scsi-qla2xxx-return-a-failed-status-when-abort-mailbox-command-fails.patch similarity index 100% rename from queue-2.6.27/scsi-qla2xxx-return-a-failed-status-when-abort-mailbox-command-fails.patch rename to review-2.6.27/scsi-qla2xxx-return-a-failed-status-when-abort-mailbox-command-fails.patch diff --git a/queue-2.6.27/series b/review-2.6.27/series similarity index 100% rename from queue-2.6.27/series rename to review-2.6.27/series diff --git a/queue-2.6.27/sony-laptop-ignore-missing-_dis-method-on-pic-device.patch b/review-2.6.27/sony-laptop-ignore-missing-_dis-method-on-pic-device.patch similarity index 100% rename from queue-2.6.27/sony-laptop-ignore-missing-_dis-method-on-pic-device.patch rename to review-2.6.27/sony-laptop-ignore-missing-_dis-method-on-pic-device.patch diff --git a/queue-2.6.27/touch_mnt_namespace-when-the-mount-flags-change.patch b/review-2.6.27/touch_mnt_namespace-when-the-mount-flags-change.patch similarity index 100% rename from queue-2.6.27/touch_mnt_namespace-when-the-mount-flags-change.patch rename to review-2.6.27/touch_mnt_namespace-when-the-mount-flags-change.patch diff --git a/queue-2.6.27/usb-cdc-acm.c-fix-recursive-lock-in-acm_start_wb-error-path.patch b/review-2.6.27/usb-cdc-acm.c-fix-recursive-lock-in-acm_start_wb-error-path.patch similarity index 100% rename from queue-2.6.27/usb-cdc-acm.c-fix-recursive-lock-in-acm_start_wb-error-path.patch rename to review-2.6.27/usb-cdc-acm.c-fix-recursive-lock-in-acm_start_wb-error-path.patch diff --git a/queue-2.6.27/usb-don-t-register-endpoints-for-interfaces-that-are-going-away.patch b/review-2.6.27/usb-don-t-register-endpoints-for-interfaces-that-are-going-away.patch similarity index 100% rename from queue-2.6.27/usb-don-t-register-endpoints-for-interfaces-that-are-going-away.patch rename to review-2.6.27/usb-don-t-register-endpoints-for-interfaces-that-are-going-away.patch diff --git a/queue-2.6.27/usb-ehci-fix-divide-by-zero-bug.patch b/review-2.6.27/usb-ehci-fix-divide-by-zero-bug.patch similarity index 100% rename from queue-2.6.27/usb-ehci-fix-divide-by-zero-bug.patch rename to review-2.6.27/usb-ehci-fix-divide-by-zero-bug.patch diff --git a/queue-2.6.27/usb-ehci-fix-handling-of-dead-controllers.patch b/review-2.6.27/usb-ehci-fix-handling-of-dead-controllers.patch similarity index 100% rename from queue-2.6.27/usb-ehci-fix-handling-of-dead-controllers.patch rename to review-2.6.27/usb-ehci-fix-handling-of-dead-controllers.patch diff --git a/queue-2.6.27/usb-fix-ps3-usb-shutdown-problems.patch b/review-2.6.27/usb-fix-ps3-usb-shutdown-problems.patch similarity index 100% rename from queue-2.6.27/usb-fix-ps3-usb-shutdown-problems.patch rename to review-2.6.27/usb-fix-ps3-usb-shutdown-problems.patch diff --git a/queue-2.6.27/usb-gadget-cdc-acm-deadlock-fix.patch b/review-2.6.27/usb-gadget-cdc-acm-deadlock-fix.patch similarity index 100% rename from queue-2.6.27/usb-gadget-cdc-acm-deadlock-fix.patch rename to review-2.6.27/usb-gadget-cdc-acm-deadlock-fix.patch diff --git a/queue-2.6.27/usb-remove-optional-bus-bindings-in-isp1760-fixing-runtime-warning.patch b/review-2.6.27/usb-remove-optional-bus-bindings-in-isp1760-fixing-runtime-warning.patch similarity index 99% rename from queue-2.6.27/usb-remove-optional-bus-bindings-in-isp1760-fixing-runtime-warning.patch rename to review-2.6.27/usb-remove-optional-bus-bindings-in-isp1760-fixing-runtime-warning.patch index de3fea1d63e..98d3f1b751b 100644 --- a/queue-2.6.27/usb-remove-optional-bus-bindings-in-isp1760-fixing-runtime-warning.patch +++ b/review-2.6.27/usb-remove-optional-bus-bindings-in-isp1760-fixing-runtime-warning.patch @@ -37,7 +37,7 @@ Having a driver which can't be used under any circumstances is broken anyway and I've seen distros shipping it that way. Reported-by: Roland Kletzing -Signed-off-by: Sebastian Andrzej Siewior a +Signed-off-by: Sebastian Andrzej Siewior Signed-off-by: Greg Kroah-Hartman --- diff --git a/queue-2.6.27/usb-unusual_devs-entry-for-argosy-usb-mass-storage-interface.patch b/review-2.6.27/usb-unusual_devs-entry-for-argosy-usb-mass-storage-interface.patch similarity index 100% rename from queue-2.6.27/usb-unusual_devs-entry-for-argosy-usb-mass-storage-interface.patch rename to review-2.6.27/usb-unusual_devs-entry-for-argosy-usb-mass-storage-interface.patch diff --git a/queue-2.6.27/v4l-dvb-cve-2008-5033-fix-oops-on-tvaudio-when-controlling-bass-treble.patch b/review-2.6.27/v4l-dvb-cve-2008-5033-fix-oops-on-tvaudio-when-controlling-bass-treble.patch similarity index 100% rename from queue-2.6.27/v4l-dvb-cve-2008-5033-fix-oops-on-tvaudio-when-controlling-bass-treble.patch rename to review-2.6.27/v4l-dvb-cve-2008-5033-fix-oops-on-tvaudio-when-controlling-bass-treble.patch