bfa: fix bfa_fcb_itnim_alloc() error handling
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>
This commit is contained in:
parent
13f307711b
commit
4e51af9ee7
@ -874,8 +874,8 @@ bfa_status_t bfa_fcb_rport_alloc(struct bfad_s *bfad,
|
|||||||
/*
|
/*
|
||||||
* itnim callbacks
|
* itnim callbacks
|
||||||
*/
|
*/
|
||||||
void bfa_fcb_itnim_alloc(struct bfad_s *bfad, struct bfa_fcs_itnim_s **itnim,
|
int bfa_fcb_itnim_alloc(struct bfad_s *bfad, struct bfa_fcs_itnim_s **itnim,
|
||||||
struct bfad_itnim_s **itnim_drv);
|
struct bfad_itnim_s **itnim_drv);
|
||||||
void bfa_fcb_itnim_free(struct bfad_s *bfad,
|
void bfa_fcb_itnim_free(struct bfad_s *bfad,
|
||||||
struct bfad_itnim_s *itnim_drv);
|
struct bfad_itnim_s *itnim_drv);
|
||||||
void bfa_fcb_itnim_online(struct bfad_itnim_s *itnim_drv);
|
void bfa_fcb_itnim_online(struct bfad_itnim_s *itnim_drv);
|
||||||
|
@ -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_lport_s *port = rport->port;
|
||||||
struct bfa_fcs_itnim_s *itnim;
|
struct bfa_fcs_itnim_s *itnim;
|
||||||
struct bfad_itnim_s *itnim_drv;
|
struct bfad_itnim_s *itnim_drv;
|
||||||
|
int ret;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* call bfad to allocate the itnim
|
* call bfad to allocate the itnim
|
||||||
*/
|
*/
|
||||||
bfa_fcb_itnim_alloc(port->fcs->bfad, &itnim, &itnim_drv);
|
ret = bfa_fcb_itnim_alloc(port->fcs->bfad, &itnim, &itnim_drv);
|
||||||
if (itnim == NULL) {
|
if (ret) {
|
||||||
bfa_trc(port->fcs, rport->pwwn);
|
bfa_trc(port->fcs, rport->pwwn);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -440,13 +440,13 @@ bfad_im_slave_destroy(struct scsi_device *sdev)
|
|||||||
* BFA FCS itnim alloc callback, after successful PRLI
|
* BFA FCS itnim alloc callback, after successful PRLI
|
||||||
* Context: Interrupt
|
* Context: Interrupt
|
||||||
*/
|
*/
|
||||||
void
|
int
|
||||||
bfa_fcb_itnim_alloc(struct bfad_s *bfad, struct bfa_fcs_itnim_s **itnim,
|
bfa_fcb_itnim_alloc(struct bfad_s *bfad, struct bfa_fcs_itnim_s **itnim,
|
||||||
struct bfad_itnim_s **itnim_drv)
|
struct bfad_itnim_s **itnim_drv)
|
||||||
{
|
{
|
||||||
*itnim_drv = kzalloc(sizeof(struct bfad_itnim_s), GFP_ATOMIC);
|
*itnim_drv = kzalloc(sizeof(struct bfad_itnim_s), GFP_ATOMIC);
|
||||||
if (*itnim_drv == NULL)
|
if (*itnim_drv == NULL)
|
||||||
return;
|
return -ENOMEM;
|
||||||
|
|
||||||
(*itnim_drv)->im = bfad->im;
|
(*itnim_drv)->im = bfad->im;
|
||||||
*itnim = &(*itnim_drv)->fcs_itnim;
|
*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);
|
INIT_WORK(&(*itnim_drv)->itnim_work, bfad_im_itnim_work_handler);
|
||||||
bfad->bfad_flags |= BFAD_RPORT_ONLINE;
|
bfad->bfad_flags |= BFAD_RPORT_ONLINE;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user