aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ata/libata-core.c56
-rw-r--r--drivers/ata/libata-eh.c7
-rw-r--r--drivers/ata/libata-scsi.c20
-rw-r--r--drivers/ata/pata_hpt37x.c4
-rw-r--r--drivers/ata/pata_it821x.c2
-rw-r--r--drivers/char/drm/drm_pciids.h2
-rw-r--r--drivers/char/drm/sis_drv.h8
-rw-r--r--drivers/net/au1000_eth.c2
-rw-r--r--drivers/net/cxgb3/xgmac.c8
-rw-r--r--drivers/net/s2io.c16
-rw-r--r--drivers/usb/gadget/file_storage.c12
-rw-r--r--drivers/usb/misc/iowarrior.c7
-rw-r--r--drivers/usb/misc/usblcd.c22
-rw-r--r--drivers/usb/serial/ftdi_sio.c1
-rw-r--r--drivers/usb/serial/ftdi_sio.h1
-rw-r--r--drivers/usb/serial/io_edgeport.c4
-rw-r--r--drivers/usb/serial/option.c6
-rw-r--r--drivers/usb/serial/ti_usb_3410_5052.c8
18 files changed, 93 insertions, 93 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index adfae9d1ce..bfc59a1047 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -600,8 +600,9 @@ static const char *sata_spd_string(unsigned int spd)
600 600
601void ata_dev_disable(struct ata_device *dev) 601void ata_dev_disable(struct ata_device *dev)
602{ 602{
603 if (ata_dev_enabled(dev) && ata_msg_drv(dev->ap)) { 603 if (ata_dev_enabled(dev)) {
604 ata_dev_printk(dev, KERN_WARNING, "disabled\n"); 604 if (ata_msg_drv(dev->ap))
605 ata_dev_printk(dev, KERN_WARNING, "disabled\n");
605 ata_down_xfermask_limit(dev, ATA_DNXFER_FORCE_PIO0 | 606 ata_down_xfermask_limit(dev, ATA_DNXFER_FORCE_PIO0 |
606 ATA_DNXFER_QUIET); 607 ATA_DNXFER_QUIET);
607 dev->class++; 608 dev->class++;
@@ -983,11 +984,6 @@ static u64 ata_hpa_resize(struct ata_device *dev)
983 else 984 else
984 hpa_sectors = ata_read_native_max_address(dev); 985 hpa_sectors = ata_read_native_max_address(dev);
985 986
986 /* if no hpa, both should be equal */
987 ata_dev_printk(dev, KERN_INFO, "%s 1: sectors = %lld, "
988 "hpa_sectors = %lld\n",
989 __FUNCTION__, (long long)sectors, (long long)hpa_sectors);
990
991 if (hpa_sectors > sectors) { 987 if (hpa_sectors > sectors) {
992 ata_dev_printk(dev, KERN_INFO, 988 ata_dev_printk(dev, KERN_INFO,
993 "Host Protected Area detected:\n" 989 "Host Protected Area detected:\n"
@@ -1009,7 +1005,11 @@ static u64 ata_hpa_resize(struct ata_device *dev)
1009 return hpa_sectors; 1005 return hpa_sectors;
1010 } 1006 }
1011 } 1007 }
1012 } 1008 } else if (hpa_sectors < sectors)
1009 ata_dev_printk(dev, KERN_WARNING, "%s 1: hpa sectors (%lld) "
1010 "is smaller than sectors (%lld)\n", __FUNCTION__,
1011 (long long)hpa_sectors, (long long)sectors);
1012
1013 return sectors; 1013 return sectors;
1014} 1014}
1015 1015
@@ -2046,10 +2046,6 @@ int ata_dev_configure(struct ata_device *dev)
2046 dev->max_sectors = min_t(unsigned int, ATA_MAX_SECTORS_128, 2046 dev->max_sectors = min_t(unsigned int, ATA_MAX_SECTORS_128,
2047 dev->max_sectors); 2047 dev->max_sectors);
2048 2048
2049 /* limit ATAPI DMA to R/W commands only */
2050 if (ata_device_blacklisted(dev) & ATA_HORKAGE_DMA_RW_ONLY)
2051 dev->horkage |= ATA_HORKAGE_DMA_RW_ONLY;
2052
2053 if (ap->ops->dev_config) 2049 if (ap->ops->dev_config)
2054 ap->ops->dev_config(dev); 2050 ap->ops->dev_config(dev);
2055 2051
@@ -3780,8 +3776,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
3780 { "IOMEGA ZIP 250 ATAPI", NULL, ATA_HORKAGE_NODMA }, /* temporary fix */ 3776 { "IOMEGA ZIP 250 ATAPI", NULL, ATA_HORKAGE_NODMA }, /* temporary fix */
3781 3777
3782 /* Weird ATAPI devices */ 3778 /* Weird ATAPI devices */
3783 { "TORiSAN DVD-ROM DRD-N216", NULL, ATA_HORKAGE_MAX_SEC_128 | 3779 { "TORiSAN DVD-ROM DRD-N216", NULL, ATA_HORKAGE_MAX_SEC_128 },
3784 ATA_HORKAGE_DMA_RW_ONLY },
3785 3780
3786 /* Devices we expect to fail diagnostics */ 3781 /* Devices we expect to fail diagnostics */
3787 3782
@@ -4109,6 +4104,7 @@ static void ata_fill_sg(struct ata_queued_cmd *qc)
4109 if (idx) 4104 if (idx)
4110 ap->prd[idx - 1].flags_len |= cpu_to_le32(ATA_PRD_EOT); 4105 ap->prd[idx - 1].flags_len |= cpu_to_le32(ATA_PRD_EOT);
4111} 4106}
4107
4112/** 4108/**
4113 * ata_check_atapi_dma - Check whether ATAPI DMA can be supported 4109 * ata_check_atapi_dma - Check whether ATAPI DMA can be supported
4114 * @qc: Metadata associated with taskfile to check 4110 * @qc: Metadata associated with taskfile to check
@@ -4126,33 +4122,19 @@ static void ata_fill_sg(struct ata_queued_cmd *qc)
4126int ata_check_atapi_dma(struct ata_queued_cmd *qc) 4122int ata_check_atapi_dma(struct ata_queued_cmd *qc)
4127{ 4123{
4128 struct ata_port *ap = qc->ap; 4124 struct ata_port *ap = qc->ap;
4129 int rc = 0; /* Assume ATAPI DMA is OK by default */ 4125
4130 4126 /* Don't allow DMA if it isn't multiple of 16 bytes. Quite a
4131 /* some drives can only do ATAPI DMA on read/write */ 4127 * few ATAPI devices choke on such DMA requests.
4132 if (unlikely(qc->dev->horkage & ATA_HORKAGE_DMA_RW_ONLY)) { 4128 */
4133 struct scsi_cmnd *cmd = qc->scsicmd; 4129 if (unlikely(qc->nbytes & 15))
4134 u8 *scsicmd = cmd->cmnd; 4130 return 1;
4135
4136 switch (scsicmd[0]) {
4137 case READ_10:
4138 case WRITE_10:
4139 case READ_12:
4140 case WRITE_12:
4141 case READ_6:
4142 case WRITE_6:
4143 /* atapi dma maybe ok */
4144 break;
4145 default:
4146 /* turn off atapi dma */
4147 return 1;
4148 }
4149 }
4150 4131
4151 if (ap->ops->check_atapi_dma) 4132 if (ap->ops->check_atapi_dma)
4152 rc = ap->ops->check_atapi_dma(qc); 4133 return ap->ops->check_atapi_dma(qc);
4153 4134
4154 return rc; 4135 return 0;
4155} 4136}
4137
4156/** 4138/**
4157 * ata_qc_prep - Prepare taskfile for submission 4139 * ata_qc_prep - Prepare taskfile for submission
4158 * @qc: Metadata associated with taskfile to be prepared 4140 * @qc: Metadata associated with taskfile to be prepared
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index d8070989a3..f7582c9c32 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -336,6 +336,7 @@ void ata_scsi_error(struct Scsi_Host *host)
336 } 336 }
337 ata_port_printk(ap, KERN_ERR, "EH pending after %d " 337 ata_port_printk(ap, KERN_ERR, "EH pending after %d "
338 "tries, giving up\n", ATA_EH_MAX_REPEAT); 338 "tries, giving up\n", ATA_EH_MAX_REPEAT);
339 ap->pflags &= ~ATA_PFLAG_EH_PENDING;
339 } 340 }
340 341
341 /* this run is complete, make sure EH info is clear */ 342 /* this run is complete, make sure EH info is clear */
@@ -1616,7 +1617,7 @@ static int ata_eh_reset(struct ata_port *ap, int classify,
1616 unsigned long deadline; 1617 unsigned long deadline;
1617 unsigned int action; 1618 unsigned int action;
1618 ata_reset_fn_t reset; 1619 ata_reset_fn_t reset;
1619 int i, did_followup_srst, rc; 1620 int i, rc;
1620 1621
1621 /* about to reset */ 1622 /* about to reset */
1622 ata_eh_about_to_do(ap, NULL, ehc->i.action & ATA_EH_RESET_MASK); 1623 ata_eh_about_to_do(ap, NULL, ehc->i.action & ATA_EH_RESET_MASK);
@@ -1665,8 +1666,6 @@ static int ata_eh_reset(struct ata_port *ap, int classify,
1665 1666
1666 /* did prereset() screw up? if so, fix up to avoid oopsing */ 1667 /* did prereset() screw up? if so, fix up to avoid oopsing */
1667 if (!reset) { 1668 if (!reset) {
1668 ata_port_printk(ap, KERN_ERR, "BUG: prereset() requested "
1669 "invalid reset type\n");
1670 if (softreset) 1669 if (softreset)
1671 reset = softreset; 1670 reset = softreset;
1672 else 1671 else
@@ -1689,11 +1688,9 @@ static int ata_eh_reset(struct ata_port *ap, int classify,
1689 1688
1690 rc = ata_do_reset(ap, reset, classes, deadline); 1689 rc = ata_do_reset(ap, reset, classes, deadline);
1691 1690
1692 did_followup_srst = 0;
1693 if (reset == hardreset && 1691 if (reset == hardreset &&
1694 ata_eh_followup_srst_needed(rc, classify, classes)) { 1692 ata_eh_followup_srst_needed(rc, classify, classes)) {
1695 /* okay, let's do follow-up softreset */ 1693 /* okay, let's do follow-up softreset */
1696 did_followup_srst = 1;
1697 reset = softreset; 1694 reset = softreset;
1698 1695
1699 if (!reset) { 1696 if (!reset) {
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index c228df298b..4ddf00c8c5 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@ -2384,11 +2384,6 @@ static unsigned int atapi_xlat(struct ata_queued_cmd *qc)
2384 int using_pio = (dev->flags & ATA_DFLAG_PIO); 2384 int using_pio = (dev->flags & ATA_DFLAG_PIO);
2385 int nodata = (scmd->sc_data_direction == DMA_NONE); 2385 int nodata = (scmd->sc_data_direction == DMA_NONE);
2386 2386
2387 if (!using_pio)
2388 /* Check whether ATAPI DMA is safe */
2389 if (ata_check_atapi_dma(qc))
2390 using_pio = 1;
2391
2392 memset(qc->cdb, 0, dev->cdb_len); 2387 memset(qc->cdb, 0, dev->cdb_len);
2393 memcpy(qc->cdb, scmd->cmnd, scmd->cmd_len); 2388 memcpy(qc->cdb, scmd->cmnd, scmd->cmd_len);
2394 2389
@@ -2401,19 +2396,22 @@ static unsigned int atapi_xlat(struct ata_queued_cmd *qc)
2401 } 2396 }
2402 2397
2403 qc->tf.command = ATA_CMD_PACKET; 2398 qc->tf.command = ATA_CMD_PACKET;
2399 qc->nbytes = scmd->request_bufflen;
2400
2401 /* check whether ATAPI DMA is safe */
2402 if (!using_pio && ata_check_atapi_dma(qc))
2403 using_pio = 1;
2404 2404
2405 /* no data, or PIO data xfer */
2406 if (using_pio || nodata) { 2405 if (using_pio || nodata) {
2406 /* no data, or PIO data xfer */
2407 if (nodata) 2407 if (nodata)
2408 qc->tf.protocol = ATA_PROT_ATAPI_NODATA; 2408 qc->tf.protocol = ATA_PROT_ATAPI_NODATA;
2409 else 2409 else
2410 qc->tf.protocol = ATA_PROT_ATAPI; 2410 qc->tf.protocol = ATA_PROT_ATAPI;
2411 qc->tf.lbam = (8 * 1024) & 0xff; 2411 qc->tf.lbam = (8 * 1024) & 0xff;
2412 qc->tf.lbah = (8 * 1024) >> 8; 2412 qc->tf.lbah = (8 * 1024) >> 8;
2413 } 2413 } else {
2414 2414 /* DMA data xfer */
2415 /* DMA data xfer */
2416 else {
2417 qc->tf.protocol = ATA_PROT_ATAPI_DMA; 2415 qc->tf.protocol = ATA_PROT_ATAPI_DMA;
2418 qc->tf.feature |= ATAPI_PKT_DMA; 2416 qc->tf.feature |= ATAPI_PKT_DMA;
2419 2417
@@ -2422,8 +2420,6 @@ static unsigned int atapi_xlat(struct ata_queued_cmd *qc)
2422 qc->tf.feature |= ATAPI_DMADIR; 2420 qc->tf.feature |= ATAPI_DMADIR;
2423 } 2421 }
2424 2422
2425 qc->nbytes = scmd->request_bufflen;
2426
2427 return 0; 2423 return 0;
2428} 2424}
2429 2425
diff --git a/drivers/ata/pata_hpt37x.c b/drivers/ata/pata_hpt37x.c
index 6446735a46..a8c0cbeca3 100644
--- a/drivers/ata/pata_hpt37x.c
+++ b/drivers/ata/pata_hpt37x.c
@@ -931,13 +931,13 @@ static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id)
931 .udma_mask = 0x7f, 931 .udma_mask = 0x7f,
932 .port_ops = &hpt372_port_ops 932 .port_ops = &hpt372_port_ops
933 }; 933 };
934 /* HPT374 - UDMA133 */ 934 /* HPT374 - UDMA100 */
935 static const struct ata_port_info info_hpt374 = { 935 static const struct ata_port_info info_hpt374 = {
936 .sht = &hpt37x_sht, 936 .sht = &hpt37x_sht,
937 .flags = ATA_FLAG_SLAVE_POSS|ATA_FLAG_SRST, 937 .flags = ATA_FLAG_SLAVE_POSS|ATA_FLAG_SRST,
938 .pio_mask = 0x1f, 938 .pio_mask = 0x1f,
939 .mwdma_mask = 0x07, 939 .mwdma_mask = 0x07,
940 .udma_mask = 0x7f, 940 .udma_mask = 0x3f,
941 .port_ops = &hpt374_port_ops 941 .port_ops = &hpt374_port_ops
942 }; 942 };
943 943
diff --git a/drivers/ata/pata_it821x.c b/drivers/ata/pata_it821x.c
index dab4e7cf8c..12c6e08cc4 100644
--- a/drivers/ata/pata_it821x.c
+++ b/drivers/ata/pata_it821x.c
@@ -690,7 +690,7 @@ static struct ata_port_operations it821x_passthru_port_ops = {
690 .port_start = it821x_port_start, 690 .port_start = it821x_port_start,
691}; 691};
692 692
693static void __devinit it821x_disable_raid(struct pci_dev *pdev) 693static void it821x_disable_raid(struct pci_dev *pdev)
694{ 694{
695 /* Reset local CPU, and set BIOS not ready */ 695 /* Reset local CPU, and set BIOS not ready */
696 pci_write_config_byte(pdev, 0x5E, 0x01); 696 pci_write_config_byte(pdev, 0x5E, 0x01);
diff --git a/drivers/char/drm/drm_pciids.h b/drivers/char/drm/drm_pciids.h
index aa6335032d..30b200b013 100644
--- a/drivers/char/drm/drm_pciids.h
+++ b/drivers/char/drm/drm_pciids.h
@@ -219,6 +219,8 @@
219 {0x1039, 0x6300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 219 {0x1039, 0x6300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
220 {0x1039, 0x6330, PCI_ANY_ID, PCI_ANY_ID, 0, 0, SIS_CHIP_315}, \ 220 {0x1039, 0x6330, PCI_ANY_ID, PCI_ANY_ID, 0, 0, SIS_CHIP_315}, \
221 {0x1039, 0x7300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 221 {0x1039, 0x7300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
222 {0x18CA, 0x0040, PCI_ANY_ID, PCI_ANY_ID, 0, 0, SIS_CHIP_315}, \
223 {0x18CA, 0x0042, PCI_ANY_ID, PCI_ANY_ID, 0, 0, SIS_CHIP_315}, \
222 {0, 0, 0} 224 {0, 0, 0}
223 225
224#define tdfx_PCI_IDS \ 226#define tdfx_PCI_IDS \
diff --git a/drivers/char/drm/sis_drv.h b/drivers/char/drm/sis_drv.h
index 2b8d6f6ed7..70d4ede75f 100644
--- a/drivers/char/drm/sis_drv.h
+++ b/drivers/char/drm/sis_drv.h
@@ -33,11 +33,11 @@
33 33
34#define DRIVER_AUTHOR "SIS, Tungsten Graphics" 34#define DRIVER_AUTHOR "SIS, Tungsten Graphics"
35#define DRIVER_NAME "sis" 35#define DRIVER_NAME "sis"
36#define DRIVER_DESC "SIS 300/630/540" 36#define DRIVER_DESC "SIS 300/630/540 and XGI V3XE/V5/V8"
37#define DRIVER_DATE "20060704" 37#define DRIVER_DATE "20070626"
38#define DRIVER_MAJOR 1 38#define DRIVER_MAJOR 1
39#define DRIVER_MINOR 2 39#define DRIVER_MINOR 3
40#define DRIVER_PATCHLEVEL 1 40#define DRIVER_PATCHLEVEL 0
41 41
42enum sis_family { 42enum sis_family {
43 SIS_OTHER = 0, 43 SIS_OTHER = 0,
diff --git a/drivers/net/au1000_eth.c b/drivers/net/au1000_eth.c
index c39ab803c5..c27cfcef45 100644
--- a/drivers/net/au1000_eth.c
+++ b/drivers/net/au1000_eth.c
@@ -34,7 +34,7 @@
34 * 34 *
35 * 35 *
36 */ 36 */
37 37#include <linux/dma-mapping.h>
38#include <linux/module.h> 38#include <linux/module.h>
39#include <linux/kernel.h> 39#include <linux/kernel.h>
40#include <linux/string.h> 40#include <linux/string.h>
diff --git a/drivers/net/cxgb3/xgmac.c b/drivers/net/cxgb3/xgmac.c
index b261be147e..c302b1a30c 100644
--- a/drivers/net/cxgb3/xgmac.c
+++ b/drivers/net/cxgb3/xgmac.c
@@ -335,11 +335,11 @@ int t3_mac_set_mtu(struct cmac *mac, unsigned int mtu)
335 hwm = min(hwm, MAC_RXFIFO_SIZE - 8192); 335 hwm = min(hwm, MAC_RXFIFO_SIZE - 8192);
336 lwm = min(3 * (int)mtu, MAC_RXFIFO_SIZE / 4); 336 lwm = min(3 * (int)mtu, MAC_RXFIFO_SIZE / 4);
337 337
338 v = t3_read_reg(adap, A_XGM_RXFIFO_CFG + mac->offset);
339 if (adap->params.rev == T3_REV_B2 && 338 if (adap->params.rev == T3_REV_B2 &&
340 (t3_read_reg(adap, A_XGM_RX_CTRL + mac->offset) & F_RXEN)) { 339 (t3_read_reg(adap, A_XGM_RX_CTRL + mac->offset) & F_RXEN)) {
341 disable_exact_filters(mac); 340 disable_exact_filters(mac);
342 t3_set_reg_field(adap, A_XGM_RXFIFO_CFG + mac->offset, 341 v = t3_read_reg(adap, A_XGM_RX_CFG + mac->offset);
342 t3_set_reg_field(adap, A_XGM_RX_CFG + mac->offset,
343 F_ENHASHMCAST | F_COPYALLFRAMES, F_DISBCAST); 343 F_ENHASHMCAST | F_COPYALLFRAMES, F_DISBCAST);
344 344
345 /* drain rx FIFO */ 345 /* drain rx FIFO */
@@ -347,11 +347,12 @@ int t3_mac_set_mtu(struct cmac *mac, unsigned int mtu)
347 A_XGM_RX_MAX_PKT_SIZE_ERR_CNT + 347 A_XGM_RX_MAX_PKT_SIZE_ERR_CNT +
348 mac->offset, 348 mac->offset,
349 1 << 31, 1, 20, 5)) { 349 1 << 31, 1, 20, 5)) {
350 t3_write_reg(adap, A_XGM_RXFIFO_CFG + mac->offset, v); 350 t3_write_reg(adap, A_XGM_RX_CFG + mac->offset, v);
351 enable_exact_filters(mac); 351 enable_exact_filters(mac);
352 return -EIO; 352 return -EIO;
353 } 353 }
354 t3_write_reg(adap, A_XGM_RX_MAX_PKT_SIZE + mac->offset, mtu); 354 t3_write_reg(adap, A_XGM_RX_MAX_PKT_SIZE + mac->offset, mtu);
355 t3_write_reg(adap, A_XGM_RX_CFG + mac->offset, v);
355 enable_exact_filters(mac); 356 enable_exact_filters(mac);
356 } else 357 } else
357 t3_write_reg(adap, A_XGM_RX_MAX_PKT_SIZE + mac->offset, mtu); 358 t3_write_reg(adap, A_XGM_RX_MAX_PKT_SIZE + mac->offset, mtu);
@@ -362,6 +363,7 @@ int t3_mac_set_mtu(struct cmac *mac, unsigned int mtu)
362 */ 363 */
363 hwm = rx_fifo_hwm(mtu); 364 hwm = rx_fifo_hwm(mtu);
364 lwm = min(3 * (int)mtu, MAC_RXFIFO_SIZE / 4); 365 lwm = min(3 * (int)mtu, MAC_RXFIFO_SIZE / 4);
366 v = t3_read_reg(adap, A_XGM_RXFIFO_CFG + mac->offset);
365 v &= ~V_RXFIFOPAUSELWM(M_RXFIFOPAUSELWM); 367 v &= ~V_RXFIFOPAUSELWM(M_RXFIFOPAUSELWM);
366 v |= V_RXFIFOPAUSELWM(lwm / 8); 368 v |= V_RXFIFOPAUSELWM(lwm / 8);
367 if (G_RXFIFOPAUSEHWM(v)) 369 if (G_RXFIFOPAUSEHWM(v))
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c
index c6ba3dee8a..09078ff84c 100644
--- a/drivers/net/s2io.c
+++ b/drivers/net/s2io.c
@@ -2868,6 +2868,7 @@ static void tx_intr_handler(struct fifo_info *fifo_data)
2868 struct tx_curr_get_info get_info, put_info; 2868 struct tx_curr_get_info get_info, put_info;
2869 struct sk_buff *skb; 2869 struct sk_buff *skb;
2870 struct TxD *txdlp; 2870 struct TxD *txdlp;
2871 u8 err_mask;
2871 2872
2872 get_info = fifo_data->tx_curr_get_info; 2873 get_info = fifo_data->tx_curr_get_info;
2873 memcpy(&put_info, &fifo_data->tx_curr_put_info, sizeof(put_info)); 2874 memcpy(&put_info, &fifo_data->tx_curr_put_info, sizeof(put_info));
@@ -2886,8 +2887,8 @@ static void tx_intr_handler(struct fifo_info *fifo_data)
2886 } 2887 }
2887 2888
2888 /* update t_code statistics */ 2889 /* update t_code statistics */
2889 err >>= 48; 2890 err_mask = err >> 48;
2890 switch(err) { 2891 switch(err_mask) {
2891 case 2: 2892 case 2:
2892 nic->mac_control.stats_info->sw_stat. 2893 nic->mac_control.stats_info->sw_stat.
2893 tx_buf_abort_cnt++; 2894 tx_buf_abort_cnt++;
@@ -6805,6 +6806,7 @@ static int rx_osm_handler(struct ring_info *ring_data, struct RxD_t * rxdp)
6805 u16 l3_csum, l4_csum; 6806 u16 l3_csum, l4_csum;
6806 unsigned long long err = rxdp->Control_1 & RXD_T_CODE; 6807 unsigned long long err = rxdp->Control_1 & RXD_T_CODE;
6807 struct lro *lro; 6808 struct lro *lro;
6809 u8 err_mask;
6808 6810
6809 skb->dev = dev; 6811 skb->dev = dev;
6810 6812
@@ -6813,8 +6815,8 @@ static int rx_osm_handler(struct ring_info *ring_data, struct RxD_t * rxdp)
6813 if (err & 0x1) { 6815 if (err & 0x1) {
6814 sp->mac_control.stats_info->sw_stat.parity_err_cnt++; 6816 sp->mac_control.stats_info->sw_stat.parity_err_cnt++;
6815 } 6817 }
6816 err >>= 48; 6818 err_mask = err >> 48;
6817 switch(err) { 6819 switch(err_mask) {
6818 case 1: 6820 case 1:
6819 sp->mac_control.stats_info->sw_stat. 6821 sp->mac_control.stats_info->sw_stat.
6820 rx_parity_err_cnt++; 6822 rx_parity_err_cnt++;
@@ -6867,9 +6869,9 @@ static int rx_osm_handler(struct ring_info *ring_data, struct RxD_t * rxdp)
6867 * Note that in this case, since checksum will be incorrect, 6869 * Note that in this case, since checksum will be incorrect,
6868 * stack will validate the same. 6870 * stack will validate the same.
6869 */ 6871 */
6870 if (err != 0x5) { 6872 if (err_mask != 0x5) {
6871 DBG_PRINT(ERR_DBG, "%s: Rx error Value: 0x%llx\n", 6873 DBG_PRINT(ERR_DBG, "%s: Rx error Value: 0x%x\n",
6872 dev->name, err); 6874 dev->name, err_mask);
6873 sp->stats.rx_crc_errors++; 6875 sp->stats.rx_crc_errors++;
6874 sp->mac_control.stats_info->sw_stat.mem_freed 6876 sp->mac_control.stats_info->sw_stat.mem_freed
6875 += skb->truesize; 6877 += skb->truesize;
diff --git a/drivers/usb/gadget/file_storage.c b/drivers/usb/gadget/file_storage.c
index c6b6479fa4..4639b629e6 100644
--- a/drivers/usb/gadget/file_storage.c
+++ b/drivers/usb/gadget/file_storage.c
@@ -686,7 +686,6 @@ struct fsg_dev {
686 int thread_wakeup_needed; 686 int thread_wakeup_needed;
687 struct completion thread_notifier; 687 struct completion thread_notifier;
688 struct task_struct *thread_task; 688 struct task_struct *thread_task;
689 sigset_t thread_signal_mask;
690 689
691 int cmnd_size; 690 int cmnd_size;
692 u8 cmnd[MAX_COMMAND_SIZE]; 691 u8 cmnd[MAX_COMMAND_SIZE];
@@ -3277,8 +3276,7 @@ static void handle_exception(struct fsg_dev *fsg)
3277 /* Clear the existing signals. Anything but SIGUSR1 is converted 3276 /* Clear the existing signals. Anything but SIGUSR1 is converted
3278 * into a high-priority EXIT exception. */ 3277 * into a high-priority EXIT exception. */
3279 for (;;) { 3278 for (;;) {
3280 sig = dequeue_signal_lock(current, &fsg->thread_signal_mask, 3279 sig = dequeue_signal_lock(current, &current->blocked, &info);
3281 &info);
3282 if (!sig) 3280 if (!sig)
3283 break; 3281 break;
3284 if (sig != SIGUSR1) { 3282 if (sig != SIGUSR1) {
@@ -3431,10 +3429,10 @@ static int fsg_main_thread(void *fsg_)
3431 3429
3432 /* Allow the thread to be killed by a signal, but set the signal mask 3430 /* Allow the thread to be killed by a signal, but set the signal mask
3433 * to block everything but INT, TERM, KILL, and USR1. */ 3431 * to block everything but INT, TERM, KILL, and USR1. */
3434 siginitsetinv(&fsg->thread_signal_mask, sigmask(SIGINT) | 3432 allow_signal(SIGINT);
3435 sigmask(SIGTERM) | sigmask(SIGKILL) | 3433 allow_signal(SIGTERM);
3436 sigmask(SIGUSR1)); 3434 allow_signal(SIGKILL);
3437 sigprocmask(SIG_SETMASK, &fsg->thread_signal_mask, NULL); 3435 allow_signal(SIGUSR1);
3438 3436
3439 /* Arrange for userspace references to be interpreted as kernel 3437 /* Arrange for userspace references to be interpreted as kernel
3440 * pointers. That way we can pass a kernel pointer to a routine 3438 * pointers. That way we can pass a kernel pointer to a routine
diff --git a/drivers/usb/misc/iowarrior.c b/drivers/usb/misc/iowarrior.c
index fc51207b71..3bb33f7bfa 100644
--- a/drivers/usb/misc/iowarrior.c
+++ b/drivers/usb/misc/iowarrior.c
@@ -495,8 +495,8 @@ static int iowarrior_ioctl(struct inode *inode, struct file *file,
495 495
496 /* verify that the device wasn't unplugged */ 496 /* verify that the device wasn't unplugged */
497 if (!dev->present) { 497 if (!dev->present) {
498 mutex_unlock(&dev->mutex); 498 retval = -ENODEV;
499 return -ENODEV; 499 goto error_out;
500 } 500 }
501 501
502 dbg("%s - minor %d, cmd 0x%.4x, arg %ld", __func__, dev->minor, cmd, 502 dbg("%s - minor %d, cmd 0x%.4x, arg %ld", __func__, dev->minor, cmd,
@@ -579,9 +579,10 @@ static int iowarrior_ioctl(struct inode *inode, struct file *file,
579 retval = -ENOTTY; 579 retval = -ENOTTY;
580 break; 580 break;
581 } 581 }
582 582error_out:
583 /* unlock the device */ 583 /* unlock the device */
584 mutex_unlock(&dev->mutex); 584 mutex_unlock(&dev->mutex);
585 kfree(buffer);
585 return retval; 586 return retval;
586} 587}
587 588
diff --git a/drivers/usb/misc/usblcd.c b/drivers/usb/misc/usblcd.c
index 887ef953f3..12bad8a205 100644
--- a/drivers/usb/misc/usblcd.c
+++ b/drivers/usb/misc/usblcd.c
@@ -42,10 +42,14 @@ struct usb_lcd {
42 size_t bulk_in_size; /* the size of the receive buffer */ 42 size_t bulk_in_size; /* the size of the receive buffer */
43 __u8 bulk_in_endpointAddr; /* the address of the bulk in endpoint */ 43 __u8 bulk_in_endpointAddr; /* the address of the bulk in endpoint */
44 __u8 bulk_out_endpointAddr; /* the address of the bulk out endpoint */ 44 __u8 bulk_out_endpointAddr; /* the address of the bulk out endpoint */
45 struct kref kref; 45 struct kref kref;
46 struct semaphore limit_sem; /* to stop writes at full throttle from
47 * using up all RAM */
46}; 48};
47#define to_lcd_dev(d) container_of(d, struct usb_lcd, kref) 49#define to_lcd_dev(d) container_of(d, struct usb_lcd, kref)
48 50
51#define USB_LCD_CONCURRENT_WRITES 5
52
49static struct usb_driver lcd_driver; 53static struct usb_driver lcd_driver;
50static DEFINE_MUTEX(usb_lcd_open_mutex); 54static DEFINE_MUTEX(usb_lcd_open_mutex);
51 55
@@ -186,12 +190,13 @@ static void lcd_write_bulk_callback(struct urb *urb)
186 /* free up our allocated buffer */ 190 /* free up our allocated buffer */
187 usb_buffer_free(urb->dev, urb->transfer_buffer_length, 191 usb_buffer_free(urb->dev, urb->transfer_buffer_length,
188 urb->transfer_buffer, urb->transfer_dma); 192 urb->transfer_buffer, urb->transfer_dma);
193 up(&dev->limit_sem);
189} 194}
190 195
191static ssize_t lcd_write(struct file *file, const char __user * user_buffer, size_t count, loff_t *ppos) 196static ssize_t lcd_write(struct file *file, const char __user * user_buffer, size_t count, loff_t *ppos)
192{ 197{
193 struct usb_lcd *dev; 198 struct usb_lcd *dev;
194 int retval = 0; 199 int retval = 0, r;
195 struct urb *urb = NULL; 200 struct urb *urb = NULL;
196 char *buf = NULL; 201 char *buf = NULL;
197 202
@@ -201,10 +206,16 @@ static ssize_t lcd_write(struct file *file, const char __user * user_buffer, siz
201 if (count == 0) 206 if (count == 0)
202 goto exit; 207 goto exit;
203 208
209 r = down_interruptible(&dev->limit_sem);
210 if (r < 0)
211 return -EINTR;
212
204 /* create a urb, and a buffer for it, and copy the data to the urb */ 213 /* create a urb, and a buffer for it, and copy the data to the urb */
205 urb = usb_alloc_urb(0, GFP_KERNEL); 214 urb = usb_alloc_urb(0, GFP_KERNEL);
206 if (!urb) 215 if (!urb) {
207 return -ENOMEM; 216 retval = -ENOMEM;
217 goto err_no_buf;
218 }
208 219
209 buf = usb_buffer_alloc(dev->udev, count, GFP_KERNEL, &urb->transfer_dma); 220 buf = usb_buffer_alloc(dev->udev, count, GFP_KERNEL, &urb->transfer_dma);
210 if (!buf) { 221 if (!buf) {
@@ -239,6 +250,8 @@ exit:
239error: 250error:
240 usb_buffer_free(dev->udev, count, buf, urb->transfer_dma); 251 usb_buffer_free(dev->udev, count, buf, urb->transfer_dma);
241 usb_free_urb(urb); 252 usb_free_urb(urb);
253err_no_buf:
254 up(&dev->limit_sem);
242 return retval; 255 return retval;
243} 256}
244 257
@@ -277,6 +290,7 @@ static int lcd_probe(struct usb_interface *interface, const struct usb_device_id
277 goto error; 290 goto error;
278 } 291 }
279 kref_init(&dev->kref); 292 kref_init(&dev->kref);
293 sema_init(&dev->limit_sem, USB_LCD_CONCURRENT_WRITES);
280 294
281 dev->udev = usb_get_dev(interface_to_usbdev(interface)); 295 dev->udev = usb_get_dev(interface_to_usbdev(interface));
282 dev->interface = interface; 296 dev->interface = interface;
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index 2353679f60..da1c6f7f82 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -317,6 +317,7 @@ static struct usb_device_id id_table_combined [] = {
317 { USB_DEVICE(FTDI_VID, FTDI_ACTZWAVE_PID) }, 317 { USB_DEVICE(FTDI_VID, FTDI_ACTZWAVE_PID) },
318 { USB_DEVICE(FTDI_VID, FTDI_IRTRANS_PID) }, 318 { USB_DEVICE(FTDI_VID, FTDI_IRTRANS_PID) },
319 { USB_DEVICE(FTDI_VID, FTDI_IPLUS_PID) }, 319 { USB_DEVICE(FTDI_VID, FTDI_IPLUS_PID) },
320 { USB_DEVICE(FTDI_VID, FTDI_IPLUS2_PID) },
320 { USB_DEVICE(FTDI_VID, FTDI_DMX4ALL) }, 321 { USB_DEVICE(FTDI_VID, FTDI_DMX4ALL) },
321 { USB_DEVICE(FTDI_VID, FTDI_SIO_PID) }, 322 { USB_DEVICE(FTDI_VID, FTDI_SIO_PID) },
322 { USB_DEVICE(FTDI_VID, FTDI_8U232AM_PID) }, 323 { USB_DEVICE(FTDI_VID, FTDI_8U232AM_PID) },
diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h
index 33aee90472..d9e49716db 100644
--- a/drivers/usb/serial/ftdi_sio.h
+++ b/drivers/usb/serial/ftdi_sio.h
@@ -56,6 +56,7 @@
56 56
57/* iPlus device */ 57/* iPlus device */
58#define FTDI_IPLUS_PID 0xD070 /* Product Id */ 58#define FTDI_IPLUS_PID 0xD070 /* Product Id */
59#define FTDI_IPLUS2_PID 0xD071 /* Product Id */
59 60
60/* DMX4ALL DMX Interfaces */ 61/* DMX4ALL DMX Interfaces */
61#define FTDI_DMX4ALL 0xC850 62#define FTDI_DMX4ALL 0xC850
diff --git a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c
index 4807f96015..056e1923c4 100644
--- a/drivers/usb/serial/io_edgeport.c
+++ b/drivers/usb/serial/io_edgeport.c
@@ -3046,11 +3046,11 @@ static void edge_shutdown (struct usb_serial *serial)
3046 } 3046 }
3047 /* free up our endpoint stuff */ 3047 /* free up our endpoint stuff */
3048 if (edge_serial->is_epic) { 3048 if (edge_serial->is_epic) {
3049 usb_unlink_urb(edge_serial->interrupt_read_urb); 3049 usb_kill_urb(edge_serial->interrupt_read_urb);
3050 usb_free_urb(edge_serial->interrupt_read_urb); 3050 usb_free_urb(edge_serial->interrupt_read_urb);
3051 kfree(edge_serial->interrupt_in_buffer); 3051 kfree(edge_serial->interrupt_in_buffer);
3052 3052
3053 usb_unlink_urb(edge_serial->read_urb); 3053 usb_kill_urb(edge_serial->read_urb);
3054 usb_free_urb(edge_serial->read_urb); 3054 usb_free_urb(edge_serial->read_urb);
3055 kfree(edge_serial->bulk_in_buffer); 3055 kfree(edge_serial->bulk_in_buffer);
3056 } 3056 }
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 89f067d950..5d3999e3ff 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -111,7 +111,8 @@ static int option_send_setup(struct usb_serial_port *port);
111#define NOVATELWIRELESS_VENDOR_ID 0x1410 111#define NOVATELWIRELESS_VENDOR_ID 0x1410
112 112
113#define ANYDATA_VENDOR_ID 0x16d5 113#define ANYDATA_VENDOR_ID 0x16d5
114#define ANYDATA_PRODUCT_ID 0x6501 114#define ANYDATA_PRODUCT_ADU_E100A 0x6501
115#define ANYDATA_PRODUCT_ADU_500A 0x6502
115 116
116#define BANDRICH_VENDOR_ID 0x1A8D 117#define BANDRICH_VENDOR_ID 0x1A8D
117#define BANDRICH_PRODUCT_C100_1 0x1002 118#define BANDRICH_PRODUCT_C100_1 0x1002
@@ -169,7 +170,8 @@ static struct usb_device_id option_ids[] = {
169 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x2110) }, /* Novatel Merlin ES620 / Merlin ES720 / Ovation U720 */ 170 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x2110) }, /* Novatel Merlin ES620 / Merlin ES720 / Ovation U720 */
170 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x2130) }, /* Novatel Merlin ES620 SM Bus */ 171 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x2130) }, /* Novatel Merlin ES620 SM Bus */
171 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x2410) }, /* Novatel EU740 */ 172 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x2410) }, /* Novatel EU740 */
172 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ID) }, 173 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) },
174 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) },
173 { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_1) }, 175 { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_1) },
174 { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) }, 176 { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) },
175 { USB_DEVICE(DELL_VENDOR_ID, 0x8118) }, /* Dell Wireless 5510 Mobile Broadband HSDPA ExpressCard */ 177 { USB_DEVICE(DELL_VENDOR_ID, 0x8118) }, /* Dell Wireless 5510 Mobile Broadband HSDPA ExpressCard */
diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c
index 4203e2b1a7..3d505fd064 100644
--- a/drivers/usb/serial/ti_usb_3410_5052.c
+++ b/drivers/usb/serial/ti_usb_3410_5052.c
@@ -1555,15 +1555,17 @@ static int ti_restart_read(struct ti_port *tport, struct tty_struct *tty)
1555 spin_lock_irqsave(&tport->tp_lock, flags); 1555 spin_lock_irqsave(&tport->tp_lock, flags);
1556 1556
1557 if (tport->tp_read_urb_state == TI_READ_URB_STOPPED) { 1557 if (tport->tp_read_urb_state == TI_READ_URB_STOPPED) {
1558 tport->tp_read_urb_state = TI_READ_URB_RUNNING;
1558 urb = tport->tp_port->read_urb; 1559 urb = tport->tp_port->read_urb;
1560 spin_unlock_irqrestore(&tport->tp_lock, flags);
1559 urb->complete = ti_bulk_in_callback; 1561 urb->complete = ti_bulk_in_callback;
1560 urb->context = tport; 1562 urb->context = tport;
1561 urb->dev = tport->tp_port->serial->dev; 1563 urb->dev = tport->tp_port->serial->dev;
1562 status = usb_submit_urb(urb, GFP_KERNEL); 1564 status = usb_submit_urb(urb, GFP_KERNEL);
1565 } else {
1566 tport->tp_read_urb_state = TI_READ_URB_RUNNING;
1567 spin_unlock_irqrestore(&tport->tp_lock, flags);
1563 } 1568 }
1564 tport->tp_read_urb_state = TI_READ_URB_RUNNING;
1565
1566 spin_unlock_irqrestore(&tport->tp_lock, flags);
1567 1569
1568 return status; 1570 return status;
1569} 1571}