bfa: fix bfa_fcb_itnim_alloc() error handling
authorDan Carpenter <dan.carpenter@oracle.com>
Wed, 13 Apr 2016 11:14:41 +0000 (14:14 +0300)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 10 May 2016 02:18:42 +0000 (22:18 -0400)
The caller assumes that "itnim" is NULL on error and non-NULL on success
but really "itnim" is uninitialized on error.  This function should just
use normal error handling where it returns zero on success and negative
on failure.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Anil Gurumurthy <anil.gurumurthy@qlogic.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/bfa/bfa_fcs.h
drivers/scsi/bfa/bfa_fcs_fcpim.c
drivers/scsi/bfa/bfad_im.c

index 06dc215ea0503b89126cb0bee19fdd55c698e502..0f797a55d5044dc942353532ba0c1ba7b2fc1f07 100644 (file)
@@ -874,8 +874,8 @@ bfa_status_t bfa_fcb_rport_alloc(struct bfad_s *bfad,
 /*
  * itnim callbacks
  */
-void bfa_fcb_itnim_alloc(struct bfad_s *bfad, struct bfa_fcs_itnim_s **itnim,
-                        struct bfad_itnim_s **itnim_drv);
+int bfa_fcb_itnim_alloc(struct bfad_s *bfad, struct bfa_fcs_itnim_s **itnim,
+                       struct bfad_itnim_s **itnim_drv);
 void bfa_fcb_itnim_free(struct bfad_s *bfad,
                        struct bfad_itnim_s *itnim_drv);
 void bfa_fcb_itnim_online(struct bfad_itnim_s *itnim_drv);
index 4f089d76afb1a8c6820cd85d6ab0b7f2af1393b1..2e3b19e7e0798a744106ff88c9b8c720360741b2 100644 (file)
@@ -588,12 +588,13 @@ bfa_fcs_itnim_create(struct bfa_fcs_rport_s *rport)
        struct bfa_fcs_lport_s *port = rport->port;
        struct bfa_fcs_itnim_s *itnim;
        struct bfad_itnim_s   *itnim_drv;
+       int ret;
 
        /*
         * call bfad to allocate the itnim
         */
-       bfa_fcb_itnim_alloc(port->fcs->bfad, &itnim, &itnim_drv);
-       if (itnim == NULL) {
+       ret = bfa_fcb_itnim_alloc(port->fcs->bfad, &itnim, &itnim_drv);
+       if (ret) {
                bfa_trc(port->fcs, rport->pwwn);
                return NULL;
        }
index 6c805e13f8dd8637b6547f8879eb549097ab913c..02d806012fa12c26530d61513d82b7dce932e8e9 100644 (file)
@@ -440,13 +440,13 @@ bfad_im_slave_destroy(struct scsi_device *sdev)
  * BFA FCS itnim alloc callback, after successful PRLI
  * Context: Interrupt
  */
-void
+int
 bfa_fcb_itnim_alloc(struct bfad_s *bfad, struct bfa_fcs_itnim_s **itnim,
                    struct bfad_itnim_s **itnim_drv)
 {
        *itnim_drv = kzalloc(sizeof(struct bfad_itnim_s), GFP_ATOMIC);
        if (*itnim_drv == NULL)
-               return;
+               return -ENOMEM;
 
        (*itnim_drv)->im = bfad->im;
        *itnim = &(*itnim_drv)->fcs_itnim;
@@ -457,6 +457,7 @@ bfa_fcb_itnim_alloc(struct bfad_s *bfad, struct bfa_fcs_itnim_s **itnim,
         */
        INIT_WORK(&(*itnim_drv)->itnim_work, bfad_im_itnim_work_handler);
        bfad->bfad_flags |= BFAD_RPORT_ONLINE;
+       return 0;
 }
 
 /*