Goto unlock path before return from function in the error handling case. Fixes: c9566231cfaf ("scsi: mpi3mr: Create operational request and reply queue pair") Reported-by: Hulk Robot <hulkci@xxxxxxxxxx> Signed-off-by: Yang Yingliang <yangyingliang@xxxxxxxxxx> --- drivers/scsi/mpi3mr/mpi3mr_fw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/mpi3mr/mpi3mr_fw.c b/drivers/scsi/mpi3mr/mpi3mr_fw.c index dbf116414855..8aea1c2ae712 100644 --- a/drivers/scsi/mpi3mr/mpi3mr_fw.c +++ b/drivers/scsi/mpi3mr/mpi3mr_fw.c @@ -1583,7 +1583,7 @@ static int mpi3mr_create_op_reply_q(struct mpi3mr_ioc *mrioc, u16 qidx) if (mrioc->init_cmds.state & MPI3MR_CMD_PENDING) { retval = -1; ioc_err(mrioc, "CreateRepQ: Init command is in use\n"); - goto out; + goto out_unlock; } mrioc->init_cmds.state = MPI3MR_CMD_PENDING; mrioc->init_cmds.is_waiting = 1; @@ -1692,7 +1692,7 @@ static int mpi3mr_create_op_req_q(struct mpi3mr_ioc *mrioc, u16 idx, if (mrioc->init_cmds.state & MPI3MR_CMD_PENDING) { retval = -1; ioc_err(mrioc, "CreateReqQ: Init command is in use\n"); - goto out; + goto out_unlock; } mrioc->init_cmds.state = MPI3MR_CMD_PENDING; mrioc->init_cmds.is_waiting = 1; -- 2.25.1