diff options
author | J. Bruce Fields <bfields@redhat.com> | 2012-04-09 18:06:49 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2012-04-11 17:49:52 -0400 |
commit | 9dc4e6c4d1182d34604ea40fef641775f5b15456 (patch) | |
tree | 22b055349ea646026a97ea0b0cc7da32c18f26dd /lib/ts_bm.c | |
parent | 0034102808e0dbbf3a2394b82b1bb40b5778de9e (diff) | |
download | linux-3.10-9dc4e6c4d1182d34604ea40fef641775f5b15456.tar.gz linux-3.10-9dc4e6c4d1182d34604ea40fef641775f5b15456.tar.bz2 linux-3.10-9dc4e6c4d1182d34604ea40fef641775f5b15456.zip |
nfsd: don't fail unchecked creates of non-special files
Allow a v3 unchecked open of a non-regular file succeed as if it were a
lookup; typically a client in such a case will want to fall back on a
local open, so succeeding and giving it the filehandle is more useful
than failing with nfserr_exist, which makes it appear that nothing at
all exists by that name.
Similarly for v4, on an open-create, return the same errors we would on
an attempt to open a non-regular file, instead of returning
nfserr_exist.
This fixes a problem found doing a v4 open of a symlink with
O_RDONLY|O_CREAT, which resulted in the current client returning EEXIST.
Thanks also to Trond for analysis.
Cc: stable@kernel.org
Reported-by: Orion Poplawski <orion@cora.nwra.com>
Tested-by: Orion Poplawski <orion@cora.nwra.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'lib/ts_bm.c')
0 files changed, 0 insertions, 0 deletions