Workaround bad locking design:

do not try to lock/unlock destroyed/non-existsing mutex.

PR:		kern/103569
Reviewed by:	guido
Approved by:	glebius (mentor)
Silence from:	darrenr
MFC:		2 week
This commit is contained in:
Oleg Bulyzhin 2006-10-05 09:48:25 +00:00
parent 32d5d9ffc9
commit 29453026ea
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=163027

View File

@ -481,7 +481,8 @@ int mode;
}
SPL_NET(s);
READ_ENTER(&ipf_global);
if (fr_running > 0)
READ_ENTER(&ipf_global);
error = fr_ioctlswitch(unit, data, cmd, mode);
if (error != -1) {
@ -514,7 +515,10 @@ int mode;
else
(void) ipldetach();
} else {
error = ipldetach();
if (fr_running <= 0)
error = 0;
else
error = ipldetach();
if (error == 0)
fr_running = -1;
}
@ -627,7 +631,9 @@ int mode;
break;
}
RWLOCK_EXIT(&ipf_global);
if (fr_running > 0)
if (mtx_owned(&(&ipf_global)->ipf_lk))
RWLOCK_EXIT(&ipf_global);
SPL_X(s);
return error;