History

Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6

* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6: uhci-hcd: fix list access bug USB: Support for ELECOM LD-USB20 in pegasus USB: Add VIA quirk fixup for VT8235 usb2 USB: rtl8150_disconnect() needs tasklet_kill() USB Storage: unusual_devs.h for Sony Ericsson M600i USB Storage: Remove the finecam3 unusual_devs entry UHCI: don't stop at an Iso error usb gadget: g_ether spinlock recursion fix USB: add all wacom device to hid-core.c blacklist hid-core.c: Adds all GTCO CalComp Digitizers and InterWrite School Products to blacklist USB floppy drive SAMSUNG SFD-321U/EP detected 8 times

Linus Torvalds committed 20 years ago

Commit d7387522 parents a930363 db59b468 files · +149 −79Browse files

Unified · Split

8 files
  1. drivers/pci/quirks.c +1 −0
  2. drivers/usb/gadget/ether.c +31 −14
  3. drivers/usb/host/uhci-q.c +2 −2
  4. drivers/usb/input/hid-core.c +96 −53
  5. drivers/usb/net/pegasus.h +3 −0
  6. drivers/usb/net/rtl8150.c +1 −0
  7. drivers/usb/storage/unusual_devs.h +14 −10
  8. include/linux/pci_ids.h +1 −0
