[PATCH] patches: network: add spatch for mtu range checking

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The mtu range checking was moved into network subsystem resulting in
the addition of min_mtu and max_mtu fields in struct net_device. For
drivers with a .ndo_change_mtu() which took care of range checking this
resulted in removal of the callback. This spatch restores the callback
using the values set in {min,max}_mtu fields for kernels before v4.10.

Signed-off-by: Julia Lawall <julia.lawall@xxxxxxx>
Signed-off-by: Arend van Spriel <arend.vanspriel@xxxxxxxxxxxx>
---
 .../network/0073-netdevice-mtu-range.cocci         | 75 ++++++++++++++++++++++
 1 file changed, 75 insertions(+)
 create mode 100644 patches/collateral-evolutions/network/0073-netdevice-mtu-range.cocci

diff --git a/patches/collateral-evolutions/network/0073-netdevice-mtu-range.cocci b/patches/collateral-evolutions/network/0073-netdevice-mtu-range.cocci
new file mode 100644
index 0000000..30276f9
--- /dev/null
+++ b/patches/collateral-evolutions/network/0073-netdevice-mtu-range.cocci
@@ -0,0 +1,75 @@
+@initialize:python@
+@@
+
+first_ops = 0
+
+@r@
+identifier OPS;
+position p;
+@@
+
+struct net_device_ops OPS@p = { ... };
+
+@script:python depends on r@
+@@
+
+first_ops = 0
+
+@script:python@
+p << r.p;
+@@
+
+ln = int(p[0].line)
+if first_ops == 0 or ln < first_ops:
+  first_ops = ln
+
+@script:python@
+p << r.p;
+@@
+
+ln = int(p[0].line)
+if not(first_ops == ln):
+  cocci.include_match(False)
+
+@r1 exists@
+expression ndevexp, e1, e2;
+identifier func;
+@@
+func(...) {
+	<+...
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)
+	ndevexp->min_mtu = e1;
+	ndevexp->max_mtu = e2;
++#endif
+	...+>
+}
+
+@r2@
+expression r1.e1,r1.e2;
+identifier r.OPS;
+@@
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0)
++ static int __change_mtu(struct net_device *ndev, int new_mtu)
++ {
++ if (new_mtu < e1 || new_mtu > e2)
++             return -EINVAL;
++             ndev->mtu = new_mtu;
++             return 0;
++ }
++#endif
++
+struct net_device_ops OPS = {
+       ...
+};
+
+@depends on r2@
+identifier OPS;
+@@
+
+struct net_device_ops OPS = {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0)
++      .ndo_change_mtu = __change_mtu,
++#endif
+       ...
+};
+
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe backports" in



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux