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.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c
index 36a4a79..2935223 100644
--- a/sys/kern/kern_descrip.c
+++ b/sys/kern/kern_descrip.c
@@ -2359,6 +2359,7 @@ fget_unlocked(struct filedesc *fdp, int fd, cap_rights_t *needrightsp,
}
}
#endif
+ retry:
count = fp->f_count;
if (count == 0) {
fdt = fdp->fd_files;
@@ -2368,10 +2369,8 @@ fget_unlocked(struct filedesc *fdp, int fd, cap_rights_t *needrightsp,
* Use an acquire barrier to force re-reading of fdt so it is
* refreshed for verification.
*/
- if (atomic_cmpset_acq_int(&fp->f_count, count, count + 1) == 0) {
- fdt = fdp->fd_files;
- continue;
- }
+ if (atomic_cmpset_acq_int(&fp->f_count, count, count + 1) == 0)
+ goto retry;
fdt = fdp->fd_files;
#ifdef CAPABILITIES
if (seq_consistent_nomb(fd_seq(fdt, fd), seq))
OpenPOWER on IntegriCloud