NFSv4: Fix a regression in decode_getfattr
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Sat, 23 Oct 2010 19:43:10 +0000 (15:43 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Sat, 23 Oct 2010 19:43:10 +0000 (15:43 -0400)
We don't want to have the mounted_on_fileid overwrite the true fileid. We
only return the former if the server didn't supply the true fileid.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/nfs4xdr.c

index a6b00e84bd1a1c38dac2a6d2990837fa9e9b3067..707975eebb5d7dde066502fe0be31f63e3fa2b9f 100644 (file)
@@ -3912,7 +3912,7 @@ static int decode_getfattr_attrs(struct xdr_stream *xdr, uint32_t *bitmap,
        status = decode_attr_mounted_on_fileid(xdr, bitmap, &fileid);
        if (status < 0)
                goto xdr_error;
-       if (status != 0) {
+       if (status != 0 && !(fattr->valid & status)) {
                fattr->fileid = fileid;
                fattr->valid |= status;
        }