staging: xillybus: Improved error handling
authorEli Billauer <eli.billauer@gmail.com>
Thu, 4 Sep 2014 14:47:45 +0000 (17:47 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 8 Sep 2014 20:58:19 +0000 (13:58 -0700)
xilly_scan_idt() now returns an error status code, rather than being a void
function and hint the status through an entry in a data structure.

Suggested-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Eli Billauer <eli.billauer@gmail.com>
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/xillybus/xillybus_core.c

index 222457fe9bb85dd57b013b0008dd8cc28e9fa4a9..fc14b143d413bfd2b624dccf7ef7b1d581b10984 100644 (file)
@@ -568,8 +568,8 @@ static int xilly_setupchannels(struct xilly_endpoint *ep,
        return 0;
 }
 
-static void xilly_scan_idt(struct xilly_endpoint *endpoint,
-                          struct xilly_idt_handle *idt_handle)
+static int xilly_scan_idt(struct xilly_endpoint *endpoint,
+                         struct xilly_idt_handle *idt_handle)
 {
        int count = 0;
        unsigned char *idt = endpoint->channels[1]->wr_buffers[0]->addr;
@@ -593,23 +593,22 @@ static void xilly_scan_idt(struct xilly_endpoint *endpoint,
        if (scan > end_of_idt) {
                dev_err(endpoint->dev,
                        "IDT device name list overflow. Aborting.\n");
-               idt_handle->chandesc = NULL;
-               return;
+               return -ENODEV;
        }
        idt_handle->chandesc = scan;
 
        len = endpoint->idtlen - (3 + ((int) (scan - idt)));
 
        if (len & 0x03) {
-               idt_handle->chandesc = NULL;
-
                dev_err(endpoint->dev,
                        "Corrupt IDT device name list. Aborting.\n");
+               return -ENODEV;
        }
 
        idt_handle->entries = len >> 2;
-
        endpoint->num_channels = count;
+
+       return 0;
 }
 
 static int xilly_obtain_idt(struct xilly_endpoint *endpoint)
@@ -2041,12 +2040,9 @@ int xillybus_endpoint_discovery(struct xilly_endpoint *endpoint)
        if (rc)
                goto failed_idt;
 
-       xilly_scan_idt(endpoint, &idt_handle);
-
-       if (!idt_handle.chandesc) {
-               rc = -ENODEV;
+       rc = xilly_scan_idt(endpoint, &idt_handle);
+       if (rc)
                goto failed_idt;
-       }
 
        devres_close_group(dev, bootstrap_resources);