--- a/sys/kern/kern_lockf.c 2026-06-29 12:51:19.000000000 +0000 +++ b/sys/kern/kern_lockf.c 2026-10-26 00:25:42.777043079 +0000 @@ -228,7 +228,14 @@ flags |= F_NOEND; end = LLONG_MAX; } else if (fl->l_len < 0) { - return(EINVAL); + /* + * POSIX.1-2008: a negative length means the byte range + * [l_start + l_len, l_start - 1]. + */ + end = start - 1; + start = start + fl->l_len; + if (start < 0) + return(EINVAL); } else { end = start + fl->l_len - 1; if (end < start)