From: Greg Kroah-Hartman Date: Mon, 22 Nov 2021 11:32:21 +0000 (+0100) Subject: 4.4-stable patches X-Git-Tag: v5.15.5~69 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=acfb7c71f45802791de162f0b8b5c300bd57d85d;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: tun-fix-bonding-active-backup-with-arp-monitoring.patch --- diff --git a/queue-4.4/series b/queue-4.4/series index 7730a83480e..0c447f1fa94 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -138,3 +138,4 @@ platform-x86-hp_accel-fix-an-error-handling-path-in-.patch nfc-reorganize-the-functions-in-nci_request.patch nfc-reorder-the-logic-in-nfc_-un-register_device.patch perf-bench-fix-two-memory-leaks-detected-with-asan.patch +tun-fix-bonding-active-backup-with-arp-monitoring.patch diff --git a/queue-4.4/tun-fix-bonding-active-backup-with-arp-monitoring.patch b/queue-4.4/tun-fix-bonding-active-backup-with-arp-monitoring.patch new file mode 100644 index 00000000000..19cdee77a17 --- /dev/null +++ b/queue-4.4/tun-fix-bonding-active-backup-with-arp-monitoring.patch @@ -0,0 +1,45 @@ +From a31d27fbed5d518734cb60956303eb15089a7634 Mon Sep 17 00:00:00 2001 +From: Nicolas Dichtel +Date: Fri, 12 Nov 2021 08:56:03 +0100 +Subject: tun: fix bonding active backup with arp monitoring + +From: Nicolas Dichtel + +commit a31d27fbed5d518734cb60956303eb15089a7634 upstream. + +As stated in the bonding doc, trans_start must be set manually for drivers +using NETIF_F_LLTX: + Drivers that use NETIF_F_LLTX flag must also update + netdev_queue->trans_start. If they do not, then the ARP monitor will + immediately fail any slaves using that driver, and those slaves will stay + down. + +Link: https://www.kernel.org/doc/html/v5.15/networking/bonding.html#arp-monitor-operation +Signed-off-by: Nicolas Dichtel +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/tun.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/drivers/net/tun.c ++++ b/drivers/net/tun.c +@@ -821,6 +821,7 @@ static netdev_tx_t tun_net_xmit(struct s + { + struct tun_struct *tun = netdev_priv(dev); + int txq = skb->queue_mapping; ++ struct netdev_queue *queue; + struct tun_file *tfile; + u32 numqueues = 0; + +@@ -887,6 +888,10 @@ static netdev_tx_t tun_net_xmit(struct s + /* Enqueue packet */ + skb_queue_tail(&tfile->socket.sk->sk_receive_queue, skb); + ++ /* NETIF_F_LLTX requires to do our own update of trans_start */ ++ queue = netdev_get_tx_queue(dev, txq); ++ queue->trans_start = jiffies; ++ + /* Notify and wake up reader process */ + if (tfile->flags & TUN_FASYNC) + kill_fasync(&tfile->fasync, SIGIO, POLL_IN);