diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c
index 2d0141e95c88465e4416e88ac5b447ebcaddcbf7..8072aefc427cef7486f24905150c081c3bd9534f 100644
--- a/fs/ceph/caps.c
+++ b/fs/ceph/caps.c
@@ -2390,7 +2390,7 @@ static void handle_cap_grant(struct inode *inode, struct ceph_mds_caps *grant,
 			    &atime);
 
 	/* max size increase? */
-	if (max_size != ci->i_max_size) {
+	if (ci->i_auth_cap == cap && max_size != ci->i_max_size) {
 		dout("max_size %lld -> %llu\n", ci->i_max_size, max_size);
 		ci->i_max_size = max_size;
 		if (max_size >= ci->i_wanted_max_size) {