diff options
author | ache <ache@FreeBSD.org> | 2001-08-23 14:09:16 +0000 |
---|---|---|
committer | ache <ache@FreeBSD.org> | 2001-08-23 14:09:16 +0000 |
commit | aafa17c550a577937c77ffc95f0a8fea9cf5c8cb (patch) | |
tree | d0c3bea1823b764b83c80aac74cfc53db7b88e3a | |
parent | 29e4dde471102bcfee70455939ab1402b5ecca92 (diff) | |
download | FreeBSD-src-aafa17c550a577937c77ffc95f0a8fea9cf5c8cb.zip FreeBSD-src-aafa17c550a577937c77ffc95f0a8fea9cf5c8cb.tar.gz |
Apparently SEEK_END locking not supported by NFS. Previous variant
returns EINVAL in that case, change it to EOPNOTSUPP.
-rw-r--r-- | sys/nfs/nfs_lock.c | 6 | ||||
-rw-r--r-- | 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 cfb8f5a..4e670f2 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 cfb8f5a..4e670f2 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); |