Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2996014imu; Mon, 19 Nov 2018 09:08:03 -0800 (PST) X-Google-Smtp-Source: AJdET5e+Pc/Op60ZY2odZzX9rU18EvnSEm8DhVbomX+qJxN2WfkuHtvvvDHV9cd13mPY4QYFIrno X-Received: by 2002:a62:8096:: with SMTP id j144mr24167387pfd.140.1542647283105; Mon, 19 Nov 2018 09:08:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542647283; cv=none; d=google.com; s=arc-20160816; b=iabDJLgf2PV4MoGPrC6C3lDGIx/kzYRtxpYlk972cK4OWMDB3JfKzRpYFRl8zaen3d AvJRQlJLTsnEHk9VFKuVmQCIqt1wqPLrmxEdhVXc9ti5xJGtkpcw5tMR3wlyctegIwkC 6xQA7a+MU0WUocxWKJ5V8wLij3PKNoEetB2w8KcM0JeACAwRrbBXgpsNcvgd85mNV2yJ pE/xfA97WPqUAq6wZf00Q5dTai57Kazl8wXcjNOB02nrh6zNSJcDm7/yEZFrjsEnUGii vahr+ICSFkmU0Hk8p5otXOyfhaIEAHpWiRK+qIjjLjHCWnF53V+2X+ZJ876y/rVcHKCv ewnQ== 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=NlSiALOH2zpOJG21IqycG045y79v6NUrwzIE0RLWW40=; b=WDSdUmldz9dBOqRo1HzVA1cNcjtIrluE8tQkFR3tyoqBEjAN/l9BAkgealeexUhq6g 0hXpmi+Jgn9LcFeduY1s7GADysDAUg+/suZN4zGkv/wqmc74qTU57FcPqdpvJbdBp73o 4008w6jMHrQn5RA1uwFOZDaXKdflgk7JRZzTsaYKBwhnnAJwTo178z89XAJ0BWV7JAfK sFFdl6KMsNvMecPRUo05dr9wcC06Rjkkni2o2/olEqi5aMNLwMjSYyOuQ2FvWQ1s6KqX GG1i3O3r9+sRseCc3eDRTQn7Tfb/wPD6QGMgf6brUBIbaIt3dEPVSCBJX/fuI663pzVh Bg0Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=fMxM5l13; 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 c2-v6si41400149plb.123.2018.11.19.09.07.47; Mon, 19 Nov 2018 09:08:03 -0800 (PST) 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=fMxM5l13; 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 S2407151AbeKTDao (ORCPT + 99 others); Mon, 19 Nov 2018 22:30:44 -0500 Received: from mail.kernel.org ([198.145.29.99]:45880 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2405988AbeKTDan (ORCPT ); Mon, 19 Nov 2018 22:30:43 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (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 916162146D; Mon, 19 Nov 2018 17:06:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1542647186; bh=OX7hmI421kfrOemCBPjMoXdhRnyLdDny4KkdgZzmDEM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fMxM5l135uRehSOryBwafbXF7NuGg9D5FnApR6XOLgMxa+teIDFvAYSmKwmZ47KzN 3TXlLQVuNHgEBsbok/sbWa9Bq/Pp/IpmtlUeXgDu+k0qqIdXnRigHDS0NacY3XM+Wk +xmFvh8KTgkpbJvu3yDTM21VeTl/7drdReSIkfIo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Al Viro , "Eric W. Biederman" Subject: [PATCH 3.18 84/90] mount: Retest MNT_LOCKED in do_umount Date: Mon, 19 Nov 2018 17:30:06 +0100 Message-Id: <20181119162633.377182899@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181119162620.585061184@linuxfoundation.org> References: <20181119162620.585061184@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review 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 3.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Eric W. Biederman commit 25d202ed820ee347edec0bf3bf553544556bf64b upstream. It was recently pointed out that the one instance of testing MNT_LOCKED outside of the namespace_sem is in ksys_umount. Fix that by adding a test inside of do_umount with namespace_sem and the mount_lock held. As it helps to fail fails the existing test is maintained with an additional comment pointing out that it may be racy because the locks are not held. Cc: stable@vger.kernel.org Reported-by: Al Viro Fixes: 5ff9d8a65ce8 ("vfs: Lock in place mounts from more privileged users") Signed-off-by: "Eric W. Biederman" Signed-off-by: Greg Kroah-Hartman --- fs/namespace.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) --- a/fs/namespace.c +++ b/fs/namespace.c @@ -1478,8 +1478,13 @@ static int do_umount(struct mount *mnt, namespace_lock(); lock_mount_hash(); - event++; + /* Recheck MNT_LOCKED with the locks held */ + retval = -EINVAL; + if (mnt->mnt.mnt_flags & MNT_LOCKED) + goto out; + + event++; if (flags & MNT_DETACH) { if (!list_empty(&mnt->mnt_list)) umount_tree(mnt, UMOUNT_PROPAGATE); @@ -1493,6 +1498,7 @@ static int do_umount(struct mount *mnt, retval = 0; } } +out: unlock_mount_hash(); namespace_unlock(); return retval; @@ -1571,7 +1577,7 @@ SYSCALL_DEFINE2(umount, char __user *, n goto dput_and_out; if (!check_mnt(mnt)) goto dput_and_out; - if (mnt->mnt.mnt_flags & MNT_LOCKED) + if (mnt->mnt.mnt_flags & MNT_LOCKED) /* Check optimistically */ goto dput_and_out; retval = -EPERM; if (flags & MNT_FORCE && !capable(CAP_SYS_ADMIN))