linux-brain/drivers/infiniband/ulp/iser
Sergey Gorenko 6e3b662d86 IB/iser: Always check sig MR before putting it to the free pool
[ Upstream commit 26e28deb813eed908cf31a6052870b6493ec0e86 ]

libiscsi calls the check_protection transport handler only if SCSI-Respose
is received. So, the handler is never called if iSCSI task is completed
for some other reason like a timeout or error handling. And this behavior
looks correct. But the iSER does not handle this case properly because it
puts a non-checked signature MR to the free pool. Then the error occurs at
reusing the MR because it is not allowed to invalidate a signature MR
without checking.

This commit adds an extra check to iser_unreg_mem_fastreg(), which is a
part of the task cleanup flow. Now the signature MR is checked there if it
is needed.

Link: https://lore.kernel.org/r/20200325151210.1548-1-sergeygo@mellanox.com
Signed-off-by: Sergey Gorenko <sergeygo@mellanox.com>
Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-10-01 13:17:50 +02:00
..
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
iscsi_iser.c IB/iser: bound protection_sg size by data_sg size 2019-12-31 16:43:15 +01:00
iscsi_iser.h IB/iser: Support up to 16MB data transfer in a single command 2019-09-13 16:55:55 -03:00
iser_initiator.c IB/iser: Use IB_WR_REG_MR_INTEGRITY for PI handover 2019-06-24 11:49:27 -03:00
iser_memory.c IB/iser: Always check sig MR before putting it to the free pool 2020-10-01 13:17:50 +02:00
iser_verbs.c RDMA/core: Rename signature qp create flag and signature device capability 2019-06-24 11:49:27 -03:00