locking on exit of reading from ip_sync is not correct for all instances

Approved by:	re (dwhite)
This commit is contained in:
darrenr 2005-06-14 09:18:26 +00:00
parent 0bdf9fcd67
commit d742076594

View File

@ -442,21 +442,26 @@ struct uio *uio;
l = get_sleep_lock(&sl_tail);
err = sleep(&sl_tail, PZERO+1);
if (err) {
MUTEX_EXIT(&ipsl_mutex);
return EINTR;
}
spinunlock(l);
}
# else /* __hpux */
# ifdef __osf__
err = mpsleep(&sl_tail, PSUSP|PCATCH, "ipl sleep", 0,
&ipsl_mutex, MS_LOCK_SIMPLE);
if (err)
return EINTR;
# else
MUTEX_EXIT(&ipsl_mutex);
err = SLEEP(&sl_tail, "ipl sleep");
if (err)
return EINTR;
MUTEX_ENTER(&ipsl_mutex);
# endif /* __osf__ */
# endif /* __hpux */
if (err) {
MUTEX_EXIT(&ipsl_mutex);
return err;
}
# endif /* SOLARIS */
}
MUTEX_EXIT(&ipsl_mutex);