net/tls: Protect from calling tls_dev_del for TLS RX twice
authorMaxim Mikityanskiy <maximmi@mellanox.com>
Wed, 25 Nov 2020 22:18:10 +0000 (14:18 -0800)
committerJakub Kicinski <kuba@kernel.org>
Thu, 26 Nov 2020 01:31:06 +0000 (17:31 -0800)
commit025cc2fb6a4e84e9a0552c0017dcd1c24b7ac7da
treea5e744c9d95e149dfe038bff54488d6094b633e0
parenta060133c2058bcc5bf2f82e1135ce76b4bc9865b
net/tls: Protect from calling tls_dev_del for TLS RX twice

tls_device_offload_cleanup_rx doesn't clear tls_ctx->netdev after
calling tls_dev_del if TLX TX offload is also enabled. Clearing
tls_ctx->netdev gets postponed until tls_device_gc_task. It leaves a
time frame when tls_device_down may get called and call tls_dev_del for
RX one extra time, confusing the driver, which may lead to a crash.

This patch corrects this racy behavior by adding a flag to prevent
tls_device_down from calling tls_dev_del the second time.

Fixes: e8f69799810c ("net/tls: Add generic NIC offload infrastructure")
Signed-off-by: Maxim Mikityanskiy <maximmi@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Link: https://lore.kernel.org/r/20201125221810.69870-1-saeedm@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/tls.h
net/tls/tls_device.c