diff options
author | Pete Zaitcev <zaitcev@redhat.com> | 2007-03-08 19:56:23 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-04-27 13:28:34 -0700 |
commit | 643616e6780b26dd8c9cea0b9344bb5d7aeae29d (patch) | |
tree | 063e1dd32c86c5fe3a6319c5c8df84aec7b3324f /drivers/block/ub.c | |
parent | c4cabd28c73116716dcfd0d5f91414b48c0cf5ce (diff) | |
download | op-kernel-dev-643616e6780b26dd8c9cea0b9344bb5d7aeae29d.zip op-kernel-dev-643616e6780b26dd8c9cea0b9344bb5d7aeae29d.tar.gz |
ub: Bind to first endpoint, not to last
The usb-storage switched to binding to first endpoint recently. Apparently,
there are devices out there with extra endpoints. It is perfectly legal.
Signed-off-by: Pete Zaitcev <zaitcev@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/block/ub.c')
-rw-r--r-- | drivers/block/ub.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/block/ub.c b/drivers/block/ub.c index 2098eff..746a118 100644 --- a/drivers/block/ub.c +++ b/drivers/block/ub.c @@ -2132,10 +2132,13 @@ static int ub_get_pipes(struct ub_dev *sc, struct usb_device *dev, if ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_BULK) { /* BULK in or out? */ - if (ep->bEndpointAddress & USB_DIR_IN) - ep_in = ep; - else - ep_out = ep; + if (ep->bEndpointAddress & USB_DIR_IN) { + if (ep_in == NULL) + ep_in = ep; + } else { + if (ep_out == NULL) + ep_out = ep; + } } } |