[PATCH v2 12/15] usb: misc: lvstest: update to use the usb_control_msg_{send|recv}() API

Anant Thazhemadam
2020-11-30T01:33:25Z

For this reason, instances of usb_control_msg() have been replaced with
usb_control_msg_{recv|send}() and the return value checking conditions have
also been modified appropriately.

Signed-off-by: Anant Thazhemadam <anant.thazhemadam@gmail.com>
---
drivers/usb/misc/lvstest.c | 38 ++++++++++++++++----------------------
1 file changed, 16 insertions(+), 22 deletions(-)

diff --git a/drivers/usb/misc/lvstest.c b/drivers/usb/misc/lvstest.c
index f8686139d6f3..daa1b2c9139f 100644
--- a/drivers/usb/misc/lvstest.c
+++ b/drivers/usb/misc/lvstest.c
@@ -85,17 +85,17 @@ static void destroy_lvs_device(struct usb_device *udev)
static int lvs_rh_clear_port_feature(struct usb_device *hdev,
int port1, int feature)
{
- return usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0),
+ return usb_control_msg_send(hdev, 0,
USB_REQ_CLEAR_FEATURE, USB_RT_PORT, feature, port1,
- NULL, 0, 1000);
+ NULL, 0, 1000, GFP_KERNEL);
}

static int lvs_rh_set_port_feature(struct usb_device *hdev,
int port1, int feature)
{
- return usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0),
+ return usb_control_msg_send(hdev, 0,
USB_REQ_SET_FEATURE, USB_RT_PORT, feature, port1,
- NULL, 0, 1000);
+ NULL, 0, 1000, GFP_KERNEL);
}

static ssize_t u3_entry_store(struct device *dev,
@@ -257,13 +257,9 @@ static ssize_t get_dev_desc_store(struct device *dev,
{
struct usb_interface *intf = to_usb_interface(dev);
struct usb_device *udev;
- struct usb_device_descriptor *descriptor;
+ struct usb_device_descriptor descriptor;
int ret;

- descriptor = kmalloc(sizeof(*descriptor), GFP_KERNEL);
- if (!descriptor)
- return -ENOMEM;
-
udev = create_lvs_device(intf);
if (!udev) {
dev_err(dev, "failed to create lvs device\n");
@@ -271,18 +267,16 @@ static ssize_t get_dev_desc_store(struct device *dev,
goto free_desc;
}

- ret = usb_control_msg(udev, (PIPE_CONTROL << 30) | USB_DIR_IN,
- USB_REQ_GET_DESCRIPTOR, USB_DIR_IN, USB_DT_DEVICE << 8,
- 0, descriptor, sizeof(*descriptor),
- USB_CTRL_GET_TIMEOUT);
+ ret = usb_control_msg_recv(udev, 0, USB_REQ_GET_DESCRIPTOR,
+ USB_DIR_IN, USB_DT_DEVICE << 8,
+ 0, &descriptor, sizeof(descriptor),
+ USB_CTRL_GET_TIMEOUT, GFP_KERNEL);
if (ret < 0)
dev_err(dev, "can't read device descriptor %d\n", ret);

destroy_lvs_device(udev);

free_desc:
- kfree(descriptor);
-
if (ret < 0)
return ret;

@@ -336,10 +330,10 @@ static void lvs_rh_work(struct work_struct *work)

/* Examine each root port */
for (i = 1; i <= descriptor->bNbrPorts; i++) {
- ret = usb_control_msg(hdev, usb_rcvctrlpipe(hdev, 0),
+ ret = usb_control_msg_recv(hdev, 0,
USB_REQ_GET_STATUS, USB_DIR_IN | USB_RT_PORT, 0, i,
- port_status, sizeof(*port_status), 1000);
- if (ret < 4)
+ port_status, sizeof(*port_status), 1000, GFP_KERNEL);
+ if (ret < 0)
continue;

portchange = le16_to_cpu(port_status->wPortChange);
@@ -420,13 +414,13 @@ static int lvs_rh_probe(struct usb_interface *intf,
usb_set_intfdata(intf, lvs);

/* how many number of ports this root hub has */
- ret = usb_control_msg(hdev, usb_rcvctrlpipe(hdev, 0),
+ ret = usb_control_msg_recv(hdev, 0,
USB_REQ_GET_DESCRIPTOR, USB_DIR_IN | USB_RT_HUB,
USB_DT_SS_HUB << 8, 0, &lvs->descriptor,
- USB_DT_SS_HUB_SIZE, USB_CTRL_GET_TIMEOUT);
- if (ret < (USB_DT_HUB_NONVAR_SIZE + 2)) {
+ USB_DT_SS_HUB_SIZE, USB_CTRL_GET_TIMEOUT, GFP_KERNEL);
+ if (ret < 0) {
dev_err(&hdev->dev, "wrong root hub descriptor read %d\n", ret);
- return ret < 0 ? ret : -EINVAL;
+ return ret;
}

/* submit urb to poll interrupt endpoint */
--
2.25.1