diff options
author | ache <ache@FreeBSD.org> | 2001-08-23 15:44:24 +0000 |
---|---|---|
committer | ache <ache@FreeBSD.org> | 2001-08-23 15:44:24 +0000 |
commit | e932bf8680ea1222e52e9735936fb6a75762d5a9 (patch) | |
tree | 68d57ac47f64417f007624633a049c888de89ace /sys/fs/smbfs | |
parent | ffadfe832fd5364e9e82627721c1c0094a3207b5 (diff) | |
download | FreeBSD-src-e932bf8680ea1222e52e9735936fb6a75762d5a9.zip FreeBSD-src-e932bf8680ea1222e52e9735936fb6a75762d5a9.tar.gz |
Copy POSIX l_len<0 handling from kern_lockf.c
Diffstat (limited to 'sys/fs/smbfs')
-rw-r--r-- | sys/fs/smbfs/smbfs_vnops.c | 9 |
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; |