From 5ee1ac46456da10a24fd822d1bb27dd0b816b488 Mon Sep 17 00:00:00 2001 From: Tai-hwa Liang Date: Tue, 10 Jul 2007 09:23:10 +0000 Subject: [PATCH] Fixing the mount_smbfs(8) hanging by utilising the destroy_dev_sched() KPI. Relevant threads: http://lists.freebsd.org/pipermail/freebsd-current/2007-June/074329.html Reviewed by: kib, bp (slightly different version) Tested by: Yuri Pankov , Jiawei Ye Approved by: re (kensmith) --- sys/netsmb/smb_dev.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/netsmb/smb_dev.c b/sys/netsmb/smb_dev.c index 850f0ad018df..3181438b4657 100644 --- a/sys/netsmb/smb_dev.c +++ b/sys/netsmb/smb_dev.c @@ -175,7 +175,7 @@ nsmb_dev_close(struct cdev *dev, int flag, int fmt, struct thread *td) */ dev->si_drv1 = NULL; free(sdp, M_NSMBDEV); - destroy_dev(dev); + destroy_dev_sched(dev); splx(s); return 0; } @@ -349,6 +349,8 @@ nsmb_dev_load(module_t mod, int cmd, void *arg) if (error) break; EVENTHANDLER_DEREGISTER(dev_clone, nsmb_dev_tag); + drain_dev_clone_events(); + destroy_dev_drain(&nsmb_cdevsw); printf("netsmb_dev: unloaded\n"); break; default: