diff options
| author | 2021-12-06 09:31:18 +0100 | |
|---|---|---|
| committer | 2021-12-06 09:31:18 +0100 | |
| commit | d598c3c46ea69ea974f0613a651cd4ef3be0c870 (patch) | |
| tree | 92c4b32aa13596484d81988f530d888586ff7c7a /net/core/dev.c | |
| parent | usb: core: Fix file path that does not exist (diff) | |
| parent | Linux 5.16-rc4 (diff) | |
| download | wireguard-linux-d598c3c46ea69ea974f0613a651cd4ef3be0c870.tar.xz wireguard-linux-d598c3c46ea69ea974f0613a651cd4ef3be0c870.zip | |
Merge 5.16-rc4 into usb-next
We need the USB fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/core/dev.c')
| -rw-r--r-- | net/core/dev.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 15ac064b5562..2a352e668d10 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4210,7 +4210,10 @@ static int __dev_queue_xmit(struct sk_buff *skb, struct net_device *sb_dev) if (dev->flags & IFF_UP) { int cpu = smp_processor_id(); /* ok because BHs are off */ - if (txq->xmit_lock_owner != cpu) { + /* Other cpus might concurrently change txq->xmit_lock_owner + * to -1 or to their cpu id, but not to our id. + */ + if (READ_ONCE(txq->xmit_lock_owner) != cpu) { if (dev_xmit_recursion()) goto recursion_alert; |
