MFC r203144
Add null check on quirk lookup and add a couple of umass quirks. Submitted by: Hans Petter Selesky
This commit is contained in:
parent
401b356e9b
commit
ce176213dd
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/stable/8/; revision=206297
@ -169,12 +169,14 @@ static struct usb_quirk_entry usb_quirks[USB_DEV_QUIRKS_MAX] = {
|
|||||||
USB_QUIRK(CENTURY, EX35QUAT, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_BBB,
|
USB_QUIRK(CENTURY, EX35QUAT, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_BBB,
|
||||||
UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_FORCE_SHORT_INQ,
|
UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_FORCE_SHORT_INQ,
|
||||||
UQ_MSC_NO_START_STOP, UQ_MSC_IGNORE_RESIDUE),
|
UQ_MSC_NO_START_STOP, UQ_MSC_IGNORE_RESIDUE),
|
||||||
|
USB_QUIRK(CENTURY, EX35SW4_SB4, 0x0000, 0xffff, UQ_MSC_NO_SYNC_CACHE),
|
||||||
USB_QUIRK(CYPRESS, XX6830XX, 0x0000, 0xffff, UQ_MSC_NO_GETMAXLUN,
|
USB_QUIRK(CYPRESS, XX6830XX, 0x0000, 0xffff, UQ_MSC_NO_GETMAXLUN,
|
||||||
UQ_MSC_NO_SYNC_CACHE),
|
UQ_MSC_NO_SYNC_CACHE),
|
||||||
USB_QUIRK(DESKNOTE, UCR_61S2B, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_BBB,
|
USB_QUIRK(DESKNOTE, UCR_61S2B, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_BBB,
|
||||||
UQ_MSC_FORCE_PROTO_SCSI),
|
UQ_MSC_FORCE_PROTO_SCSI),
|
||||||
USB_QUIRK(DMI, CFSM_RW, 0x0000, 0xffff, UQ_MSC_FORCE_PROTO_SCSI,
|
USB_QUIRK(DMI, CFSM_RW, 0x0000, 0xffff, UQ_MSC_FORCE_PROTO_SCSI,
|
||||||
UQ_MSC_NO_GETMAXLUN),
|
UQ_MSC_NO_GETMAXLUN),
|
||||||
|
USB_QUIRK(DMI, DISK, 0x000, 0xffff, UQ_MSC_NO_SYNC_CACHE),
|
||||||
USB_QUIRK(EPSON, STYLUS_875DC, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_CBI,
|
USB_QUIRK(EPSON, STYLUS_875DC, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_CBI,
|
||||||
UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_NO_INQUIRY),
|
UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_NO_INQUIRY),
|
||||||
USB_QUIRK(EPSON, STYLUS_895, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_BBB,
|
USB_QUIRK(EPSON, STYLUS_895, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_BBB,
|
||||||
@ -259,8 +261,6 @@ static struct usb_quirk_entry usb_quirks[USB_DEV_QUIRKS_MAX] = {
|
|||||||
UQ_MSC_FORCE_PROTO_SCSI),
|
UQ_MSC_FORCE_PROTO_SCSI),
|
||||||
USB_QUIRK(MITSUMI, CDRRW, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_CBI |
|
USB_QUIRK(MITSUMI, CDRRW, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_CBI |
|
||||||
UQ_MSC_FORCE_PROTO_ATAPI),
|
UQ_MSC_FORCE_PROTO_ATAPI),
|
||||||
USB_QUIRK(MITSUMI, FDD, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_BBB,
|
|
||||||
UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_NO_GETMAXLUN),
|
|
||||||
USB_QUIRK(MOTOROLA2, E398, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_BBB,
|
USB_QUIRK(MOTOROLA2, E398, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_BBB,
|
||||||
UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_FORCE_SHORT_INQ,
|
UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_FORCE_SHORT_INQ,
|
||||||
UQ_MSC_NO_INQUIRY_EVPD, UQ_MSC_NO_GETMAXLUN),
|
UQ_MSC_NO_INQUIRY_EVPD, UQ_MSC_NO_GETMAXLUN),
|
||||||
@ -680,6 +680,10 @@ usb_quirk_ioctl(unsigned long cmd, caddr_t data,
|
|||||||
mtx_lock(&usb_quirk_mtx);
|
mtx_lock(&usb_quirk_mtx);
|
||||||
pqe = usb_quirk_get_entry(pgq->vid, pgq->pid,
|
pqe = usb_quirk_get_entry(pgq->vid, pgq->pid,
|
||||||
pgq->bcdDeviceLow, pgq->bcdDeviceHigh, 1);
|
pgq->bcdDeviceLow, pgq->bcdDeviceHigh, 1);
|
||||||
|
if (pqe == NULL) {
|
||||||
|
mtx_unlock(&usb_quirk_mtx);
|
||||||
|
return (EINVAL);
|
||||||
|
}
|
||||||
for (x = 0; x != USB_SUB_QUIRKS_MAX; x++) {
|
for (x = 0; x != USB_SUB_QUIRKS_MAX; x++) {
|
||||||
if (pqe->quirks[x] == UQ_NONE) {
|
if (pqe->quirks[x] == UQ_NONE) {
|
||||||
pqe->quirks[x] = y;
|
pqe->quirks[x] = y;
|
||||||
@ -714,6 +718,10 @@ usb_quirk_ioctl(unsigned long cmd, caddr_t data,
|
|||||||
mtx_lock(&usb_quirk_mtx);
|
mtx_lock(&usb_quirk_mtx);
|
||||||
pqe = usb_quirk_get_entry(pgq->vid, pgq->pid,
|
pqe = usb_quirk_get_entry(pgq->vid, pgq->pid,
|
||||||
pgq->bcdDeviceLow, pgq->bcdDeviceHigh, 0);
|
pgq->bcdDeviceLow, pgq->bcdDeviceHigh, 0);
|
||||||
|
if (pqe == NULL) {
|
||||||
|
mtx_unlock(&usb_quirk_mtx);
|
||||||
|
return (EINVAL);
|
||||||
|
}
|
||||||
for (x = 0; x != USB_SUB_QUIRKS_MAX; x++) {
|
for (x = 0; x != USB_SUB_QUIRKS_MAX; x++) {
|
||||||
if (pqe->quirks[x] == y) {
|
if (pqe->quirks[x] == y) {
|
||||||
pqe->quirks[x] = UQ_NONE;
|
pqe->quirks[x] = UQ_NONE;
|
||||||
|
Loading…
Reference in New Issue
Block a user