浏览代码

Staging: bcm: fix up network device reference counting

The way network devices are reference counted does not include poking
around in the reference count itself.  This breaks when the reference
count is changed to be a different type.  Fix the driver to do the
proper function calls instead.

Cc: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Greg Kroah-Hartman 14 年之前
父节点
当前提交
eebfc6055a
共有 1 个文件被更改,包括 4 次插入6 次删除
  1. 4 6
      drivers/staging/bcm/Bcmnet.c

+ 4 - 6
drivers/staging/bcm/Bcmnet.c

@@ -22,17 +22,15 @@ static INT bcm_notify_event(struct notifier_block *nb, ULONG event, PVOID dev)
 			case NETDEV_REGISTER:
 				 /* Increment the Reference Count for "veth0" */
 				 BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "Register RefCount: %x\n",
-									atomic_read(&ndev->refcnt));
-				 atomic_inc(&ndev->refcnt);
+									netdev_refcnt_read(ndev));
+				 dev_hold(ndev);
 				 break;
 
 			case NETDEV_UNREGISTER:
 				 /* Decrement the Reference Count for "veth0" */
 				BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "Unregister RefCnt: %x\n",
-									atomic_read(&ndev->refcnt));
-				atomic_dec(&ndev->refcnt);
-				if((int)atomic_read(&ndev->refcnt) < 0)
-					atomic_set(&ndev->refcnt, 0);
+									netdev_refcnt_read(ndev));
+				dev_put(ndev);
 				break;
 		};
 	}