Revert "net/tls: avoid NULL-deref on resync during device removal"
This reverts commit 38030d7cb7
.
Unfortunately the RX resync may get called from soft IRQ,
so we can't take the rwsem to protect from the device
disappearing.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
f4cfcfbdf0
commit
27393f8c6e
|
@ -553,8 +553,8 @@ void tls_device_write_space(struct sock *sk, struct tls_context *ctx)
|
|||
void handle_device_resync(struct sock *sk, u32 seq, u64 rcd_sn)
|
||||
{
|
||||
struct tls_context *tls_ctx = tls_get_ctx(sk);
|
||||
struct net_device *netdev = tls_ctx->netdev;
|
||||
struct tls_offload_context_rx *rx_ctx;
|
||||
struct net_device *netdev;
|
||||
u32 is_req_pending;
|
||||
s64 resync_req;
|
||||
u32 req_seq;
|
||||
|
@ -568,15 +568,10 @@ void handle_device_resync(struct sock *sk, u32 seq, u64 rcd_sn)
|
|||
is_req_pending = resync_req;
|
||||
|
||||
if (unlikely(is_req_pending) && req_seq == seq &&
|
||||
atomic64_try_cmpxchg(&rx_ctx->resync_req, &resync_req, 0)) {
|
||||
seq += TLS_HEADER_SIZE - 1;
|
||||
down_read(&device_offload_lock);
|
||||
netdev = tls_ctx->netdev;
|
||||
if (netdev)
|
||||
netdev->tlsdev_ops->tls_dev_resync_rx(netdev, sk, seq,
|
||||
rcd_sn);
|
||||
up_read(&device_offload_lock);
|
||||
}
|
||||
atomic64_try_cmpxchg(&rx_ctx->resync_req, &resync_req, 0))
|
||||
netdev->tlsdev_ops->tls_dev_resync_rx(netdev, sk,
|
||||
seq + TLS_HEADER_SIZE - 1,
|
||||
rcd_sn);
|
||||
}
|
||||
|
||||
static int tls_device_reencrypt(struct sock *sk, struct sk_buff *skb)
|
||||
|
|
Loading…
Reference in New Issue