diff options
Diffstat (limited to 'sys/fs/smbfs/smbfs_vnops.c')
-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; |