]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
RDMA/mad: Convert BUG_ONs to error flows
authorLeon Romanovsky <leonro@mellanox.com>
Tue, 29 May 2018 11:56:19 +0000 (14:56 +0300)
committerDoug Ledford <dledford@redhat.com>
Fri, 1 Jun 2018 15:16:24 +0000 (11:16 -0400)
Let's perform checks in-place instead of BUG_ONs.

Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/core/mad.c

index 35295e74de0464fddbac9aaf293163c3495ecd69..f742ae7a768b2ea4e3b98f665a297c6e5c314a5e 100644 (file)
@@ -1556,7 +1556,8 @@ static int add_oui_reg_req(struct ib_mad_reg_req *mad_reg_req,
                            mad_reg_req->oui, 3)) {
                        method = &(*vendor_table)->vendor_class[
                                                vclass]->method_table[i];
-                       BUG_ON(!*method);
+                       if (!*method)
+                               goto error3;
                        goto check_in_use;
                }
        }
@@ -1566,10 +1567,12 @@ static int add_oui_reg_req(struct ib_mad_reg_req *mad_reg_req,
                                vclass]->oui[i])) {
                        method = &(*vendor_table)->vendor_class[
                                vclass]->method_table[i];
-                       BUG_ON(*method);
                        /* Allocate method table for this OUI */
-                       if ((ret = allocate_method_table(method)))
-                               goto error3;
+                       if (!*method) {
+                               ret = allocate_method_table(method);
+                               if (ret)
+                                       goto error3;
+                       }
                        memcpy((*vendor_table)->vendor_class[vclass]->oui[i],
                               mad_reg_req->oui, 3);
                        goto check_in_use;