Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp1042743ybp; Thu, 17 Oct 2019 07:15:45 -0700 (PDT) X-Google-Smtp-Source: APXvYqzanpjNuVuCB9lGDOOyRIV5ioBwOXgiCudtBcSzKQEp4Jz+ujz7T8ZjU3bmB7yanJpqqMM8 X-Received: by 2002:a17:906:309b:: with SMTP id 27mr3664902ejv.243.1571321745157; Thu, 17 Oct 2019 07:15:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1571321745; cv=none; d=google.com; s=arc-20160816; b=W+2ekcV4HoWN0Xjv3mA9s3SEoJU5WVyyFWeCAuWAZEqs6dVbzbUZI9TsyW2nOVC8I/ 4nDMgfTmOkeyAfPD81wL7BRW1Xcse4XMKyU2DN636eMvO1uWmLuB4cjP71kxT9SVosUY nSUMJEkKU/4rcbJv6Qu3A6zgriOYqm9nV2NhwQHCwEuL38lBkd+Gn0GNTu3lxf/4gxOY OCqlcNL9H0QbemqTR0Gy5BYgVnjMp7S1amQ7TTSPq2QHn9kRvbbIvqFZnGpcmv5uZ5xS mMdLfMUAtuI0s90gGB9JozJWNNAf684SdqFNIQ6MSlziHjCn87hvZiqJ/mIcWY0a5cQV Dc1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=bjy463HbGEbkiR+dqUSSBYAvzhnRKHn8qdUuYymZ/rA=; b=hUTx8qadicoj/xI/mfT33st4VQHfvK8O9NvjWWL4KNe16E0qzc/KRb8LLOTVV9brMU XtmUYGVzaCRbGnISSq1EUsLAHxaYof8VLlyS9TQPk/B97znoKJ7q4ock/IKq3DGBYtSU X3ap8QhytEMMaM08TS/hZxXAptJ99tBacgW+QXEedu72DRKQEbHE5JgYlm6aR/a/rv8L v4EAGO0yxiR7NK0JCBrCTrhPY/waqLj6LIoTnz6p/wmGN8Sv3CLG8omkeJ90metKCGEY fepp+S3UKW9jb1yIjc6z+Uko949iQjxj9zS2j9Pytkp9gFhwirz+X87DgdtyRbD3RwPF hNHg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=s2tTHYHs; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f21si1562403eda.216.2019.10.17.07.15.22; Thu, 17 Oct 2019 07:15:45 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=s2tTHYHs; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2437619AbfJPVxz (ORCPT + 99 others); Wed, 16 Oct 2019 17:53:55 -0400 Received: from mail.kernel.org ([198.145.29.99]:43158 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2437608AbfJPVxw (ORCPT ); Wed, 16 Oct 2019 17:53:52 -0400 Received: from localhost (unknown [192.55.54.58]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 17DCA218DE; Wed, 16 Oct 2019 21:53:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1571262831; bh=yMdd9+3dIqRrqhK2Xmm3GHRba8cax9jHAW2YNqLK5pI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=s2tTHYHs2jgbPZNJt26YpwpoWZOR2xniIyOqrEnvurTcq/BLmaznJ1Yyxc0bI9DSO wVgaqiHGCzZkG87iqxU3virUl3h1mQNWw9cQPrzmlTjBI858vf1RQOsPWTHZWuU5Tc 5EPQmnNJ7jZknh4tnHiloO20d3YCjp6ya1MutJZs= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Ross Lagerwall , Steve French , Sasha Levin Subject: [PATCH 4.4 74/79] cifs: Check uniqueid for SMB2+ and return -ESTALE if necessary Date: Wed, 16 Oct 2019 14:50:49 -0700 Message-Id: <20191016214832.919397500@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191016214729.758892904@linuxfoundation.org> References: <20191016214729.758892904@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ross Lagerwall [ Upstream commit a108471b5730b52017e73b58c9f486319d2ac308 ] Commit 7196ac113a4f ("Fix to check Unique id and FileType when client refer file directly.") checks whether the uniqueid of an inode has changed when getting the inode info, but only when using the UNIX extensions. Add a similar check for SMB2+, since this can be done without an extra network roundtrip. Signed-off-by: Ross Lagerwall Signed-off-by: Steve French Signed-off-by: Sasha Levin --- fs/cifs/inode.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c index 0f210cb5038a4..3d3c66fcb5ee6 100644 --- a/fs/cifs/inode.c +++ b/fs/cifs/inode.c @@ -829,8 +829,21 @@ cifs_get_inode_info(struct inode **inode, const char *full_path, } } else fattr.cf_uniqueid = iunique(sb, ROOT_I); - } else - fattr.cf_uniqueid = CIFS_I(*inode)->uniqueid; + } else { + if ((cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM) && + validinum == false && server->ops->get_srv_inum) { + /* + * Pass a NULL tcon to ensure we don't make a round + * trip to the server. This only works for SMB2+. + */ + tmprc = server->ops->get_srv_inum(xid, + NULL, cifs_sb, full_path, + &fattr.cf_uniqueid, data); + if (tmprc) + fattr.cf_uniqueid = CIFS_I(*inode)->uniqueid; + } else + fattr.cf_uniqueid = CIFS_I(*inode)->uniqueid; + } /* query for SFU type info if supported and needed */ if (fattr.cf_cifsattrs & ATTR_SYSTEM && @@ -871,6 +884,13 @@ cifs_get_inode_info(struct inode **inode, const char *full_path, } else { /* we already have inode, update it */ + /* if uniqueid is different, return error */ + if (unlikely(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM && + CIFS_I(*inode)->uniqueid != fattr.cf_uniqueid)) { + rc = -ESTALE; + goto cgii_exit; + } + /* if filetype is different, return error */ if (unlikely(((*inode)->i_mode & S_IFMT) != (fattr.cf_mode & S_IFMT))) { -- 2.20.1