mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-08 14:23:19 +00:00
scsi: bnx2fc: fix bnx2fc_cmd refcount imbalance in send_srr
If cb_arg alloc failed, we can't release the struct orig_io_req refcount before we take its refcount. As Saurav said, move the srr_err label down to avoid unnecessary refcount release and nullptr free. Signed-off-by: Lin Yi <teroincn@163.com> Acked-by: Saurav Kashyap <skashyap@marvell.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
177709c070
commit
7bfe5ae57c
@ -654,7 +654,6 @@ int bnx2fc_send_srr(struct bnx2fc_cmd *orig_io_req, u32 offset, u8 r_ctl)
|
|||||||
rc = bnx2fc_initiate_els(tgt, ELS_SRR, &srr, sizeof(srr),
|
rc = bnx2fc_initiate_els(tgt, ELS_SRR, &srr, sizeof(srr),
|
||||||
bnx2fc_srr_compl, cb_arg,
|
bnx2fc_srr_compl, cb_arg,
|
||||||
r_a_tov);
|
r_a_tov);
|
||||||
srr_err:
|
|
||||||
if (rc) {
|
if (rc) {
|
||||||
BNX2FC_IO_DBG(orig_io_req, "SRR failed - release\n");
|
BNX2FC_IO_DBG(orig_io_req, "SRR failed - release\n");
|
||||||
spin_lock_bh(&tgt->tgt_lock);
|
spin_lock_bh(&tgt->tgt_lock);
|
||||||
@ -664,6 +663,7 @@ int bnx2fc_send_srr(struct bnx2fc_cmd *orig_io_req, u32 offset, u8 r_ctl)
|
|||||||
} else
|
} else
|
||||||
set_bit(BNX2FC_FLAG_SRR_SENT, &orig_io_req->req_flags);
|
set_bit(BNX2FC_FLAG_SRR_SENT, &orig_io_req->req_flags);
|
||||||
|
|
||||||
|
srr_err:
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user