54 lines
1.6 KiB
Diff
54 lines
1.6 KiB
Diff
From 3aeeea257f187e4a05e3a7f70915c82808fb0ee8 Mon Sep 17 00:00:00 2001
|
|
From: Jiri Slaby <jslaby@suse.cz>
|
|
Date: Wed, 1 Jun 2022 08:53:58 +0200
|
|
Subject: [PATCH] kni: fix build with Linux 5.18
|
|
|
|
[ upstream commit c98600d4bed6d15599e448990f2ba117ca938a2d ]
|
|
|
|
Since commit 2655926aea9b (net: Remove netif_rx_any_context() and
|
|
netif_rx_ni().) in 5.18, netif_rx_ni() no longer exists as netif_rx()
|
|
can be called from any context. So define HAVE_NETIF_RX_NI for older
|
|
releases and call the appropriate function in kni_net.
|
|
|
|
netif_rx_ni() must be used on older kernel since netif_rx() might
|
|
might lead to deadlocks or other problems there.
|
|
|
|
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
|
|
Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
|
|
---
|
|
kernel/linux/kni/compat.h | 4 ++++
|
|
kernel/linux/kni/kni_net.c | 4 ++++
|
|
2 files changed, 8 insertions(+)
|
|
|
|
diff --git a/kernel/linux/kni/compat.h b/kernel/linux/kni/compat.h
|
|
index 664785674f..0db29a4a6f 100644
|
|
--- a/kernel/linux/kni/compat.h
|
|
+++ b/kernel/linux/kni/compat.h
|
|
@@ -141,3 +141,7 @@
|
|
#if KERNEL_VERSION(5, 9, 0) > LINUX_VERSION_CODE
|
|
#define HAVE_TSK_IN_GUP
|
|
#endif
|
|
+
|
|
+#if KERNEL_VERSION(5, 18, 0) > LINUX_VERSION_CODE
|
|
+#define HAVE_NETIF_RX_NI
|
|
+#endif
|
|
diff --git a/kernel/linux/kni/kni_net.c b/kernel/linux/kni/kni_net.c
|
|
index 29e5b9e21f..a8b092b756 100644
|
|
--- a/kernel/linux/kni/kni_net.c
|
|
+++ b/kernel/linux/kni/kni_net.c
|
|
@@ -441,7 +441,11 @@ kni_net_rx_normal(struct kni_dev *kni)
|
|
skb->ip_summed = CHECKSUM_UNNECESSARY;
|
|
|
|
/* Call netif interface */
|
|
+#ifdef HAVE_NETIF_RX_NI
|
|
netif_rx_ni(skb);
|
|
+#else
|
|
+ netif_rx(skb);
|
|
+#endif
|
|
|
|
/* Update statistics */
|
|
dev->stats.rx_bytes += len;
|
|
--
|
|
2.23.0
|
|
|