Commit be5d01f1 authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman
Browse files

greybus: es2: fix probe error handling



Make sure to return -ENODEV when the expected endpoints are missing and
stop relying on a default error.

Signed-off-by: default avatarJohan Hovold <johan@hovoldconsulting.com>
Reviewed-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent 74a5d93c
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -938,7 +938,7 @@ static int ap_probe(struct usb_interface *interface,
	struct usb_endpoint_descriptor *endpoint;
	int bulk_in = 0;
	int bulk_out = 0;
	int retval = -ENOMEM;
	int retval;
	int i;
	int num_cports;
	int cport_id;
@@ -1002,6 +1002,7 @@ static int ap_probe(struct usb_interface *interface,
	}
	if (bulk_in != NUM_BULKS || bulk_out != NUM_BULKS) {
		dev_err(&udev->dev, "Not enough endpoints found in device, aborting!\n");
		retval = -ENODEV;
		goto error;
	}

@@ -1014,11 +1015,15 @@ static int ap_probe(struct usb_interface *interface,
			u8 *buffer;

			urb = usb_alloc_urb(0, GFP_KERNEL);
			if (!urb)
			if (!urb) {
				retval = -ENOMEM;
				goto error;
			}
			buffer = kmalloc(ES2_GBUF_MSG_SIZE_MAX, GFP_KERNEL);
			if (!buffer)
			if (!buffer) {
				retval = -ENOMEM;
				goto error;
			}

			usb_fill_bulk_urb(urb, udev,
					  usb_rcvbulkpipe(udev,
@@ -1035,8 +1040,10 @@ static int ap_probe(struct usb_interface *interface,
		struct urb *urb;

		urb = usb_alloc_urb(0, GFP_KERNEL);
		if (!urb)
		if (!urb) {
			retval = -ENOMEM;
			goto error;
		}

		es2->cport_out_urb[i] = urb;
		es2->cport_out_urb_busy[i] = false;	/* just to be anal */