From eebfc6055aba312f8b620a58fe1c23471cdcd149 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 28 Oct 2010 09:54:23 -0700 Subject: [PATCH] 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 Signed-off-by: Greg Kroah-Hartman --- drivers/staging/bcm/Bcmnet.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/staging/bcm/Bcmnet.c b/drivers/staging/bcm/Bcmnet.c index bb9260c..bc29698 100644 --- a/drivers/staging/bcm/Bcmnet.c +++ b/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; }; } -- 2.7.4