summaryrefslogtreecommitdiffstats
path: root/sys/fs
diff options
context:
space:
mode:
authorache <ache@FreeBSD.org>2001-08-23 15:44:24 +0000
committerache <ache@FreeBSD.org>2001-08-23 15:44:24 +0000
commite932bf8680ea1222e52e9735936fb6a75762d5a9 (patch)
tree68d57ac47f64417f007624633a049c888de89ace /sys/fs
parentffadfe832fd5364e9e82627721c1c0094a3207b5 (diff)
downloadFreeBSD-src-e932bf8680ea1222e52e9735936fb6a75762d5a9.zip
FreeBSD-src-e932bf8680ea1222e52e9735936fb6a75762d5a9.tar.gz
Copy POSIX l_len<0 handling from kern_lockf.c
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/smbfs/smbfs_vnops.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/fs/smbfs/smbfs_vnops.c b/sys/fs/smbfs/smbfs_vnops.c
index e52adf3..bc2a5c3 100644
--- a/sys/fs/smbfs/smbfs_vnops.c
+++ b/sys/fs/smbfs/smbfs_vnops.c
@@ -980,8 +980,6 @@ smbfs_advlock(ap)
off_t start, end;
int error, lkop;
- if (fl->l_len < 0)
- return EINVAL;
if (vp->v_type == VDIR) {
/*
* SMB protocol have no support for directory locking.
@@ -1009,7 +1007,12 @@ smbfs_advlock(ap)
}
if (start < 0)
return EINVAL;
- if (fl->l_len == 0)
+ if (fl->l_len < 0) {
+ start += fl->l_len;
+ if (start <= 0)
+ return EINVAL;
+ end = start - 1;
+ } else if (fl->l_len == 0)
end = -1;
else {
off_t oadd = fl->l_len - 1;
OpenPOWER on IntegriCloud