Commit 49cc69b6 authored by Axel Lin's avatar Axel Lin Committed by Dmitry Torokhov

Input: xpad - return proper error in error path

In current implementation, xpad_probe return 0 when
usb_alloc_urb failed for xpad->bulk_out and kzalloc failed for xpad->bdata.

This patch removes the initialization for error variable,
assign the error code at the place the error happens instead.
Signed-off-by: default avatarAxel Lin <axel.lin@gmail.com>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 5fdbe44d
...@@ -543,21 +543,25 @@ static void xpad_irq_out(struct urb *urb) ...@@ -543,21 +543,25 @@ static void xpad_irq_out(struct urb *urb)
static int xpad_init_output(struct usb_interface *intf, struct usb_xpad *xpad) static int xpad_init_output(struct usb_interface *intf, struct usb_xpad *xpad)
{ {
struct usb_endpoint_descriptor *ep_irq_out; struct usb_endpoint_descriptor *ep_irq_out;
int error = -ENOMEM; int error;
if (xpad->xtype != XTYPE_XBOX360 && xpad->xtype != XTYPE_XBOX) if (xpad->xtype != XTYPE_XBOX360 && xpad->xtype != XTYPE_XBOX)
return 0; return 0;
xpad->odata = usb_alloc_coherent(xpad->udev, XPAD_PKT_LEN, xpad->odata = usb_alloc_coherent(xpad->udev, XPAD_PKT_LEN,
GFP_KERNEL, &xpad->odata_dma); GFP_KERNEL, &xpad->odata_dma);
if (!xpad->odata) if (!xpad->odata) {
error = -ENOMEM;
goto fail1; goto fail1;
}
mutex_init(&xpad->odata_mutex); mutex_init(&xpad->odata_mutex);
xpad->irq_out = usb_alloc_urb(0, GFP_KERNEL); xpad->irq_out = usb_alloc_urb(0, GFP_KERNEL);
if (!xpad->irq_out) if (!xpad->irq_out) {
error = -ENOMEM;
goto fail2; goto fail2;
}
ep_irq_out = &intf->cur_altsetting->endpoint[1].desc; ep_irq_out = &intf->cur_altsetting->endpoint[1].desc;
usb_fill_int_urb(xpad->irq_out, xpad->udev, usb_fill_int_urb(xpad->irq_out, xpad->udev,
...@@ -789,8 +793,7 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id ...@@ -789,8 +793,7 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id
struct usb_xpad *xpad; struct usb_xpad *xpad;
struct input_dev *input_dev; struct input_dev *input_dev;
struct usb_endpoint_descriptor *ep_irq_in; struct usb_endpoint_descriptor *ep_irq_in;
int i; int i, error;
int error = -ENOMEM;
for (i = 0; xpad_device[i].idVendor; i++) { for (i = 0; xpad_device[i].idVendor; i++) {
if ((le16_to_cpu(udev->descriptor.idVendor) == xpad_device[i].idVendor) && if ((le16_to_cpu(udev->descriptor.idVendor) == xpad_device[i].idVendor) &&
...@@ -800,17 +803,23 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id ...@@ -800,17 +803,23 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id
xpad = kzalloc(sizeof(struct usb_xpad), GFP_KERNEL); xpad = kzalloc(sizeof(struct usb_xpad), GFP_KERNEL);
input_dev = input_allocate_device(); input_dev = input_allocate_device();
if (!xpad || !input_dev) if (!xpad || !input_dev) {
error = -ENOMEM;
goto fail1; goto fail1;
}
xpad->idata = usb_alloc_coherent(udev, XPAD_PKT_LEN, xpad->idata = usb_alloc_coherent(udev, XPAD_PKT_LEN,
GFP_KERNEL, &xpad->idata_dma); GFP_KERNEL, &xpad->idata_dma);
if (!xpad->idata) if (!xpad->idata) {
error = -ENOMEM;
goto fail1; goto fail1;
}
xpad->irq_in = usb_alloc_urb(0, GFP_KERNEL); xpad->irq_in = usb_alloc_urb(0, GFP_KERNEL);
if (!xpad->irq_in) if (!xpad->irq_in) {
error = -ENOMEM;
goto fail2; goto fail2;
}
xpad->udev = udev; xpad->udev = udev;
xpad->mapping = xpad_device[i].mapping; xpad->mapping = xpad_device[i].mapping;
...@@ -929,12 +938,16 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id ...@@ -929,12 +938,16 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id
* controller when it shows up * controller when it shows up
*/ */
xpad->bulk_out = usb_alloc_urb(0, GFP_KERNEL); xpad->bulk_out = usb_alloc_urb(0, GFP_KERNEL);
if(!xpad->bulk_out) if (!xpad->bulk_out) {
error = -ENOMEM;
goto fail5; goto fail5;
}
xpad->bdata = kzalloc(XPAD_PKT_LEN, GFP_KERNEL); xpad->bdata = kzalloc(XPAD_PKT_LEN, GFP_KERNEL);
if(!xpad->bdata) if (!xpad->bdata) {
error = -ENOMEM;
goto fail6; goto fail6;
}
xpad->bdata[2] = 0x08; xpad->bdata[2] = 0x08;
switch (intf->cur_altsetting->desc.bInterfaceNumber) { switch (intf->cur_altsetting->desc.bInterfaceNumber) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment