diff options
author | Paul Fulghum <paulkf@microgate.com> | 2007-08-23 01:01:50 +0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-08-23 06:52:46 +0400 |
commit | d4c63b7c74507c424afcc9c80ba77a55bfb0d07e (patch) | |
tree | 787e2771cff667e7e2494138475409c27e511517 /drivers/char/synclink_gt.c | |
parent | 1807a1aaf5f2a35ea6d4b527b28bc8889d255a2f (diff) | |
download | linux-d4c63b7c74507c424afcc9c80ba77a55bfb0d07e.tar.xz |
synclink_gt fix module reference
Get module reference on open() by generic HDLC to prevent module from
unloading while interface is active.
Signed-off-by: Paul Fulghum <paulkf@microgate.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/char/synclink_gt.c')
-rw-r--r-- | drivers/char/synclink_gt.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/char/synclink_gt.c b/drivers/char/synclink_gt.c index bbb7f1292665..2f97d2f8f916 100644 --- a/drivers/char/synclink_gt.c +++ b/drivers/char/synclink_gt.c @@ -1565,6 +1565,9 @@ static int hdlcdev_open(struct net_device *dev) int rc; unsigned long flags; + if (!try_module_get(THIS_MODULE)) + return -EBUSY; + DBGINFO(("%s hdlcdev_open\n", dev->name)); /* generic HDLC layer open processing */ @@ -1634,6 +1637,7 @@ static int hdlcdev_close(struct net_device *dev) info->netcount=0; spin_unlock_irqrestore(&info->netlock, flags); + module_put(THIS_MODULE); return 0; } |