The FRELE() macro described in file(9) as void FRELE(), but actually it has "return value" and it's "return value" is used by closef().
Index: share/man/man9/file.9 =================================================================== RCS file: /home/cvsync/openbsd-cvs/src/share/man/man9/file.9,v retrieving revision 1.12 diff -u -p -r1.12 file.9 --- share/man/man9/file.9 4 Jun 2013 19:27:06 -0000 1.12 +++ share/man/man9/file.9 30 Apr 2015 02:33:43 -0000 @@ -37,7 +37,7 @@ .Fn fdrelease "struct proc *p" "int fd" .Ft void .Fn FREF "struct file *fp" -.Ft void +.Ft int .Fn FRELE "struct file *fp" "struct proc *p" .Ft struct file * .Fn fd_getfile "struct filedesc *fdp" "int fd"