diff options
author | Willem de Bruijn <willemb@google.com> | 2017-12-05 22:11:17 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-12-06 15:09:13 -0500 |
commit | cc166427dcdab39a96140fded18ac23be5f0a1ed (patch) | |
tree | 3e7b0e2a412e37f7a5a4e9000c496de3ecb9a633 | |
parent | d9b8693783e8a1ce8e4495d13d1dd6d8081f5070 (diff) | |
download | op-kernel-dev-cc166427dcdab39a96140fded18ac23be5f0a1ed.zip op-kernel-dev-cc166427dcdab39a96140fded18ac23be5f0a1ed.tar.gz |
tun: avoid unnecessary READ_ONCE in tun_net_xmit
The statement no longer serves a purpose.
Commit fa35864e0bb7 ("tuntap: Fix for a race in accessing numqueues")
added the ACCESS_ONCE to avoid a race condition with skb_queue_len.
Commit 436accebb530 ("tuntap: remove unnecessary sk_receive_queue
length check during xmit") removed the affected skb_queue_len check.
Commit 96f84061620c ("tun: add eBPF based queue selection method")
split the function, reading the field a second time in the callee.
The temp variable is now only read once, so just remove it.
Signed-off-by: Willem de Bruijn <willemb@google.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/tun.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 787cc35..c2ad8f3 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -990,14 +990,12 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb, struct net_device *dev) struct tun_struct *tun = netdev_priv(dev); int txq = skb->queue_mapping; struct tun_file *tfile; - u32 numqueues = 0; rcu_read_lock(); tfile = rcu_dereference(tun->tfiles[txq]); - numqueues = READ_ONCE(tun->numqueues); /* Drop packet if interface is not attached */ - if (txq >= numqueues) + if (txq >= tun->numqueues) goto drop; if (!rcu_dereference(tun->steering_prog)) |