]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commit
nvme_fc: fix abort race on teardown with lld reject
authorJames Smart <jsmart2021@gmail.com>
Wed, 28 Feb 2018 22:49:10 +0000 (14:49 -0800)
committerJens Axboe <axboe@kernel.dk>
Mon, 26 Mar 2018 14:53:43 +0000 (08:53 -0600)
commitb12740d316fa89f3f6191b71f986cf3b9383d379
tree938a676252ee3023f13731f4a535cce707393592
parent041018c634e44d8697879b241e17a9466f2e83ed
nvme_fc: fix abort race on teardown with lld reject

Another abort race: An io request is started, becomes active,
and is attempted to be started with the lldd. At the same time
the controller is stopped/torndown and an itterator is run to
abort the ios. As the io is active, it is added to the outstanding
aborted io count.  However on the original io request thread, the
driver ends up rejecting the io due to the condition that induced
the controller teardown. The driver reject path didn't check whether
it was in the outstanding io count. This left the count outstanding
stopping controller teardown.

Correct by, in the driver reject case, setting the state to
inactive and checking whether it was in the outstanding io count.

Signed-off-by: James Smart <james.smart@broadcom.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/nvme/host/fc.c