From: Greg Kroah-Hartman Date: Mon, 18 Jun 2012 17:01:53 +0000 (-0700) Subject: 3.0-stable patches X-Git-Tag: v3.0.36~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=863328b4043fafd97b6dfd88a0155e996edc7a04;p=thirdparty%2Fkernel%2Fstable-queue.git 3.0-stable patches added patches: hfsplus-fix-overflow-in-sector-calculations-in-hfsplus_submit_bio.patch usb-storage-add-090c-1000-to-unusal-devs.patch xhci-increase-the-timeout-for-controller-save-restore-state-operation.patch --- diff --git a/queue-3.0/hfsplus-fix-overflow-in-sector-calculations-in-hfsplus_submit_bio.patch b/queue-3.0/hfsplus-fix-overflow-in-sector-calculations-in-hfsplus_submit_bio.patch new file mode 100644 index 00000000000..fb46a1b3661 --- /dev/null +++ b/queue-3.0/hfsplus-fix-overflow-in-sector-calculations-in-hfsplus_submit_bio.patch @@ -0,0 +1,37 @@ +From a6dc8c04218eb752ff79cdc24a995cf51866caed Mon Sep 17 00:00:00 2001 +From: Janne Kalliomäki +Date: Sun, 17 Jun 2012 17:05:24 -0400 +Subject: hfsplus: fix overflow in sector calculations in hfsplus_submit_bio +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Janne Kalliomäki + +commit a6dc8c04218eb752ff79cdc24a995cf51866caed upstream. + +The variable io_size was unsigned int, which caused the wrong sector number +to be calculated after aligning it. This then caused mount to fail with big +volumes, as backup volume header information was searched from a +wrong sector. + +Signed-off-by: Janne Kalliomäki +Signed-off-by: Christoph Hellwig +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + fs/hfsplus/wrapper.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/fs/hfsplus/wrapper.c ++++ b/fs/hfsplus/wrapper.c +@@ -56,7 +56,7 @@ int hfsplus_submit_bio(struct super_bloc + DECLARE_COMPLETION_ONSTACK(wait); + struct bio *bio; + int ret = 0; +- unsigned int io_size; ++ u64 io_size; + loff_t start; + int offset; + diff --git a/queue-3.0/series b/queue-3.0/series index 3c9b1da300b..dcd0d4c9b25 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -6,3 +6,6 @@ usb-option-updated-huawei-k4605-has-better-id.patch usb-option-add-more-yuga-device-ids.patch usb-option-fix-memory-leak.patch usb-option-fix-port-data-abuse.patch +hfsplus-fix-overflow-in-sector-calculations-in-hfsplus_submit_bio.patch +xhci-increase-the-timeout-for-controller-save-restore-state-operation.patch +usb-storage-add-090c-1000-to-unusal-devs.patch diff --git a/queue-3.0/usb-storage-add-090c-1000-to-unusal-devs.patch b/queue-3.0/usb-storage-add-090c-1000-to-unusal-devs.patch new file mode 100644 index 00000000000..ef5b93d057d --- /dev/null +++ b/queue-3.0/usb-storage-add-090c-1000-to-unusal-devs.patch @@ -0,0 +1,49 @@ +From afff07e61a5243e14ee3f0a272a0380cd744a8a3 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 13 Jun 2012 11:44:58 +0200 +Subject: usb-storage: Add 090c:1000 to unusal-devs + +From: Hans de Goede + +commit afff07e61a5243e14ee3f0a272a0380cd744a8a3 upstream. + +This device gives a bogus answer to get_capacity(16): +[ 8628.278614] scsi 8:0:0:0: Direct-Access USB 2.0 USB Flash Drive 1100 PQ: 0 ANSI: 4 +[ 8628.279452] sd 8:0:0:0: Attached scsi generic sg4 type 0 +[ 8628.280338] sd 8:0:0:0: [sdd] 35747322042253313 512-byte logical blocks: (18.3 EB/15.8 EiB) + +So set the quirk flag to avoid using get_capacity(16) with it: +[11731.386014] usb-storage 2-1.6:1.0: Quirks match for vid 090c pid 1000: 80000 +[11731.386075] scsi9 : usb-storage 2-1.6:1.0 +[11731.386172] usbcore: registered new interface driver usb-storage +[11731.386175] USB Mass Storage support registered. +[11732.387394] scsi 9:0:0:0: Direct-Access USB 2.0 USB Flash Drive 1100 PQ: 0 ANSI: 4 +[11732.388462] sd 9:0:0:0: Attached scsi generic sg3 type 0 +[11732.389432] sd 9:0:0:0: [sdc] 7975296 512-byte logical blocks: (4.08 GB/3.80 GiB) + +Which makes the capacity look a lot more sane :) + +Signed-off-by: Hans de Goede +Tested-by: Simon Raffeiner +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 +@@ -1107,6 +1107,13 @@ UNUSUAL_DEV( 0x090a, 0x1200, 0x0000, 0x9 + USB_SC_RBC, USB_PR_BULK, NULL, + 0 ), + ++/* Feiya QDI U2 DISK, reported by Hans de Goede */ ++UNUSUAL_DEV( 0x090c, 0x1000, 0x0000, 0xffff, ++ "Feiya", ++ "QDI U2 DISK", ++ USB_SC_DEVICE, USB_PR_DEVICE, NULL, ++ US_FL_NO_READ_CAPACITY_16 ), ++ + /* aeb */ + UNUSUAL_DEV( 0x090c, 0x1132, 0x0000, 0xffff, + "Feiya", diff --git a/queue-3.0/xhci-increase-the-timeout-for-controller-save-restore-state-operation.patch b/queue-3.0/xhci-increase-the-timeout-for-controller-save-restore-state-operation.patch new file mode 100644 index 00000000000..7e47da78c58 --- /dev/null +++ b/queue-3.0/xhci-increase-the-timeout-for-controller-save-restore-state-operation.patch @@ -0,0 +1,63 @@ +From 622eb783fe6ff4c1baa47db16c3a5db97f9e6e50 Mon Sep 17 00:00:00 2001 +From: Andiry Xu +Date: Wed, 13 Jun 2012 10:51:57 +0800 +Subject: xHCI: Increase the timeout for controller save/restore state operation + +From: Andiry Xu + +commit 622eb783fe6ff4c1baa47db16c3a5db97f9e6e50 upstream. + +When system software decides to power down the xHC with the intent of +resuming operation at a later time, it will ask xHC to save the internal +state and restore it when resume to correctly recover from a power event. +Two bits are used to enable this operation: Save State and Restore State. + +xHCI spec 4.23.2 says software should "Set the Controller Save/Restore +State flag in the USBCMD register and wait for the Save/Restore State +Status flag in the USBSTS register to transition to '0'". However, it does +not define how long software should wait for the SSS/RSS bit to transition +to 0. + +Currently the timeout is set to 1ms. There is bug report +(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1002697) +indicates that the timeout is too short for ASMedia ASM1042 host controller +to save/restore the state successfully. Increase the timeout to 10ms helps to +resolve the issue. + +This patch should be backported to stable kernels as old as 2.6.37, that +contain the commit 5535b1d5f8885695c6ded783c692e3c0d0eda8ca "USB: xHCI: +PCI power management implementation" + +Signed-off-by: Andiry Xu +Signed-off-by: Sarah Sharp +Cc: Ming Lei +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/xhci.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/drivers/usb/host/xhci.c ++++ b/drivers/usb/host/xhci.c +@@ -730,8 +730,8 @@ int xhci_suspend(struct xhci_hcd *xhci) + command = xhci_readl(xhci, &xhci->op_regs->command); + command |= CMD_CSS; + xhci_writel(xhci, command, &xhci->op_regs->command); +- if (handshake(xhci, &xhci->op_regs->status, STS_SAVE, 0, 10*100)) { +- xhci_warn(xhci, "WARN: xHC CMD_CSS timeout\n"); ++ if (handshake(xhci, &xhci->op_regs->status, STS_SAVE, 0, 10 * 1000)) { ++ xhci_warn(xhci, "WARN: xHC save state timeout\n"); + spin_unlock_irq(&xhci->lock); + return -ETIMEDOUT; + } +@@ -786,8 +786,8 @@ int xhci_resume(struct xhci_hcd *xhci, b + command |= CMD_CRS; + xhci_writel(xhci, command, &xhci->op_regs->command); + if (handshake(xhci, &xhci->op_regs->status, +- STS_RESTORE, 0, 10*100)) { +- xhci_dbg(xhci, "WARN: xHC CMD_CSS timeout\n"); ++ STS_RESTORE, 0, 10 * 1000)) { ++ xhci_warn(xhci, "WARN: xHC restore state timeout\n"); + spin_unlock_irq(&xhci->lock); + return -ETIMEDOUT; + }