> > The newer usb_control_msg_{send|recv}() API are an improvement on the > existing usb_control_msg() as it ensures that a short read/write is treated as > an error, data can be used off the stack, and raw usb pipes need not be created > in the calling functions. > For this reason, instances of usb_control_msg() have been replaced with > usb_control_msg_{recv|send}() appropriately. > > Signed-off-by: Anant Thazhemadam <anant.thazhemadam@xxxxxxxxx> Reviewed-by: Peter Chen <peter.chen@xxxxxxx> Peter > --- > drivers/usb/misc/ehset.c | 70 ++++++++++++++++++---------------------- > 1 file changed, 31 insertions(+), 39 deletions(-) > > diff --git a/drivers/usb/misc/ehset.c b/drivers/usb/misc/ehset.c index > 2752e1f4f4d0..068f4fae2965 100644 > --- a/drivers/usb/misc/ehset.c > +++ b/drivers/usb/misc/ehset.c > @@ -30,48 +30,42 @@ static int ehset_probe(struct usb_interface *intf, > > switch (test_pid) { > case TEST_SE0_NAK_PID: > - ret = usb_control_msg(hub_udev, usb_sndctrlpipe(hub_udev, 0), > - USB_REQ_SET_FEATURE, USB_RT_PORT, > - USB_PORT_FEAT_TEST, > - (USB_TEST_SE0_NAK << 8) | portnum, > - NULL, 0, 1000); > + ret = usb_control_msg_send(hub_udev, 0, USB_REQ_SET_FEATURE, > + USB_RT_PORT, USB_PORT_FEAT_TEST, > + (USB_TEST_SE0_NAK << 8) | portnum, > + NULL, 0, 1000, GFP_KERNEL); > break; > case TEST_J_PID: > - ret = usb_control_msg(hub_udev, usb_sndctrlpipe(hub_udev, 0), > - USB_REQ_SET_FEATURE, USB_RT_PORT, > - USB_PORT_FEAT_TEST, > - (USB_TEST_J << 8) | portnum, > - NULL, 0, 1000); > + ret = usb_control_msg_send(hub_udev, 0, USB_REQ_SET_FEATURE, > + USB_RT_PORT, USB_PORT_FEAT_TEST, > + (USB_TEST_J << 8) | portnum, NULL, 0, > + 1000, GFP_KERNEL); > break; > case TEST_K_PID: > - ret = usb_control_msg(hub_udev, usb_sndctrlpipe(hub_udev, 0), > - USB_REQ_SET_FEATURE, USB_RT_PORT, > - USB_PORT_FEAT_TEST, > - (USB_TEST_K << 8) | portnum, > - NULL, 0, 1000); > + ret = usb_control_msg_send(hub_udev, 0, USB_REQ_SET_FEATURE, > + USB_RT_PORT, USB_PORT_FEAT_TEST, > + (USB_TEST_K << 8) | portnum, NULL, 0, > + 1000, GFP_KERNEL); > break; > case TEST_PACKET_PID: > - ret = usb_control_msg(hub_udev, usb_sndctrlpipe(hub_udev, 0), > - USB_REQ_SET_FEATURE, USB_RT_PORT, > - USB_PORT_FEAT_TEST, > - (USB_TEST_PACKET << 8) | portnum, > - NULL, 0, 1000); > + ret = usb_control_msg_send(hub_udev, 0, USB_REQ_SET_FEATURE, > + USB_RT_PORT, USB_PORT_FEAT_TEST, > + (USB_TEST_PACKET << 8) | portnum, > + NULL, 0, 1000, GFP_KERNEL); > break; > case TEST_HS_HOST_PORT_SUSPEND_RESUME: > /* Test: wait for 15secs -> suspend -> 15secs delay -> resume */ > msleep(15 * 1000); > - ret = usb_control_msg(hub_udev, usb_sndctrlpipe(hub_udev, 0), > - USB_REQ_SET_FEATURE, USB_RT_PORT, > - USB_PORT_FEAT_SUSPEND, portnum, > - NULL, 0, 1000); > + ret = usb_control_msg_send(hub_udev, 0, USB_REQ_SET_FEATURE, > + USB_RT_PORT, USB_PORT_FEAT_SUSPEND, > + portnum, NULL, 0, 1000, GFP_KERNEL); > if (ret < 0) > break; > > msleep(15 * 1000); > - ret = usb_control_msg(hub_udev, usb_sndctrlpipe(hub_udev, 0), > - USB_REQ_CLEAR_FEATURE, USB_RT_PORT, > - USB_PORT_FEAT_SUSPEND, portnum, > - NULL, 0, 1000); > + ret = usb_control_msg_send(hub_udev, 0, > USB_REQ_CLEAR_FEATURE, > + USB_RT_PORT, USB_PORT_FEAT_SUSPEND, > + portnum, NULL, 0, 1000, GFP_KERNEL); > break; > case TEST_SINGLE_STEP_GET_DEV_DESC: > /* Test: wait for 15secs -> GetDescriptor request */ @@ -80,11 > +74,10 @@ static int ehset_probe(struct usb_interface *intf, > if (!buf) > return -ENOMEM; > > - ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), > - USB_REQ_GET_DESCRIPTOR, USB_DIR_IN, > - USB_DT_DEVICE << 8, 0, > - buf, USB_DT_DEVICE_SIZE, > - USB_CTRL_GET_TIMEOUT); > + ret = usb_control_msg_recv(dev, 0, USB_REQ_GET_DESCRIPTOR, > + USB_DIR_IN, USB_DT_DEVICE << 8, 0, > + buf, USB_DT_DEVICE_SIZE, > + USB_CTRL_GET_TIMEOUT, GFP_KERNEL); > kfree(buf); > break; > case TEST_SINGLE_STEP_SET_FEATURE: > @@ -100,11 +93,10 @@ static int ehset_probe(struct usb_interface *intf, > break; > } > > - ret = usb_control_msg(hub_udev, usb_sndctrlpipe(hub_udev, 0), > - USB_REQ_SET_FEATURE, USB_RT_PORT, > - USB_PORT_FEAT_TEST, > - (6 << 8) | portnum, > - NULL, 0, 60 * 1000); > + ret = usb_control_msg_send(hub_udev, 0, USB_REQ_SET_FEATURE, > + USB_RT_PORT, USB_PORT_FEAT_TEST, > + (6 << 8) | portnum, NULL, 0, > + 60 * 1000, GFP_KERNEL); > > break; > default: > @@ -112,7 +104,7 @@ static int ehset_probe(struct usb_interface *intf, > __func__, test_pid); > } > > - return (ret < 0) ? ret : 0; > + return ret; > } > > static void ehset_disconnect(struct usb_interface *intf) > -- > 2.25.1