drivers/pci/quirks.c+1−0
@@ -667,6 +667,7 @@ DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_0, quirk_vi · 666 unmodified lines
667667 DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, quirk_via_irq);
668668 DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_2, quirk_via_irq);
669669 DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_via_irq);
670+DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8235_USB_2, quirk_via_irq);
670671 DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_irq);
671672 DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_via_irq);
672673 DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5, quirk_via_irq);
drivers/usb/gadget/ether.c+31−14
@@ -117,6 +117,8 @@ struct eth_dev { · 116 unmodified lines
117117 struct usb_ep *in_ep, *out_ep, *status_ep;
118118 const struct usb_endpoint_descriptor
119119 *in, *out, *status;
120+
121+ spinlock_t req_lock;
120122 struct list_head tx_reqs, rx_reqs;
121123
122124 struct net_device *net;
@@ -1066,21 +1068,31 @@ static void eth_reset_config (struct eth_dev *dev) · 943 unmodified lines
10661068 */
10671069 if (dev->in) {
10681070 usb_ep_disable (dev->in_ep);
1071+ spin_lock(&dev->req_lock);
10691072 while (likely (!list_empty (&dev->tx_reqs))) {
10701073 req = container_of (dev->tx_reqs.next,
10711074 struct usb_request, list);
10721075 list_del (&req->list);
1076+
1077+ spin_unlock(&dev->req_lock);
10731078 usb_ep_free_request (dev->in_ep, req);
1079+ spin_lock(&dev->req_lock);
10741080 }
1081+ spin_unlock(&dev->req_lock);
10751082 }
10761083 if (dev->out) {
10771084 usb_ep_disable (dev->out_ep);
1085+ spin_lock(&dev->req_lock);
10781086 while (likely (!list_empty (&dev->rx_reqs))) {
10791087 req = container_of (dev->rx_reqs.next,
10801088 struct usb_request, list);
10811089 list_del (&req->list);
1090+
1091+ spin_unlock(&dev->req_lock);
10821092 usb_ep_free_request (dev->out_ep, req);
1093+ spin_lock(&dev->req_lock);
10831094 }
1095+ spin_unlock(&dev->req_lock);
10841096 }
10851097
10861098 if (dev->status) {
@@ -1659,9 +1671,9 @@ enomem: · 572 unmodified lines
16591671 if (retval) {
16601672 DEBUG (dev, "rx submit --> %d\n", retval);
16611673 dev_kfree_skb_any (skb);
1662− spin_lock (&dev->lock);
1674+ spin_lock(&dev->req_lock);
16631675 list_add (&req->list, &dev->rx_reqs);
1664− spin_unlock (&dev->lock);
1676+ spin_unlock(&dev->req_lock);
16651677 }
16661678 return retval;
16671679 }
@@ -1730,8 +1742,9 @@ quiesce: · 62 unmodified lines
17301742 dev_kfree_skb_any (skb);
17311743 if (!netif_running (dev->net)) {
17321744 clean:
1733− /* nobody reading rx_reqs, so no dev->lock */
1745+ spin_lock(&dev->req_lock);
17341746 list_add (&req->list, &dev->rx_reqs);
1747+ spin_unlock(&dev->req_lock);
17351748 req = NULL;
17361749 }
17371750 if (req)
@@ -1782,15 +1795,18 @@ static int alloc_requests (struct eth_dev *dev, unsigned n, gfp_t gfp_flags) · 44 unmodified lines
17821795 {
17831796 int status;
17841797
1798+ spin_lock(&dev->req_lock);
17851799 status = prealloc (&dev->tx_reqs, dev->in_ep, n, gfp_flags);
17861800 if (status < 0)
17871801 goto fail;
17881802 status = prealloc (&dev->rx_reqs, dev->out_ep, n, gfp_flags);
17891803 if (status < 0)
17901804 goto fail;
1791− return 0;
1805+ goto done;
17921806 fail:
17931807 DEBUG (dev, "can't alloc requests\n");
1808+done:
1809+ spin_unlock(&dev->req_lock);
17941810 return status;
17951811 }
17961812
@@ -1800,21 +1816,21 @@ static void rx_fill (struct eth_dev *dev, gfp_t gfp_flags) · 3 unmodified lines
18001816 unsigned long flags;
18011817
18021818 /* fill unused rxq slots with some skb */
1803− spin_lock_irqsave (&dev->lock, flags);
1819+ spin_lock_irqsave(&dev->req_lock, flags);
18041820 while (!list_empty (&dev->rx_reqs)) {
18051821 req = container_of (dev->rx_reqs.next,
18061822 struct usb_request, list);
18071823 list_del_init (&req->list);
1808− spin_unlock_irqrestore (&dev->lock, flags);
1824+ spin_unlock_irqrestore(&dev->req_lock, flags);
18091825
18101826 if (rx_submit (dev, req, gfp_flags) < 0) {
18111827 defer_kevent (dev, WORK_RX_MEMORY);
18121828 return;
18131829 }
18141830
1815− spin_lock_irqsave (&dev->lock, flags);
1831+ spin_lock_irqsave(&dev->req_lock, flags);
18161832 }
1817− spin_unlock_irqrestore (&dev->lock, flags);
1833+ spin_unlock_irqrestore(&dev->req_lock, flags);
18181834 }
18191835
18201836 static void eth_work (void *_dev)
@@ -1848,9 +1864,9 @@ static void tx_complete (struct usb_ep *ep, struct usb_request *req) · 27 unmodified lines
18481864 }
18491865 dev->stats.tx_packets++;
18501866
1851− spin_lock (&dev->lock);
1867+ spin_lock(&dev->req_lock);
18521868 list_add (&req->list, &dev->tx_reqs);
1853− spin_unlock (&dev->lock);
1869+ spin_unlock(&dev->req_lock);
18541870 dev_kfree_skb_any (skb);
18551871
18561872 atomic_dec (&dev->tx_qlen);
@@ -1896,12 +1912,12 @@ static int eth_start_xmit (struct sk_buff *skb, struct net_device *net) · 39 unmodified lines
18961912 /* ignores USB_CDC_PACKET_TYPE_DIRECTED */
18971913 }
18981914
1899− spin_lock_irqsave (&dev->lock, flags);
1915+ spin_lock_irqsave(&dev->req_lock, flags);
19001916 req = container_of (dev->tx_reqs.next, struct usb_request, list);
19011917 list_del (&req->list);
19021918 if (list_empty (&dev->tx_reqs))
19031919 netif_stop_queue (net);
1904− spin_unlock_irqrestore (&dev->lock, flags);
1920+ spin_unlock_irqrestore(&dev->req_lock, flags);
19051921
19061922 /* no buffer copies needed, unless the network stack did it
19071923 * or the hardware can't use skb buffers.
@@ -1955,11 +1971,11 @@ static int eth_start_xmit (struct sk_buff *skb, struct net_device *net) · 47 unmodified lines
19551971 drop:
19561972 dev->stats.tx_dropped++;
19571973 dev_kfree_skb_any (skb);
1958− spin_lock_irqsave (&dev->lock, flags);
1974+ spin_lock_irqsave(&dev->req_lock, flags);
19591975 if (list_empty (&dev->tx_reqs))
19601976 netif_start_queue (net);
19611977 list_add (&req->list, &dev->tx_reqs);
1962− spin_unlock_irqrestore (&dev->lock, flags);
1978+ spin_unlock_irqrestore(&dev->req_lock, flags);
19631979 }
19641980 return 0;
19651981 }
@@ -2378,6 +2394,7 @@ autoconf_fail: · 412 unmodified lines
23782394 return status;
23792395 dev = netdev_priv(net);
23802396 spin_lock_init (&dev->lock);
2397+ spin_lock_init (&dev->req_lock);
23812398 INIT_WORK (&dev->work, eth_work, dev);
23822399 INIT_LIST_HEAD (&dev->tx_reqs);
23832400 INIT_LIST_HEAD (&dev->rx_reqs);
drivers/usb/host/uhci-q.c+2−2
@@ -372,7 +372,7 @@ static void uhci_fixup_toggles(struct uhci_qh *qh, int skip_first) · 371 unmodified lines
372372 * need to change any toggles in this URB */
373373 td = list_entry(urbp->td_list.next, struct uhci_td, list);
374374 if (toggle > 1 || uhci_toggle(td_token(td)) == toggle) {
375− td = list_entry(urbp->td_list.next, struct uhci_td,
375+ td = list_entry(urbp->td_list.prev, struct uhci_td,
376376 list);
377377 toggle = uhci_toggle(td_token(td)) ^ 1;
378378
@@ -1348,7 +1348,7 @@ static void uhci_scan_qh(struct uhci_hcd *uhci, struct uhci_qh *qh, · 969 unmodified lines
13481348 }
13491349
13501350 uhci_giveback_urb(uhci, qh, urb, regs);
1351− if (status < 0)
1351+ if (status < 0 && qh->type != USB_ENDPOINT_XFER_ISOC)
13521352 break;
13531353 }
13541354
drivers/usb/input/hid-core.c+96−53
@@ -1411,17 +1411,54 @@ void hid_init_reports(struct hid_device *hid) · 1410 unmodified lines
14111411 warn("timeout initializing reports");
14121412 }
14131413
1414+#define USB_VENDOR_ID_GTCO 0x078c
1415+#define USB_DEVICE_ID_GTCO_90 0x0090
1416+#define USB_DEVICE_ID_GTCO_100 0x0100
1417+#define USB_DEVICE_ID_GTCO_101 0x0101
1418+#define USB_DEVICE_ID_GTCO_103 0x0103
1419+#define USB_DEVICE_ID_GTCO_104 0x0104
1420+#define USB_DEVICE_ID_GTCO_105 0x0105
1421+#define USB_DEVICE_ID_GTCO_106 0x0106
1422+#define USB_DEVICE_ID_GTCO_107 0x0107
1423+#define USB_DEVICE_ID_GTCO_108 0x0108
1424+#define USB_DEVICE_ID_GTCO_200 0x0200
1425+#define USB_DEVICE_ID_GTCO_201 0x0201
1426+#define USB_DEVICE_ID_GTCO_202 0x0202
1427+#define USB_DEVICE_ID_GTCO_203 0x0203
1428+#define USB_DEVICE_ID_GTCO_204 0x0204
1429+#define USB_DEVICE_ID_GTCO_205 0x0205
1430+#define USB_DEVICE_ID_GTCO_206 0x0206
1431+#define USB_DEVICE_ID_GTCO_207 0x0207
1432+#define USB_DEVICE_ID_GTCO_300 0x0300
1433+#define USB_DEVICE_ID_GTCO_301 0x0301
1434+#define USB_DEVICE_ID_GTCO_302 0x0302
1435+#define USB_DEVICE_ID_GTCO_303 0x0303
1436+#define USB_DEVICE_ID_GTCO_304 0x0304
1437+#define USB_DEVICE_ID_GTCO_305 0x0305
1438+#define USB_DEVICE_ID_GTCO_306 0x0306
1439+#define USB_DEVICE_ID_GTCO_307 0x0307
1440+#define USB_DEVICE_ID_GTCO_308 0x0308
1441+#define USB_DEVICE_ID_GTCO_309 0x0309
1442+#define USB_DEVICE_ID_GTCO_400 0x0400
1443+#define USB_DEVICE_ID_GTCO_401 0x0401
1444+#define USB_DEVICE_ID_GTCO_402 0x0402
1445+#define USB_DEVICE_ID_GTCO_403 0x0403
1446+#define USB_DEVICE_ID_GTCO_404 0x0404
1447+#define USB_DEVICE_ID_GTCO_404 0x0405
1448+#define USB_DEVICE_ID_GTCO_500 0x0500
1449+#define USB_DEVICE_ID_GTCO_501 0x0501
1450+#define USB_DEVICE_ID_GTCO_502 0x0502
1451+#define USB_DEVICE_ID_GTCO_503 0x0503
1452+#define USB_DEVICE_ID_GTCO_504 0x0504
1453+#define USB_DEVICE_ID_GTCO_1000 0x1000
1454+#define USB_DEVICE_ID_GTCO_1001 0x1001
1455+#define USB_DEVICE_ID_GTCO_1002 0x1002
1456+#define USB_DEVICE_ID_GTCO_1003 0x1003
1457+#define USB_DEVICE_ID_GTCO_1004 0x1004
1458+#define USB_DEVICE_ID_GTCO_1005 0x1005
1459+#define USB_DEVICE_ID_GTCO_1006 0x1006
1460+
14141461 #define USB_VENDOR_ID_WACOM 0x056a
1415−#define USB_DEVICE_ID_WACOM_PENPARTNER 0x0000
1416−#define USB_DEVICE_ID_WACOM_GRAPHIRE 0x0010
1417−#define USB_DEVICE_ID_WACOM_INTUOS 0x0020
1418−#define USB_DEVICE_ID_WACOM_PL 0x0030
1419−#define USB_DEVICE_ID_WACOM_INTUOS2 0x0040
1420−#define USB_DEVICE_ID_WACOM_VOLITO 0x0060
1421−#define USB_DEVICE_ID_WACOM_PTU 0x0003
1422−#define USB_DEVICE_ID_WACOM_INTUOS3 0x00B0
1423−#define USB_DEVICE_ID_WACOM_CINTIQ 0x003F
1424−#define USB_DEVICE_ID_WACOM_DTF 0x00C0
14251462
14261463 #define USB_VENDOR_ID_ACECAD 0x0460
14271464 #define USB_DEVICE_ID_ACECAD_FLAIR 0x0004
@@ -1588,6 +1625,51 @@ static const struct hid_blacklist { · 160 unmodified lines
15881625 { USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_8_8_IF_KIT, HID_QUIRK_IGNORE },
15891626 { USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_POWERMATE, HID_QUIRK_IGNORE },
15901627 { USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_SOUNDKNOB, HID_QUIRK_IGNORE },
1628+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_90, HID_QUIRK_IGNORE },
1629+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_100, HID_QUIRK_IGNORE },
1630+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_101, HID_QUIRK_IGNORE },
1631+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_103, HID_QUIRK_IGNORE },
1632+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_104, HID_QUIRK_IGNORE },
1633+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_105, HID_QUIRK_IGNORE },
1634+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_106, HID_QUIRK_IGNORE },
1635+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_107, HID_QUIRK_IGNORE },
1636+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_108, HID_QUIRK_IGNORE },
1637+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_200, HID_QUIRK_IGNORE },
1638+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_201, HID_QUIRK_IGNORE },
1639+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_202, HID_QUIRK_IGNORE },
1640+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_203, HID_QUIRK_IGNORE },
1641+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_204, HID_QUIRK_IGNORE },
1642+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_205, HID_QUIRK_IGNORE },
1643+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_206, HID_QUIRK_IGNORE },
1644+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_207, HID_QUIRK_IGNORE },
1645+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_300, HID_QUIRK_IGNORE },
1646+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_301, HID_QUIRK_IGNORE },
1647+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_302, HID_QUIRK_IGNORE },
1648+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_303, HID_QUIRK_IGNORE },
1649+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_304, HID_QUIRK_IGNORE },
1650+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_305, HID_QUIRK_IGNORE },
1651+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_306, HID_QUIRK_IGNORE },
1652+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_307, HID_QUIRK_IGNORE },
1653+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_308, HID_QUIRK_IGNORE },
1654+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_309, HID_QUIRK_IGNORE },
1655+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_400, HID_QUIRK_IGNORE },
1656+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_401, HID_QUIRK_IGNORE },
1657+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_402, HID_QUIRK_IGNORE },
1658+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_403, HID_QUIRK_IGNORE },
1659+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_404, HID_QUIRK_IGNORE },
1660+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_404, HID_QUIRK_IGNORE },
1661+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_500, HID_QUIRK_IGNORE },
1662+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_501, HID_QUIRK_IGNORE },
1663+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_502, HID_QUIRK_IGNORE },
1664+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_503, HID_QUIRK_IGNORE },
1665+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_504, HID_QUIRK_IGNORE },
1666+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1000, HID_QUIRK_IGNORE },
1667+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1001, HID_QUIRK_IGNORE },
1668+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1002, HID_QUIRK_IGNORE },
1669+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1003, HID_QUIRK_IGNORE },
1670+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1004, HID_QUIRK_IGNORE },
1671+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1005, HID_QUIRK_IGNORE },
1672+ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1006, HID_QUIRK_IGNORE },
15911673 { USB_VENDOR_ID_KBGEAR, USB_DEVICE_ID_KBGEAR_JAMSTUDIO, HID_QUIRK_IGNORE },
15921674 { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CASSY, HID_QUIRK_IGNORE },
15931675 { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POCKETCASSY, HID_QUIRK_IGNORE },
@@ -1617,49 +1699,6 @@ static const struct hid_blacklist { · 23 unmodified lines
16171699 { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_GOTEMP, HID_QUIRK_IGNORE },
16181700 { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_SKIP, HID_QUIRK_IGNORE },
16191701 { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_CYCLOPS, HID_QUIRK_IGNORE },
1620− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PENPARTNER, HID_QUIRK_IGNORE },
1621− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE, HID_QUIRK_IGNORE },
1622− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE + 1, HID_QUIRK_IGNORE },
1623− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE + 2, HID_QUIRK_IGNORE },
1624− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE + 3, HID_QUIRK_IGNORE },
1625− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE + 4, HID_QUIRK_IGNORE },
1626− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS, HID_QUIRK_IGNORE },
1627− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS + 1, HID_QUIRK_IGNORE },
1628− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS + 2, HID_QUIRK_IGNORE },
1629− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS + 3, HID_QUIRK_IGNORE },
1630− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS + 4, HID_QUIRK_IGNORE },
1631− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL, HID_QUIRK_IGNORE },
1632− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 1, HID_QUIRK_IGNORE },
1633− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 2, HID_QUIRK_IGNORE },
1634− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 3, HID_QUIRK_IGNORE },
1635− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 4, HID_QUIRK_IGNORE },
1636− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 5, HID_QUIRK_IGNORE },
1637− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 7, HID_QUIRK_IGNORE },
1638− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 8, HID_QUIRK_IGNORE },
1639− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 9, HID_QUIRK_IGNORE },
1640− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 1, HID_QUIRK_IGNORE },
1641− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 2, HID_QUIRK_IGNORE },
1642− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 3, HID_QUIRK_IGNORE },
1643− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 4, HID_QUIRK_IGNORE },
1644− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 5, HID_QUIRK_IGNORE },
1645− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 7, HID_QUIRK_IGNORE },
1646− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_VOLITO, HID_QUIRK_IGNORE },
1647− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_VOLITO + 1, HID_QUIRK_IGNORE },
1648− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_VOLITO + 2, HID_QUIRK_IGNORE },
1649− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_VOLITO + 3, HID_QUIRK_IGNORE },
1650− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_VOLITO + 4, HID_QUIRK_IGNORE },
1651− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE + 5, HID_QUIRK_IGNORE },
1652− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE + 6, HID_QUIRK_IGNORE },
1653− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PTU, HID_QUIRK_IGNORE },
1654− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3, HID_QUIRK_IGNORE },
1655− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3 + 1, HID_QUIRK_IGNORE },
1656− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3 + 2, HID_QUIRK_IGNORE },
1657− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3 + 3, HID_QUIRK_IGNORE },
1658− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3 + 4, HID_QUIRK_IGNORE },
1659− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3 + 5, HID_QUIRK_IGNORE },
1660− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_CINTIQ, HID_QUIRK_IGNORE },
1661− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_DTF, HID_QUIRK_IGNORE },
1662− { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_DTF + 3, HID_QUIRK_IGNORE },
16631702 { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_4_PHIDGETSERVO_20, HID_QUIRK_IGNORE },
16641703 { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_1_PHIDGETSERVO_20, HID_QUIRK_IGNORE },
16651704 { USB_VENDOR_ID_YEALINK, USB_DEVICE_ID_YEALINK_P1K_P4K_B2K, HID_QUIRK_IGNORE },
@@ -1778,6 +1817,10 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf) · 112 unmodified lines
17781817 char *rdesc;
17791818 int n, len, insize = 0;
17801819
1820+ /* Ignore all Wacom devices */
1821+ if (dev->descriptor.idVendor == USB_VENDOR_ID_WACOM)
1822+ return NULL;
1823+
17811824 for (n = 0; hid_blacklist[n].idVendor; n++)
17821825 if ((hid_blacklist[n].idVendor == le16_to_cpu(dev->descriptor.idVendor)) &&
17831826 (hid_blacklist[n].idProduct == le16_to_cpu(dev->descriptor.idProduct)))
drivers/usb/net/pegasus.h+3−0
@@ -131,6 +131,7 @@ struct usb_eth_dev { · 130 unmodified lines
131131 #define VENDOR_COREGA 0x07aa
132132 #define VENDOR_DLINK 0x2001
133133 #define VENDOR_ELCON 0x0db7
134+#define VENDOR_ELECOM 0x056e
134135 #define VENDOR_ELSA 0x05cc
135136 #define VENDOR_GIGABYTE 0x1044
136137 #define VENDOR_HAWKING 0x0e66
@@ -233,6 +234,8 @@ PEGASUS_DEV( "D-Link DSB-650", VENDOR_DLINK, 0xabc1, · 96 unmodified lines
233234 DEFAULT_GPIO_RESET )
234235 PEGASUS_DEV( "GOLDPFEIL USB Adapter", VENDOR_ELCON, 0x0002,
235236 DEFAULT_GPIO_RESET | PEGASUS_II | HAS_HOME_PNA )
237+PEGASUS_DEV( "ELECOM USB Ethernet LD-USB20", VENDOR_ELECOM, 0x4010,
238+ DEFAULT_GPIO_RESET | PEGASUS_II )
236239 PEGASUS_DEV( "EasiDock Ethernet", VENDOR_MOBILITY, 0x0304,
237240 DEFAULT_GPIO_RESET )
238241 PEGASUS_DEV( "Elsa Micolink USB2Ethernet", VENDOR_ELSA, 0x3000,
drivers/usb/net/rtl8150.c+1−0
@@ -972,6 +972,7 @@ static void rtl8150_disconnect(struct usb_interface *intf) · 971 unmodified lines
972972 if (dev) {
973973 set_bit(RTL8150_UNPLUG, &dev->flags);
974974 tasklet_disable(&dev->tl);
975+ tasklet_kill(&dev->tl);
975976 unregister_netdev(dev->netdev);
976977 unlink_all_urbs(dev);
977978 free_all_urbs(dev);
drivers/usb/storage/unusual_devs.h+14−10
@@ -241,16 +241,6 @@ UNUSUAL_DEV( 0x0482, 0x0103, 0x0100, 0x0100, · 240 unmodified lines
241241 "Finecam S5",
242242 US_SC_DEVICE, US_PR_DEVICE, NULL, US_FL_FIX_INQUIRY),
243243
244−/* Patch for Kyocera Finecam L3
245− * Submitted by Michael Krauth <michael.krauth@web.de>
246− * and Alessandro Fracchetti <al.fracchetti@tin.it>
247− */
248−UNUSUAL_DEV( 0x0482, 0x0105, 0x0100, 0x0100,
249− "Kyocera",
250− "Finecam L3",
251− US_SC_SCSI, US_PR_BULK, NULL,
252− US_FL_FIX_INQUIRY),
253−
254244 /* Reported by Paul Stewart <stewart@wetlogic.net>
255245 * This entry is needed because the device reports Sub=ff */
256246 UNUSUAL_DEV( 0x04a4, 0x0004, 0x0001, 0x0001,
@@ -599,6 +589,13 @@ UNUSUAL_DEV( 0x054c, 0x0099, 0x0000, 0x9999, · 342 unmodified lines
599589 US_SC_DEVICE, US_PR_DEVICE, NULL,
600590 US_FL_FIX_INQUIRY ),
601591
592+/* floppy reports multiple luns */
593+UNUSUAL_DEV( 0x055d, 0x2020, 0x0000, 0x0210,
594+ "SAMSUNG",
595+ "SFD-321U [FW 0C]",
596+ US_SC_DEVICE, US_PR_DEVICE, NULL,
597+ US_FL_SINGLE_LUN ),
598+
602599
603600 UNUSUAL_DEV( 0x057b, 0x0000, 0x0000, 0x0299,
604601 "Y-E Data",
@@ -1257,6 +1254,13 @@ UNUSUAL_DEV( 0x0fce, 0xd008, 0x0000, 0x0000, · 652 unmodified lines
12571254 US_SC_DEVICE, US_PR_DEVICE, NULL,
12581255 US_FL_NO_WP_DETECT ),
12591256
1257+/* Reported by Emmanuel Vasilakis <evas@forthnet.gr> */
1258+UNUSUAL_DEV( 0x0fce, 0xe031, 0x0000, 0x0000,
1259+ "Sony Ericsson",
1260+ "M600i",
1261+ US_SC_DEVICE, US_PR_DEVICE, NULL,
1262+ US_FL_FIX_CAPACITY ),
1263+
12601264 /* Reported by Kevin Cernekee <kpc-usbdev@gelato.uiuc.edu>
12611265 * Tested on hardware version 1.10.
12621266 * Entry is needed only for the initializer function override.
include/linux/pci_ids.h+1−0
@@ -1292,6 +1292,7 @@ · 1291 unmodified lines
12921292 #define PCI_DEVICE_ID_VIA_8367_0 0x3099
12931293 #define PCI_DEVICE_ID_VIA_8653_0 0x3101
12941294 #define PCI_DEVICE_ID_VIA_8622 0x3102
1295+#define PCI_DEVICE_ID_VIA_8235_USB_2 0x3104
12951296 #define PCI_DEVICE_ID_VIA_8233C_0 0x3109
12961297 #define PCI_DEVICE_ID_VIA_8361 0x3112
12971298 #define PCI_DEVICE_ID_VIA_XM266 0x3116