Skip to content

Commit

Permalink
Staging: bcm: fix up network device reference counting
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Greg Kroah-Hartman committed Oct 28, 2010
1 parent bceaddd commit eebfc60
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions drivers/staging/bcm/Bcmnet.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
};
}
Expand Down

0 comments on commit eebfc60

Please sign in to comment.