NFSv4: Fix fscache cookie aux_data to ensure change_attr is included
authorDave Wysochanski <dwysocha@redhat.com>
Thu, 16 Apr 2020 10:06:08 +0000 (06:06 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 May 2020 06:20:23 +0000 (08:20 +0200)
commitb526c01b38aea00b0d96da895fcebf6233310a36
treeb4c1b1f97179ac8527c5ecd58f561854332c2b67
parent021f5799de535c5223aa340267cf073c939e9371
NFSv4: Fix fscache cookie aux_data to ensure change_attr is included

[ Upstream commit 50eaa652b54df1e2b48dc398d9e6114c9ed080eb ]

Commit 402cb8dda949 ("fscache: Attach the index key and aux data to
the cookie") added the aux_data and aux_data_len to parameters to
fscache_acquire_cookie(), and updated the callers in the NFS client.
In the process it modified the aux_data to include the change_attr,
but missed adding change_attr to a couple places where aux_data was
used.  Specifically, when opening a file and the change_attr is not
added, the following attempt to lookup an object will fail inside
cachefiles_check_object_xattr() = -116 due to
nfs_fscache_inode_check_aux() failing memcmp on auxdata and returning
FSCACHE_CHECKAUX_OBSOLETE.

Fix this by adding nfs_fscache_update_auxdata() to set the auxdata
from all relevant fields in the inode, including the change_attr.

Fixes: 402cb8dda949 ("fscache: Attach the index key and aux data to the cookie")
Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/nfs/fscache.c