summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_descrip.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/kern_descrip.c')
-rw-r--r--sys/kern/kern_descrip.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c
index 434f54a..676de65 100644
--- a/sys/kern/kern_descrip.c
+++ b/sys/kern/kern_descrip.c
@@ -718,14 +718,15 @@ kern_fcntl(struct thread *td, int fd, int cmd, intptr_t arg)
do {
new = old = fp->f_flag;
new |= FRDAHEAD;
- } while (atomic_cmpset_rel_int(&fp->f_flag, old, new) == 0);
+ } while (!atomic_cmpset_rel_int(&fp->f_flag, old, new));
readahead_vnlock_fail:
VFS_UNLOCK_GIANT(vfslocked);
+ vfslocked = 0;
} else {
do {
new = old = fp->f_flag;
new &= ~FRDAHEAD;
- } while (atomic_cmpset_rel_int(&fp->f_flag, old, new) == 0);
+ } while (!atomic_cmpset_rel_int(&fp->f_flag, old, new));
}
fdrop(fp, td);
break;
OpenPOWER on IntegriCloud