From: David Howells Date: Tue, 30 Jul 2019 13:38:51 +0000 (+0100) Subject: afs: Fix off-by-one in afs_rename() expected data version calculation X-Git-Tag: v5.2.12~141 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=b4988bb9011472ccc117102d2a95a3af9d6ef444;p=users%2Fdwmw2%2Flinux.git afs: Fix off-by-one in afs_rename() expected data version calculation [ Upstream commit 37c0bbb3326674940e657118306ac52364314523 ] When afs_rename() calculates the expected data version of the target directory in a cross-directory rename, it doesn't increment it as it should, so it always thinks that the target inode is unexpectedly modified on the server. Fixes: a58823ac4589 ("afs: Fix application of status and callback to be under same lock") Signed-off-by: David Howells Signed-off-by: Sasha Levin --- diff --git a/fs/afs/dir.c b/fs/afs/dir.c index da9563d62b327..9750ac70f8ffb 100644 --- a/fs/afs/dir.c +++ b/fs/afs/dir.c @@ -1807,7 +1807,7 @@ static int afs_rename(struct inode *old_dir, struct dentry *old_dentry, afs_end_vnode_operation(&fc); goto error_rehash; } - new_data_version = new_dvnode->status.data_version; + new_data_version = new_dvnode->status.data_version + 1; } else { new_data_version = orig_data_version; new_scb = &scb[0];