aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/joystick
diff options
context:
space:
mode:
authorAxel Lin <axel.lin@gmail.com>2010-11-12 00:39:11 -0500
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2010-11-12 01:02:11 -0500
commit49cc69b6789b57d2d8ed78843c4219525b433b58 (patch)
tree1b831f622c242f64bb89621b2e7663c2ca2a184b /drivers/input/joystick
parent5fdbe44d033d059cc56c2803e6b4dbd8cb4e5e39 (diff)
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: Axel Lin <axel.lin@gmail.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'drivers/input/joystick')
-rw-r--r--drivers/input/joystick/xpad.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
index f9fb7fa10af..39c0265ca15 100644
--- a/drivers/input/joystick/xpad.c
+++ b/drivers/input/joystick/xpad.c
@@ -543,21 +543,25 @@ exit:
543static int xpad_init_output(struct usb_interface *intf, struct usb_xpad *xpad) 543static int xpad_init_output(struct usb_interface *intf, struct usb_xpad *xpad)
544{ 544{
545 struct usb_endpoint_descriptor *ep_irq_out; 545 struct usb_endpoint_descriptor *ep_irq_out;
546 int error = -ENOMEM; 546 int error;
547 547
548 if (xpad->xtype != XTYPE_XBOX360 && xpad->xtype != XTYPE_XBOX) 548 if (xpad->xtype != XTYPE_XBOX360 && xpad->xtype != XTYPE_XBOX)
549 return 0; 549 return 0;
550 550
551 xpad->odata = usb_alloc_coherent(xpad->udev, XPAD_PKT_LEN, 551 xpad->odata = usb_alloc_coherent(xpad->udev, XPAD_PKT_LEN,
552 GFP_KERNEL, &xpad->odata_dma); 552 GFP_KERNEL, &xpad->odata_dma);
553 if (!xpad->odata) 553 if (!xpad->odata) {
554 error = -ENOMEM;
554 goto fail1; 555 goto fail1;
556 }
555 557
556 mutex_init(&xpad->odata_mutex); 558 mutex_init(&xpad->odata_mutex);
557 559
558 xpad->irq_out = usb_alloc_urb(0, GFP_KERNEL); 560 xpad->irq_out = usb_alloc_urb(0, GFP_KERNEL);
559 if (!xpad->irq_out) 561 if (!xpad->irq_out) {
562 error = -ENOMEM;
560 goto fail2; 563 goto fail2;
564 }
561 565
562 ep_irq_out = &intf->cur_altsetting->endpoint[1].desc; 566 ep_irq_out = &intf->cur_altsetting->endpoint[1].desc;
563 usb_fill_int_urb(xpad->irq_out, xpad->udev, 567 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 struct usb_xpad *xpad; 793 struct usb_xpad *xpad;
790 struct input_dev *input_dev; 794 struct input_dev *input_dev;
791 struct usb_endpoint_descriptor *ep_irq_in; 795 struct usb_endpoint_descriptor *ep_irq_in;
792 int i; 796 int i, error;
793 int error = -ENOMEM;
794 797
795 for (i = 0; xpad_device[i].idVendor; i++) { 798 for (i = 0; xpad_device[i].idVendor; i++) {
796 if ((le16_to_cpu(udev->descriptor.idVendor) == xpad_device[i].idVendor) && 799 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 803
801 xpad = kzalloc(sizeof(struct usb_xpad), GFP_KERNEL); 804 xpad = kzalloc(sizeof(struct usb_xpad), GFP_KERNEL);
802 input_dev = input_allocate_device(); 805 input_dev = input_allocate_device();
803 if (!xpad || !input_dev) 806 if (!xpad || !input_dev) {
807 error = -ENOMEM;
804 goto fail1; 808 goto fail1;
809 }
805 810
806 xpad->idata = usb_alloc_coherent(udev, XPAD_PKT_LEN, 811 xpad->idata = usb_alloc_coherent(udev, XPAD_PKT_LEN,
807 GFP_KERNEL, &xpad->idata_dma); 812 GFP_KERNEL, &xpad->idata_dma);
808 if (!xpad->idata) 813 if (!xpad->idata) {
814 error = -ENOMEM;
809 goto fail1; 815 goto fail1;
816 }
810 817
811 xpad->irq_in = usb_alloc_urb(0, GFP_KERNEL); 818 xpad->irq_in = usb_alloc_urb(0, GFP_KERNEL);
812 if (!xpad->irq_in) 819 if (!xpad->irq_in) {
820 error = -ENOMEM;
813 goto fail2; 821 goto fail2;
822 }
814 823
815 xpad->udev = udev; 824 xpad->udev = udev;
816 xpad->mapping = xpad_device[i].mapping; 825 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 * controller when it shows up 938 * controller when it shows up
930 */ 939 */
931 xpad->bulk_out = usb_alloc_urb(0, GFP_KERNEL); 940 xpad->bulk_out = usb_alloc_urb(0, GFP_KERNEL);
932 if(!xpad->bulk_out) 941 if (!xpad->bulk_out) {
942 error = -ENOMEM;
933 goto fail5; 943 goto fail5;
944 }
934 945
935 xpad->bdata = kzalloc(XPAD_PKT_LEN, GFP_KERNEL); 946 xpad->bdata = kzalloc(XPAD_PKT_LEN, GFP_KERNEL);
936 if(!xpad->bdata) 947 if (!xpad->bdata) {
948 error = -ENOMEM;
937 goto fail6; 949 goto fail6;
950 }
938 951
939 xpad->bdata[2] = 0x08; 952 xpad->bdata[2] = 0x08;
940 switch (intf->cur_altsetting->desc.bInterfaceNumber) { 953 switch (intf->cur_altsetting->desc.bInterfaceNumber) {