diff --git a/patches.suse/net-add-net-device-refcount-tracker-infrastructure.patch b/patches.suse/net-add-net-device-refcount-tracker-infrastructure.patch index 4155931..74cdc95 100644 --- a/patches.suse/net-add-net-device-refcount-tracker-infrastructure.patch +++ b/patches.suse/net-add-net-device-refcount-tracker-infrastructure.patch @@ -65,7 +65,7 @@ Acked-by: Thomas Bogendoerfer struct gro_list { struct list_head list; int count; -@@ -1854,6 +1861,7 @@ enum netdev_ml_priv_type { +@@ -1859,6 +1866,7 @@ enum netdev_ml_priv_type { * @proto_down_reason: reason a netdev interface is held down * @pcpu_refcnt: Number of references to this device * @dev_refcnt: Number of references to this device @@ -73,7 +73,7 @@ Acked-by: Thomas Bogendoerfer * @todo_list: Delayed register/unregister * @link_watch_list: XXX: need comments on this one * -@@ -2161,6 +2169,7 @@ struct net_device { +@@ -2166,6 +2174,7 @@ struct net_device { #else refcount_t dev_refcnt; #endif @@ -81,7 +81,7 @@ Acked-by: Thomas Bogendoerfer struct list_head link_watch_list; -@@ -3783,6 +3792,7 @@ void netdev_run_todo(void); +@@ -3793,6 +3802,7 @@ void netdev_run_todo(void); * @dev: network device * * Release reference to device to allow it to be freed. @@ -89,7 +89,7 @@ Acked-by: Thomas Bogendoerfer */ static inline void dev_put(struct net_device *dev) { -@@ -3798,6 +3808,7 @@ static inline void dev_put(struct net_de +@@ -3810,6 +3820,7 @@ static inline void dev_put(struct net_de * @dev: network device * * Hold reference to device to keep it from being freed. @@ -97,8 +97,8 @@ Acked-by: Thomas Bogendoerfer */ static inline void dev_hold(struct net_device *dev) { -@@ -3808,6 +3819,40 @@ static inline void dev_hold(struct net_d - #endif +@@ -3822,6 +3833,40 @@ static inline void dev_hold(struct net_d + } } +static inline void netdev_tracker_alloc(struct net_device *dev, @@ -140,7 +140,7 @@ Acked-by: Thomas Bogendoerfer * who is responsible for serialization of these calls. --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug -@@ -595,6 +595,11 @@ config DEBUG_MISC +@@ -596,6 +596,11 @@ config DEBUG_MISC Say Y here if you need to enable miscellaneous debug code that should be under a more specific debug option but isn't. @@ -167,7 +167,7 @@ Acked-by: Thomas Bogendoerfer + This adds memory and cpu costs. --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -9806,6 +9806,7 @@ static void netdev_wait_allrefs(struct n +@@ -9863,6 +9863,7 @@ static void netdev_wait_allrefs(struct n netdev_unregister_timeout_secs * HZ)) { pr_emerg("unregister_netdevice: waiting for %s to become free. Usage count = %d\n", dev->name, refcnt); @@ -175,7 +175,7 @@ Acked-by: Thomas Bogendoerfer warning_time = jiffies; } } -@@ -10096,6 +10097,7 @@ struct net_device *alloc_netdev_mqs(int +@@ -10153,6 +10154,7 @@ struct net_device *alloc_netdev_mqs(int dev = PTR_ALIGN(p, NETDEV_ALIGN); dev->padded = (char *)dev - (char *)p; @@ -183,7 +183,7 @@ Acked-by: Thomas Bogendoerfer #ifdef CONFIG_PCPU_DEV_REFCNT dev->pcpu_refcnt = alloc_percpu(int); if (!dev->pcpu_refcnt) -@@ -10212,6 +10214,7 @@ void free_netdev(struct net_device *dev) +@@ -10269,6 +10271,7 @@ void free_netdev(struct net_device *dev) list_for_each_entry_safe(p, n, &dev->napi_list, dev_list) netif_napi_del(p); diff --git a/patches.suse/netdevice-add-the-case-if-dev-is-NULL.patch b/patches.suse/netdevice-add-the-case-if-dev-is-NULL.patch new file mode 100644 index 0000000..533c4ea --- /dev/null +++ b/patches.suse/netdevice-add-the-case-if-dev-is-NULL.patch @@ -0,0 +1,51 @@ +From: Yajun Deng +Date: Thu, 5 Aug 2021 19:54:34 +0800 +Subject: netdevice: add the case if dev is NULL +Patch-mainline: v5.15-rc1 +Git-commit: b37a466837393af72fe8bcb8f1436410f3f173f3 +References: bsc#1208628 + +Add the case if dev is NULL in dev_{put, hold}, so the caller doesn't +need to care whether dev is NULL or not. + +Signed-off-by: Yajun Deng +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + include/linux/netdevice.h | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +--- a/include/linux/netdevice.h ++++ b/include/linux/netdevice.h +@@ -4130,11 +4130,13 @@ void netdev_run_todo(void); + */ + static inline void dev_put(struct net_device *dev) + { ++ if (dev) { + #ifdef CONFIG_PCPU_DEV_REFCNT +- this_cpu_dec(*dev->pcpu_refcnt); ++ this_cpu_dec(*dev->pcpu_refcnt); + #else +- refcount_dec(&dev->dev_refcnt); ++ refcount_dec(&dev->dev_refcnt); + #endif ++ } + } + + /** +@@ -4145,11 +4147,13 @@ static inline void dev_put(struct net_de + */ + static inline void dev_hold(struct net_device *dev) + { ++ if (dev) { + #ifdef CONFIG_PCPU_DEV_REFCNT +- this_cpu_inc(*dev->pcpu_refcnt); ++ this_cpu_inc(*dev->pcpu_refcnt); + #else +- refcount_inc(&dev->dev_refcnt); ++ refcount_inc(&dev->dev_refcnt); + #endif ++ } + } + + /* Carrier loss detection, dial on demand. The functions netif_carrier_on diff --git a/series.conf b/series.conf index ee5d8c7..7634909 100644 --- a/series.conf +++ b/series.conf @@ -1187,6 +1187,7 @@ patches.suse/net-Replace-deprecated-CPU-hotplug-functions.patch patches.suse/net-ipa-fix-IPA-v4.9-interconnects.patch patches.suse/net-fix-GRO-skb-truesize-update.patch + patches.suse/netdevice-add-the-case-if-dev-is-NULL.patch patches.suse/net-dsa-tag_sja1105-optionally-build-as-module-when-.patch patches.suse/netdevsim-Forbid-devlink-reload-when-adding-or-delet.patch patches.suse/netdevsim-Protect-both-reload_down-and-reload_up-pat.patch