diff options
| -rw-r--r-- | drivers/usb/usbip/vudc_tx.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/usb/usbip/vudc_tx.c b/drivers/usb/usbip/vudc_tx.c index 1440ae0919ec..3ccb17c3e840 100644 --- a/drivers/usb/usbip/vudc_tx.c +++ b/drivers/usb/usbip/vudc_tx.c | |||
| @@ -85,6 +85,13 @@ static int v_send_ret_submit(struct vudc *udc, struct urbp *urb_p) | |||
| 85 | memset(&pdu_header, 0, sizeof(pdu_header)); | 85 | memset(&pdu_header, 0, sizeof(pdu_header)); |
| 86 | memset(&msg, 0, sizeof(msg)); | 86 | memset(&msg, 0, sizeof(msg)); |
| 87 | 87 | ||
| 88 | if (urb->actual_length > 0 && !urb->transfer_buffer) { | ||
| 89 | dev_err(&udc->gadget.dev, | ||
| 90 | "urb: actual_length %d transfer_buffer null\n", | ||
| 91 | urb->actual_length); | ||
| 92 | return -1; | ||
| 93 | } | ||
| 94 | |||
| 88 | if (urb_p->type == USB_ENDPOINT_XFER_ISOC) | 95 | if (urb_p->type == USB_ENDPOINT_XFER_ISOC) |
| 89 | iovnum = 2 + urb->number_of_packets; | 96 | iovnum = 2 + urb->number_of_packets; |
| 90 | else | 97 | else |
| @@ -100,8 +107,8 @@ static int v_send_ret_submit(struct vudc *udc, struct urbp *urb_p) | |||
| 100 | 107 | ||
| 101 | /* 1. setup usbip_header */ | 108 | /* 1. setup usbip_header */ |
| 102 | setup_ret_submit_pdu(&pdu_header, urb_p); | 109 | setup_ret_submit_pdu(&pdu_header, urb_p); |
| 103 | usbip_dbg_stub_tx("setup txdata seqnum: %d urb: %p\n", | 110 | usbip_dbg_stub_tx("setup txdata seqnum: %d\n", |
| 104 | pdu_header.base.seqnum, urb); | 111 | pdu_header.base.seqnum); |
| 105 | usbip_header_correct_endian(&pdu_header, 1); | 112 | usbip_header_correct_endian(&pdu_header, 1); |
| 106 | 113 | ||
| 107 | iov[iovnum].iov_base = &pdu_header; | 114 | iov[iovnum].iov_base = &pdu_header; |
