From e018907ed42d953edae7d45449e6ab982e668250 Mon Sep 17 00:00:00 2001 From: "Andrey A. Chernov" Date: Thu, 23 Aug 2001 14:09:16 +0000 Subject: [PATCH] Apparently SEEK_END locking not supported by NFS. Previous variant returns EINVAL in that case, change it to EOPNOTSUPP. --- sys/nfs/nfs_lock.c | 6 +++++- sys/nfsclient/nfs_lock.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/sys/nfs/nfs_lock.c b/sys/nfs/nfs_lock.c index cfb8f5a9d16..4e670f27a5c 100644 --- a/sys/nfs/nfs_lock.c +++ b/sys/nfs/nfs_lock.c @@ -102,7 +102,11 @@ nfs_dolock(ap) * the NLM protocol doesn't allow the server to return an error * on ranges, so we do it. */ - if (fl->l_start < 0 || fl->l_len < 0) + if (fl->l_len < 0) + return (EINVAL); + if (fl->l_whence == SEEK_END) + return (EOPNOTSUPP); + if (fl->l_start < 0) return (EINVAL); if (fl->l_len != 0 && (fl->l_len - 1 > OFF_MAX - fl->l_start)) return (EOVERFLOW); diff --git a/sys/nfsclient/nfs_lock.c b/sys/nfsclient/nfs_lock.c index cfb8f5a9d16..4e670f27a5c 100644 --- a/sys/nfsclient/nfs_lock.c +++ b/sys/nfsclient/nfs_lock.c @@ -102,7 +102,11 @@ nfs_dolock(ap) * the NLM protocol doesn't allow the server to return an error * on ranges, so we do it. */ - if (fl->l_start < 0 || fl->l_len < 0) + if (fl->l_len < 0) + return (EINVAL); + if (fl->l_whence == SEEK_END) + return (EOPNOTSUPP); + if (fl->l_start < 0) return (EINVAL); if (fl->l_len != 0 && (fl->l_len - 1 > OFF_MAX - fl->l_start)) return (EOVERFLOW); -- 2.45.2