mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 08:33:17 +02:00
nvmet-fcloop: update refs on tfcp_req
Track the lifetime of the in-flight tfcp_req to ensure the object is not freed too early. Signed-off-by: Daniel Wagner <wagi@kernel.org> Reviewed-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
fbaed6a810
commit
88ea8f814d
|
|
@ -566,7 +566,8 @@ fcloop_call_host_done(struct nvmefc_fcp_req *fcpreq,
|
|||
}
|
||||
|
||||
/* release original io reference on tgt struct */
|
||||
fcloop_tfcp_req_put(tfcp_req);
|
||||
if (tfcp_req)
|
||||
fcloop_tfcp_req_put(tfcp_req);
|
||||
}
|
||||
|
||||
static bool drop_fabric_opcode;
|
||||
|
|
@ -671,6 +672,7 @@ fcloop_fcp_abort_recv_work(struct work_struct *work)
|
|||
break;
|
||||
default:
|
||||
spin_unlock_irqrestore(&tfcp_req->reqlock, flags);
|
||||
fcloop_tfcp_req_put(tfcp_req);
|
||||
WARN_ON(1);
|
||||
return;
|
||||
}
|
||||
|
|
@ -958,8 +960,10 @@ fcloop_fcp_abort(struct nvme_fc_local_port *localport,
|
|||
|
||||
spin_lock(&inireq->inilock);
|
||||
tfcp_req = inireq->tfcp_req;
|
||||
if (tfcp_req)
|
||||
fcloop_tfcp_req_get(tfcp_req);
|
||||
if (tfcp_req) {
|
||||
if (!fcloop_tfcp_req_get(tfcp_req))
|
||||
tfcp_req = NULL;
|
||||
}
|
||||
spin_unlock(&inireq->inilock);
|
||||
|
||||
if (!tfcp_req)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user