Thomas Bogendoerfer 726a95
From: Yajun Deng <yajun.deng@linux.dev>
Thomas Bogendoerfer 726a95
Date: Thu, 5 Aug 2021 19:54:34 +0800
Thomas Bogendoerfer 726a95
Subject: netdevice: add the case if dev is NULL
Thomas Bogendoerfer 726a95
Patch-mainline: v5.15-rc1
Thomas Bogendoerfer 726a95
Git-commit: b37a466837393af72fe8bcb8f1436410f3f173f3
Thomas Bogendoerfer 726a95
References: bsc#1208628
Thomas Bogendoerfer 726a95
Thomas Bogendoerfer 726a95
Add the case if dev is NULL in dev_{put, hold}, so the caller doesn't
Thomas Bogendoerfer 726a95
need to care whether dev is NULL or not.
Thomas Bogendoerfer 726a95
Thomas Bogendoerfer 726a95
Signed-off-by: Yajun Deng <yajun.deng@linux.dev>
Thomas Bogendoerfer 726a95
Signed-off-by: David S. Miller <davem@davemloft.net>
Thomas Bogendoerfer 726a95
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Thomas Bogendoerfer 726a95
---
Thomas Bogendoerfer 726a95
 include/linux/netdevice.h |   12 ++++++++----
Thomas Bogendoerfer 726a95
 1 file changed, 8 insertions(+), 4 deletions(-)
Thomas Bogendoerfer 726a95
Thomas Bogendoerfer 726a95
--- a/include/linux/netdevice.h
Thomas Bogendoerfer 726a95
+++ b/include/linux/netdevice.h
Thomas Bogendoerfer 726a95
@@ -4130,11 +4130,13 @@ void netdev_run_todo(void);
Thomas Bogendoerfer 726a95
  */
Thomas Bogendoerfer 726a95
 static inline void dev_put(struct net_device *dev)
Thomas Bogendoerfer 726a95
 {
Thomas Bogendoerfer 726a95
+	if (dev) {
Thomas Bogendoerfer 726a95
 #ifdef CONFIG_PCPU_DEV_REFCNT
Thomas Bogendoerfer 726a95
-	this_cpu_dec(*dev->pcpu_refcnt);
Thomas Bogendoerfer 726a95
+		this_cpu_dec(*dev->pcpu_refcnt);
Thomas Bogendoerfer 726a95
 #else
Thomas Bogendoerfer 726a95
-	refcount_dec(&dev->dev_refcnt);
Thomas Bogendoerfer 726a95
+		refcount_dec(&dev->dev_refcnt);
Thomas Bogendoerfer 726a95
 #endif
Thomas Bogendoerfer 726a95
+	}
Thomas Bogendoerfer 726a95
 }
Thomas Bogendoerfer 726a95
 
Thomas Bogendoerfer 726a95
 /**
Thomas Bogendoerfer 726a95
@@ -4145,11 +4147,13 @@ static inline void dev_put(struct net_de
Thomas Bogendoerfer 726a95
  */
Thomas Bogendoerfer 726a95
 static inline void dev_hold(struct net_device *dev)
Thomas Bogendoerfer 726a95
 {
Thomas Bogendoerfer 726a95
+	if (dev) {
Thomas Bogendoerfer 726a95
 #ifdef CONFIG_PCPU_DEV_REFCNT
Thomas Bogendoerfer 726a95
-	this_cpu_inc(*dev->pcpu_refcnt);
Thomas Bogendoerfer 726a95
+		this_cpu_inc(*dev->pcpu_refcnt);
Thomas Bogendoerfer 726a95
 #else
Thomas Bogendoerfer 726a95
-	refcount_inc(&dev->dev_refcnt);
Thomas Bogendoerfer 726a95
+		refcount_inc(&dev->dev_refcnt);
Thomas Bogendoerfer 726a95
 #endif
Thomas Bogendoerfer 726a95
+	}
Thomas Bogendoerfer 726a95
 }
Thomas Bogendoerfer 726a95
 
Thomas Bogendoerfer 726a95
 /* Carrier loss detection, dial on demand. The functions netif_carrier_on