diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2011-12-05 13:40:27 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-12-05 13:40:27 -0800 |
commit | c1b84d68fe643d503fcb8d558923178dec43fdf1 (patch) | |
tree | 5dd22203ee05b9117076d49043da908091dc4b53 | |
parent | c8424c9b10b5b4f2716cc9d39785f24c59bc8854 (diff) | |
download | longterm-queue-2.6.32-c1b84d68fe643d503fcb8d558923178dec43fdf1.tar.gz |
32 patches
added patches:
cifs-fix-cifs-stable-patch-cifs-fix-oplock-break-handling-try-2.patch.patch
scsi-scsi_lib-fix-potential-null-dereference.patch
scsi-silencing-killing-requests-for-dead-queue.patch
staging-comedi-fix-oops-for-usb-daq-devices.patch
staging-comedi-fix-signal-handling-in-read-and-write.patch
staging-usbip-bugfix-for-deadlock.patch
usb-ftdi_sio-add-pid-for-propox-ispcable-iii.patch
usb-option-add-simcom-sim5218.patch
usb-usb-storage-unusual_devs-entry-for-kingston-dt-101-g2.patch
usb-whci-hcd-fix-endian-conversion-in-qset_clear.patch
11 files changed, 538 insertions, 0 deletions
diff --git a/queue-2.6.32/cifs-fix-cifs-stable-patch-cifs-fix-oplock-break-handling-try-2.patch.patch b/queue-2.6.32/cifs-fix-cifs-stable-patch-cifs-fix-oplock-break-handling-try-2.patch.patch new file mode 100644 index 0000000..75aa3b4 --- /dev/null +++ b/queue-2.6.32/cifs-fix-cifs-stable-patch-cifs-fix-oplock-break-handling-try-2.patch.patch @@ -0,0 +1,44 @@ +From sjayaraman@suse.com Mon Dec 5 13:33:36 2011 +From: Suresh Jayaraman <sjayaraman@suse.com> +Date: Fri, 02 Dec 2011 16:24:56 +0530 +Subject: cifs: fix cifs stable patch cifs-fix-oplock-break-handling-try-2.patch +To: stable@kernel.org, Greg KH <gregkh@suse.de> +Cc: Pavel Shilovsky <piastryyy@gmail.com>, Steve French <smfrench@gmail.com>, linux-cifs <linux-cifs@vger.kernel.org> +Message-ID: <4ED8AE80.7030008@suse.com> + +From: Suresh Jayaraman <sjayaraman@suse.com> + +The stable release 2.6.32.32 added the upstream commit +12fed00de963433128b5366a21a55808fab2f756. However, one of the hunks of +the original patch seems missing from the stable backport which can be +found here: + http://permalink.gmane.org/gmane.linux.kernel.stable/5676 + +This hunk corresponds to the change in is_valid_oplock_break() at +fs/cifs/misc.c. + +This patch backports the missing hunk and is against +linux-2.6.32.y stable kernel. + + +Cc: Steve French <sfrench@us.ibm.com> +Signed-off-by: Pavel Shilovsky <piastry@etersoft.ru> +Signed-off-by: Suresh Jayaraman <sjayaraman@suse.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + fs/cifs/misc.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/fs/cifs/misc.c ++++ b/fs/cifs/misc.c +@@ -584,6 +584,9 @@ is_valid_oplock_break(struct smb_hdr *bu + pCifsInode->clientCanCacheAll = false; + if (pSMB->OplockLevel == 0) + pCifsInode->clientCanCacheRead = false; ++ else if (pSMB->OplockLevel) ++ pCifsInode->clientCanCacheRead = true; ++ + rc = slow_work_enqueue(&netfile->oplock_break); + if (rc) { + cERROR(1, ("failed to enqueue oplock " diff --git a/queue-2.6.32/scsi-scsi_lib-fix-potential-null-dereference.patch b/queue-2.6.32/scsi-scsi_lib-fix-potential-null-dereference.patch new file mode 100644 index 0000000..e832be3 --- /dev/null +++ b/queue-2.6.32/scsi-scsi_lib-fix-potential-null-dereference.patch @@ -0,0 +1,49 @@ +From 03b147083a2f9a2a3fbbd2505fa88ffa3c6ab194 Mon Sep 17 00:00:00 2001 +From: Jiri Slaby <jirislaby@gmail.com> +Date: Wed, 23 Sep 2009 16:15:35 +0200 +Subject: SCSI: scsi_lib: fix potential NULL dereference + +From: Jiri Slaby <jirislaby@gmail.com> + +commit 03b147083a2f9a2a3fbbd2505fa88ffa3c6ab194 upstream. + +Stanse found a potential NULL dereference in scsi_kill_request. + +Instead of triggering BUG() in 'if (unlikely(cmd == NULL))' branch, +the kernel will Oops earlier on cmd dereference. + +Move the dereferences after the if. + +Signed-off-by: Jiri Slaby <jirislaby@gmail.com> +Signed-off-by: James Bottomley <James.Bottomley@suse.de> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/scsi/scsi_lib.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +--- a/drivers/scsi/scsi_lib.c ++++ b/drivers/scsi/scsi_lib.c +@@ -1370,9 +1370,9 @@ static int scsi_lld_busy(struct request_ + static void scsi_kill_request(struct request *req, struct request_queue *q) + { + struct scsi_cmnd *cmd = req->special; +- struct scsi_device *sdev = cmd->device; +- struct scsi_target *starget = scsi_target(sdev); +- struct Scsi_Host *shost = sdev->host; ++ struct scsi_device *sdev; ++ struct scsi_target *starget; ++ struct Scsi_Host *shost; + + blk_start_request(req); + +@@ -1382,6 +1382,9 @@ static void scsi_kill_request(struct req + BUG(); + } + ++ sdev = cmd->device; ++ starget = scsi_target(sdev); ++ shost = sdev->host; + scsi_init_cmd_errh(cmd); + cmd->result = DID_NO_CONNECT << 16; + atomic_inc(&cmd->device->iorequest_cnt); diff --git a/queue-2.6.32/scsi-silencing-killing-requests-for-dead-queue.patch b/queue-2.6.32/scsi-silencing-killing-requests-for-dead-queue.patch new file mode 100644 index 0000000..a7144f4 --- /dev/null +++ b/queue-2.6.32/scsi-silencing-killing-requests-for-dead-queue.patch @@ -0,0 +1,44 @@ +From 745718132c3c7cac98a622b610e239dcd5217f71 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke <hare@suse.de> +Date: Wed, 9 Nov 2011 08:39:24 +0100 +Subject: SCSI: Silencing 'killing requests for dead queue' + +From: Hannes Reinecke <hare@suse.de> + +commit 745718132c3c7cac98a622b610e239dcd5217f71 upstream. + +When we tear down a device we try to flush all outstanding +commands in scsi_free_queue(). However the check in +scsi_request_fn() is imperfect as it only signals that +we _might start_ aborting commands, not that we've actually +aborted some. +So move the printk inside the scsi_kill_request function, +this will also give us a hint about which commands are aborted. + +Signed-off-by: Hannes Reinecke <hare@suse.de> +Signed-off-by: James Bottomley <JBottomley@Parallels.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/scsi/scsi_lib.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/scsi/scsi_lib.c ++++ b/drivers/scsi/scsi_lib.c +@@ -1382,6 +1382,8 @@ static void scsi_kill_request(struct req + BUG(); + } + ++ scmd_printk(KERN_INFO, cmd, "killing request\n"); ++ + sdev = cmd->device; + starget = scsi_target(sdev); + shost = sdev->host; +@@ -1468,7 +1470,6 @@ static void scsi_request_fn(struct reque + struct request *req; + + if (!sdev) { +- printk("scsi: killing requests for dead queue\n"); + while ((req = blk_peek_request(q)) != NULL) + scsi_kill_request(req, q); + return; diff --git a/queue-2.6.32/series b/queue-2.6.32/series index 5b881d4..de507db 100644 --- a/queue-2.6.32/series +++ b/queue-2.6.32/series @@ -9,3 +9,13 @@ p54spi-add-missing-spin_lock_init.patch p54spi-fix-workqueue-deadlock.patch nl80211-fix-mac-address-validation.patch gro-reset-vlan_tci-on-reuse.patch +staging-usbip-bugfix-for-deadlock.patch +staging-comedi-fix-oops-for-usb-daq-devices.patch +staging-comedi-fix-signal-handling-in-read-and-write.patch +usb-whci-hcd-fix-endian-conversion-in-qset_clear.patch +usb-ftdi_sio-add-pid-for-propox-ispcable-iii.patch +usb-option-add-simcom-sim5218.patch +usb-usb-storage-unusual_devs-entry-for-kingston-dt-101-g2.patch +scsi-scsi_lib-fix-potential-null-dereference.patch +scsi-silencing-killing-requests-for-dead-queue.patch +cifs-fix-cifs-stable-patch-cifs-fix-oplock-break-handling-try-2.patch.patch diff --git a/queue-2.6.32/staging-comedi-fix-oops-for-usb-daq-devices.patch b/queue-2.6.32/staging-comedi-fix-oops-for-usb-daq-devices.patch new file mode 100644 index 0000000..3357d88 --- /dev/null +++ b/queue-2.6.32/staging-comedi-fix-oops-for-usb-daq-devices.patch @@ -0,0 +1,147 @@ +From 3ffab428f40849ed5f21bcfd7285bdef7902f9ca Mon Sep 17 00:00:00 2001 +From: Bernd Porr <berndporr@f2s.com> +Date: Tue, 8 Nov 2011 21:23:03 +0000 +Subject: staging: comedi: fix oops for USB DAQ devices. + +From: Bernd Porr <berndporr@f2s.com> + +commit 3ffab428f40849ed5f21bcfd7285bdef7902f9ca upstream. + +This fixes kernel oops when an USB DAQ device is plugged out while it's +communicating with the userspace software. + +Signed-off-by: Bernd Porr <berndporr@f2s.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/comedi/comedi_fops.c | 73 +++++++++++++++++++++++++---------- + 1 file changed, 54 insertions(+), 19 deletions(-) + +--- a/drivers/staging/comedi/comedi_fops.c ++++ b/drivers/staging/comedi/comedi_fops.c +@@ -1396,9 +1396,6 @@ static struct vm_operations_struct comed + static int comedi_mmap(struct file *file, struct vm_area_struct *vma) + { + const unsigned minor = iminor(file->f_dentry->d_inode); +- struct comedi_device_file_info *dev_file_info = +- comedi_get_device_file_info(minor); +- struct comedi_device *dev = dev_file_info->device; + struct comedi_async *async = NULL; + unsigned long start = vma->vm_start; + unsigned long size; +@@ -1406,6 +1403,15 @@ static int comedi_mmap(struct file *file + int i; + int retval; + struct comedi_subdevice *s; ++ struct comedi_device_file_info *dev_file_info; ++ struct comedi_device *dev; ++ ++ dev_file_info = comedi_get_device_file_info(minor); ++ if (dev_file_info == NULL) ++ return -ENODEV; ++ dev = dev_file_info->device; ++ if (dev == NULL) ++ return -ENODEV; + + mutex_lock(&dev->mutex); + if (!dev->attached) { +@@ -1472,11 +1478,17 @@ static unsigned int comedi_poll(struct f + { + unsigned int mask = 0; + const unsigned minor = iminor(file->f_dentry->d_inode); +- struct comedi_device_file_info *dev_file_info = +- comedi_get_device_file_info(minor); +- struct comedi_device *dev = dev_file_info->device; + struct comedi_subdevice *read_subdev; + struct comedi_subdevice *write_subdev; ++ struct comedi_device_file_info *dev_file_info; ++ struct comedi_device *dev; ++ dev_file_info = comedi_get_device_file_info(minor); ++ ++ if (dev_file_info == NULL) ++ return -ENODEV; ++ dev = dev_file_info->device; ++ if (dev == NULL) ++ return -ENODEV; + + mutex_lock(&dev->mutex); + if (!dev->attached) { +@@ -1522,9 +1534,15 @@ static ssize_t comedi_write(struct file + int n, m, count = 0, retval = 0; + DECLARE_WAITQUEUE(wait, current); + const unsigned minor = iminor(file->f_dentry->d_inode); +- struct comedi_device_file_info *dev_file_info = +- comedi_get_device_file_info(minor); +- struct comedi_device *dev = dev_file_info->device; ++ struct comedi_device_file_info *dev_file_info; ++ struct comedi_device *dev; ++ dev_file_info = comedi_get_device_file_info(minor); ++ ++ if (dev_file_info == NULL) ++ return -ENODEV; ++ dev = dev_file_info->device; ++ if (dev == NULL) ++ return -ENODEV; + + if (!dev->attached) { + DPRINTK("no driver configured on comedi%i\n", dev->minor); +@@ -1624,9 +1642,15 @@ static ssize_t comedi_read(struct file * + int n, m, count = 0, retval = 0; + DECLARE_WAITQUEUE(wait, current); + const unsigned minor = iminor(file->f_dentry->d_inode); +- struct comedi_device_file_info *dev_file_info = +- comedi_get_device_file_info(minor); +- struct comedi_device *dev = dev_file_info->device; ++ struct comedi_device_file_info *dev_file_info; ++ struct comedi_device *dev; ++ dev_file_info = comedi_get_device_file_info(minor); ++ ++ if (dev_file_info == NULL) ++ return -ENODEV; ++ dev = dev_file_info->device; ++ if (dev == NULL) ++ return -ENODEV; + + if (!dev->attached) { + DPRINTK("no driver configured on comedi%i\n", dev->minor); +@@ -1819,11 +1843,17 @@ ok: + static int comedi_close(struct inode *inode, struct file *file) + { + const unsigned minor = iminor(inode); +- struct comedi_device_file_info *dev_file_info = +- comedi_get_device_file_info(minor); +- struct comedi_device *dev = dev_file_info->device; + struct comedi_subdevice *s = NULL; + int i; ++ struct comedi_device_file_info *dev_file_info; ++ struct comedi_device *dev; ++ dev_file_info = comedi_get_device_file_info(minor); ++ ++ if (dev_file_info == NULL) ++ return -ENODEV; ++ dev = dev_file_info->device; ++ if (dev == NULL) ++ return -ENODEV; + + mutex_lock(&dev->mutex); + +@@ -1857,10 +1887,15 @@ static int comedi_close(struct inode *in + static int comedi_fasync(int fd, struct file *file, int on) + { + const unsigned minor = iminor(file->f_dentry->d_inode); +- struct comedi_device_file_info *dev_file_info = +- comedi_get_device_file_info(minor); +- +- struct comedi_device *dev = dev_file_info->device; ++ struct comedi_device_file_info *dev_file_info; ++ struct comedi_device *dev; ++ dev_file_info = comedi_get_device_file_info(minor); ++ ++ if (dev_file_info == NULL) ++ return -ENODEV; ++ dev = dev_file_info->device; ++ if (dev == NULL) ++ return -ENODEV; + + return fasync_helper(fd, file, on, &dev->async_queue); + } diff --git a/queue-2.6.32/staging-comedi-fix-signal-handling-in-read-and-write.patch b/queue-2.6.32/staging-comedi-fix-signal-handling-in-read-and-write.patch new file mode 100644 index 0000000..0cfb080 --- /dev/null +++ b/queue-2.6.32/staging-comedi-fix-signal-handling-in-read-and-write.patch @@ -0,0 +1,48 @@ +From 6a9ce6b654e491981f6ef7e214cbd4f63e033848 Mon Sep 17 00:00:00 2001 +From: Federico Vaga <federico.vaga@gmail.com> +Date: Sat, 29 Oct 2011 09:47:39 +0200 +Subject: Staging: comedi: fix signal handling in read and write + +From: Federico Vaga <federico.vaga@gmail.com> + +commit 6a9ce6b654e491981f6ef7e214cbd4f63e033848 upstream. + +After sleeping on a wait queue, signal_pending(current) should be +checked (not before sleeping). + +Acked-by: Alessandro Rubini <rubini@gnudd.com> +Signed-off-by: Federico Vaga <federico.vaga@gmail.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/comedi/comedi_fops.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/staging/comedi/comedi_fops.c ++++ b/drivers/staging/comedi/comedi_fops.c +@@ -1599,11 +1599,11 @@ static ssize_t comedi_write(struct file + retval = -EAGAIN; + break; + } ++ schedule(); + if (signal_pending(current)) { + retval = -ERESTARTSYS; + break; + } +- schedule(); + if (!s->busy) + break; + if (s->busy != file) { +@@ -1706,11 +1706,11 @@ static ssize_t comedi_read(struct file * + retval = -EAGAIN; + break; + } ++ schedule(); + if (signal_pending(current)) { + retval = -ERESTARTSYS; + break; + } +- schedule(); + if (!s->busy) { + retval = 0; + break; diff --git a/queue-2.6.32/staging-usbip-bugfix-for-deadlock.patch b/queue-2.6.32/staging-usbip-bugfix-for-deadlock.patch new file mode 100644 index 0000000..cb168ba --- /dev/null +++ b/queue-2.6.32/staging-usbip-bugfix-for-deadlock.patch @@ -0,0 +1,63 @@ +From 438957f8d4a84daa7fa5be6978ad5897a2e9e5e5 Mon Sep 17 00:00:00 2001 +From: Bart Westgeest <bart@elbrys.com> +Date: Tue, 1 Nov 2011 15:01:28 -0400 +Subject: staging: usbip: bugfix for deadlock + +From: Bart Westgeest <bart@elbrys.com> + +commit 438957f8d4a84daa7fa5be6978ad5897a2e9e5e5 upstream. + +Interrupts must be disabled prior to calling usb_hcd_unlink_urb_from_ep. +If interrupts are not disabled, it can potentially lead to a deadlock. +The deadlock is readily reproduceable on a slower (ARM based) device +such as the TI Pandaboard. + +Signed-off-by: Bart Westgeest <bart@elbrys.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/usbip/vhci_rx.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +--- a/drivers/staging/usbip/vhci_rx.c ++++ b/drivers/staging/usbip/vhci_rx.c +@@ -67,6 +67,7 @@ static void vhci_recv_ret_submit(struct + { + struct usbip_device *ud = &vdev->ud; + struct urb *urb; ++ unsigned long flags; + + spin_lock(&vdev->priv_lock); + +@@ -107,9 +108,9 @@ static void vhci_recv_ret_submit(struct + + usbip_dbg_vhci_rx("now giveback urb %p\n", urb); + +- spin_lock(&the_controller->lock); ++ spin_lock_irqsave(&the_controller->lock, flags); + usb_hcd_unlink_urb_from_ep(vhci_to_hcd(the_controller), urb); +- spin_unlock(&the_controller->lock); ++ spin_unlock_irqrestore(&the_controller->lock, flags); + + usb_hcd_giveback_urb(vhci_to_hcd(the_controller), urb, urb->status); + +@@ -150,6 +151,7 @@ static void vhci_recv_ret_unlink(struct + { + struct vhci_unlink *unlink; + struct urb *urb; ++ unsigned long flags; + + usbip_dump_header(pdu); + +@@ -181,9 +183,9 @@ static void vhci_recv_ret_unlink(struct + urb->status = pdu->u.ret_unlink.status; + usbip_uinfo("%d\n", urb->status); + +- spin_lock(&the_controller->lock); ++ spin_lock_irqsave(&the_controller->lock, flags); + usb_hcd_unlink_urb_from_ep(vhci_to_hcd(the_controller), urb); +- spin_unlock(&the_controller->lock); ++ spin_unlock_irqrestore(&the_controller->lock, flags); + + usb_hcd_giveback_urb(vhci_to_hcd(the_controller), urb, + urb->status); diff --git a/queue-2.6.32/usb-ftdi_sio-add-pid-for-propox-ispcable-iii.patch b/queue-2.6.32/usb-ftdi_sio-add-pid-for-propox-ispcable-iii.patch new file mode 100644 index 0000000..1d974dd --- /dev/null +++ b/queue-2.6.32/usb-ftdi_sio-add-pid-for-propox-ispcable-iii.patch @@ -0,0 +1,40 @@ +From 307369b0ca06b27b511b61714e335ddfccf19c4f Mon Sep 17 00:00:00 2001 +From: Marcin Kościelnicki <koriakin@0x04.net> +Date: Wed, 30 Nov 2011 17:01:04 +0100 +Subject: usb: ftdi_sio: add PID for Propox ISPcable III +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Marcin Kościelnicki <koriakin@0x04.net> + +commit 307369b0ca06b27b511b61714e335ddfccf19c4f upstream. + +Signed-off-by: Marcin Kościelnicki <koriakin@0x04.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/serial/ftdi_sio.c | 1 + + drivers/usb/serial/ftdi_sio_ids.h | 1 + + 2 files changed, 2 insertions(+) + +--- a/drivers/usb/serial/ftdi_sio.c ++++ b/drivers/usb/serial/ftdi_sio.c +@@ -739,6 +739,7 @@ static struct usb_device_id id_table_com + { USB_DEVICE(TML_VID, TML_USB_SERIAL_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_ELSTER_UNICOM_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_PROPOX_JTAGCABLEII_PID) }, ++ { USB_DEVICE(FTDI_VID, FTDI_PROPOX_ISPCABLEIII_PID) }, + { USB_DEVICE(OLIMEX_VID, OLIMEX_ARM_USB_OCD_PID), + .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, + { USB_DEVICE(FIC_VID, FIC_NEO1973_DEBUG_PID), +--- a/drivers/usb/serial/ftdi_sio_ids.h ++++ b/drivers/usb/serial/ftdi_sio_ids.h +@@ -111,6 +111,7 @@ + + /* Propox devices */ + #define FTDI_PROPOX_JTAGCABLEII_PID 0xD738 ++#define FTDI_PROPOX_ISPCABLEIII_PID 0xD739 + + /* Lenz LI-USB Computer Interface. */ + #define FTDI_LENZ_LIUSB_PID 0xD780 diff --git a/queue-2.6.32/usb-option-add-simcom-sim5218.patch b/queue-2.6.32/usb-option-add-simcom-sim5218.patch new file mode 100644 index 0000000..afae3ef --- /dev/null +++ b/queue-2.6.32/usb-option-add-simcom-sim5218.patch @@ -0,0 +1,28 @@ +From ec0cd94d881ca89cc9fb61d00d0f4b2b52e605b3 Mon Sep 17 00:00:00 2001 +From: Veli-Pekka Peltola <veli-pekka.peltola@bluegiga.com> +Date: Thu, 24 Nov 2011 22:08:56 +0200 +Subject: usb: option: add SIMCom SIM5218 + +From: Veli-Pekka Peltola <veli-pekka.peltola@bluegiga.com> + +commit ec0cd94d881ca89cc9fb61d00d0f4b2b52e605b3 upstream. + +Tested with SIM5218EVB-KIT evaluation kit. + +Signed-off-by: Veli-Pekka Peltola <veli-pekka.peltola@bluegiga.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/serial/option.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -578,6 +578,7 @@ static struct usb_device_id option_ids[] + { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) }, + { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6000)}, /* ZTE AC8700 */ + { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ ++ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000)}, /* SIMCom SIM5218 */ + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6280) }, /* BP3-USB & BP3-EXT HSDPA */ + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6008) }, + { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) }, diff --git a/queue-2.6.32/usb-usb-storage-unusual_devs-entry-for-kingston-dt-101-g2.patch b/queue-2.6.32/usb-usb-storage-unusual_devs-entry-for-kingston-dt-101-g2.patch new file mode 100644 index 0000000..ed78238 --- /dev/null +++ b/queue-2.6.32/usb-usb-storage-unusual_devs-entry-for-kingston-dt-101-g2.patch @@ -0,0 +1,35 @@ +From cec28a5428793b6bc64e56687fb239759d6da74e Mon Sep 17 00:00:00 2001 +From: Qinglin Ye <yestyle@gmail.com> +Date: Wed, 23 Nov 2011 23:39:32 +0800 +Subject: USB: usb-storage: unusual_devs entry for Kingston DT 101 G2 + +From: Qinglin Ye <yestyle@gmail.com> + +commit cec28a5428793b6bc64e56687fb239759d6da74e upstream. + +Kingston DT 101 G2 replies a wrong tag while transporting, add an +unusal_devs entry to ignore the tag validation. + +Signed-off-by: Qinglin Ye <yestyle@gmail.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + 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 +@@ -1857,6 +1857,13 @@ UNUSUAL_DEV( 0x1370, 0x6828, 0x0110, 0x + US_SC_DEVICE, US_PR_DEVICE, NULL, + US_FL_IGNORE_RESIDUE ), + ++/* Reported by Qinglin Ye <yestyle@gmail.com> */ ++UNUSUAL_DEV( 0x13fe, 0x3600, 0x0100, 0x0100, ++ "Kingston", ++ "DT 101 G2", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ US_FL_BULK_IGNORE_TAG ), ++ + /* Reported by Francesco Foresti <frafore@tiscali.it> */ + UNUSUAL_DEV( 0x14cd, 0x6600, 0x0201, 0x0201, + "Super Top", diff --git a/queue-2.6.32/usb-whci-hcd-fix-endian-conversion-in-qset_clear.patch b/queue-2.6.32/usb-whci-hcd-fix-endian-conversion-in-qset_clear.patch new file mode 100644 index 0000000..dd20066 --- /dev/null +++ b/queue-2.6.32/usb-whci-hcd-fix-endian-conversion-in-qset_clear.patch @@ -0,0 +1,30 @@ +From 8746c83d538cab273d335acb2be226d096f4a5af Mon Sep 17 00:00:00 2001 +From: Dan Carpenter <dan.carpenter@oracle.com> +Date: Tue, 22 Nov 2011 10:28:31 +0300 +Subject: USB: whci-hcd: fix endian conversion in qset_clear() + +From: Dan Carpenter <dan.carpenter@oracle.com> + +commit 8746c83d538cab273d335acb2be226d096f4a5af upstream. + +qset->qh.link is an __le64 field and we should be using cpu_to_le64() +to fill it. + +Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/host/whci/qset.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/usb/host/whci/qset.c ++++ b/drivers/usb/host/whci/qset.c +@@ -104,7 +104,7 @@ void qset_clear(struct whc *whc, struct + { + qset->td_start = qset->td_end = qset->ntds = 0; + +- qset->qh.link = cpu_to_le32(QH_LINK_NTDS(8) | QH_LINK_T); ++ qset->qh.link = cpu_to_le64(QH_LINK_NTDS(8) | QH_LINK_T); + qset->qh.status = qset->qh.status & QH_STATUS_SEQ_MASK; + qset->qh.err_count = 0; + qset->qh.scratch[0] = 0; |