]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
target/iscsi: Fix error handling in np_store_iser
authorAndy Grover <agrover@redhat.com>
Wed, 29 May 2013 19:05:59 +0000 (12:05 -0700)
committerNicholas Bellinger <nab@linux-iscsi.org>
Fri, 14 Jun 2013 07:27:46 +0000 (00:27 -0700)
Return actual error from add_network_portal if it fails.

Use function-scope 'rc' variable instead of redefining in conditional.

Signed-off-by: Andy Grover <agrover@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/iscsi/iscsi_target_configfs.c

index 13e9e715ad2e738a581d7db6f235d298b9b886fb..1c92701c5e92e9f53f14523cdbf19ce265f59d19 100644 (file)
@@ -155,7 +155,7 @@ static ssize_t lio_target_np_store_iser(
        struct iscsi_tpg_np *tpg_np_iser = NULL;
        char *endptr;
        u32 op;
-       int rc;
+       int rc = 0;
 
        op = simple_strtoul(page, &endptr, 0);
        if ((op != 1) && (op != 0)) {
@@ -174,18 +174,24 @@ static ssize_t lio_target_np_store_iser(
                return -EINVAL;
 
        if (op) {
-               int rc = request_module("ib_isert");
-               if (rc != 0)
+               rc = request_module("ib_isert");
+               if (rc != 0) {
                        pr_warn("Unable to request_module for ib_isert\n");
+                       rc = 0;
+               }
 
                tpg_np_iser = iscsit_tpg_add_network_portal(tpg, &np->np_sockaddr,
                                np->np_ip, tpg_np, ISCSI_INFINIBAND);
-               if (!tpg_np_iser || IS_ERR(tpg_np_iser))
+               if (IS_ERR(tpg_np_iser)) {
+                       rc = PTR_ERR(tpg_np_iser);
                        goto out;
+               }
        } else {
                tpg_np_iser = iscsit_tpg_locate_child_np(tpg_np, ISCSI_INFINIBAND);
-               if (!tpg_np_iser)
+               if (!tpg_np_iser) {
+                       rc = -EINVAL;
                        goto out;
+               }
 
                rc = iscsit_tpg_del_network_portal(tpg, tpg_np_iser);
                if (rc < 0)
@@ -198,7 +204,7 @@ static ssize_t lio_target_np_store_iser(
        return count;
 out:
        iscsit_put_tpg(tpg);
-       return -EINVAL;
+       return rc;
 }
 
 TF_NP_BASE_ATTR(lio_target, iser, S_IRUGO | S_IWUSR);