summaryrefslogtreecommitdiffstats
path: root/sys/fs/smbfs/smbfs_vnops.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/fs/smbfs/smbfs_vnops.c')
-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