summaryrefslogtreecommitdiff
path: root/drivers/usb/eth
diff options
context:
space:
mode:
authorHayes Wang <hayeswang@realtek.com>2020-05-22 11:54:10 +0300
committerMarek Vasut <marex@denx.de>2020-05-29 20:18:55 +0300
commit3da0291ba9b4a429ed9226569c9014f5c7e13ac3 (patch)
tree7e3412c21e0104ee63c4e7bde6d31a27c40956e8 /drivers/usb/eth
parentab80137cc436e977ef91a154372ae5aeae3f4fb0 (diff)
downloadu-boot-3da0291ba9b4a429ed9226569c9014f5c7e13ac3.tar.xz
eth/r8152: fix assigning the wrong endpoint
Although I think it never occurs, the code doesn't make sense, because it may allow to assign an IN endpoint to ss->ep_out. Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Diffstat (limited to 'drivers/usb/eth')
-rw-r--r--drivers/usb/eth/r8152.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/usb/eth/r8152.c b/drivers/usb/eth/r8152.c
index d9908ecc15..f201a1789b 100644
--- a/drivers/usb/eth/r8152.c
+++ b/drivers/usb/eth/r8152.c
@@ -1354,9 +1354,8 @@ int r8152_eth_probe(struct usb_device *dev, unsigned int ifnum,
struct usb_interface *iface;
struct usb_interface_descriptor *iface_desc;
int ep_in_found = 0, ep_out_found = 0;
- int i;
-
struct r8152 *tp;
+ int i;
/* let's examine the device now */
iface = &dev->config.if_desc[ifnum];
@@ -1399,10 +1398,13 @@ int r8152_eth_probe(struct usb_device *dev, unsigned int ifnum,
if ((iface->ep_desc[i].bmAttributes &
USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_BULK) {
u8 ep_addr = iface->ep_desc[i].bEndpointAddress;
- if ((ep_addr & USB_DIR_IN) && !ep_in_found) {
- ss->ep_in = ep_addr &
- USB_ENDPOINT_NUMBER_MASK;
- ep_in_found = 1;
+
+ if (ep_addr & USB_DIR_IN) {
+ if (!ep_in_found) {
+ ss->ep_in = ep_addr &
+ USB_ENDPOINT_NUMBER_MASK;
+ ep_in_found = 1;
+ }
} else {
if (!ep_out_found) {
ss->ep_out = ep_addr &