On the return path from F_RDAHEAD and F_READAHEAD fcntls, do not

unlock Giant twice.

While there, bring conditions in the do/while loops closer to style,
that also makes the lines fit into 80 columns.

Reported and tested by:	dougb
This commit is contained in:
Konstantin Belousov 2009-11-20 22:22:53 +00:00
parent 086f6e0cc7
commit 080136212f

View file

@ -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;