Received: by 2002:a4a:311b:0:0:0:0:0 with SMTP id k27-v6csp4806115ooa; Tue, 14 Aug 2018 10:48:30 -0700 (PDT) X-Google-Smtp-Source: AA+uWPwFYBARBOw9SBzhVXh1ylxHLj47MaBRkcOSJ1oN+rR25H91ZSqR8jN6UM1tgDOVRiEwHapV X-Received: by 2002:a17:902:5a4c:: with SMTP id f12-v6mr21295418plm.253.1534268910332; Tue, 14 Aug 2018 10:48:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534268910; cv=none; d=google.com; s=arc-20160816; b=FS3wrlC1m91ia+IOnP3E3D7weUej640K7/dhcNDRKkhHf/n/sale9cmLFkjbIdFhTH RlwAup3T3TILnogBFobyTuibpQBKdQRQTsC6Muo7IUSaz6rv4F7v/tepoLF9xj6IRt02 Dc9QRrdtIfVpxpOpK5zNNLP7gP11PBJyVXy/mESkub3XvJhDibDUbUWH7hQH9kLPfMpY WY/AiIrjWsAq6RbNno6GTQksubaMGhB5REKWGRtARwTBkvZKI0iHjxUQgtWydjXXz8X7 +EHqKhnD2R7PmrvkY0ld6kfhAOS5Tk3tO4ck6AjCXfJoThGpJqb7xUphW9SDDd3r7cqd eSdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=Jc2fIY4yRMEFcwdVz+VP5hhIrrKyFVNp6CmvAkEu7Bk=; b=nGNvCWt1D8/rvtjBlc3bI9j0C1fyMxTQV4nYlovRUipLUt8qcpbTj62hDEQO66Nqc6 2a3b3ep+Y7rRkpoU9s3Q5C5EB3hTLVAmBvQZs0CAR6Ctai5Pir6zYnjBMXyKakriYxFM BiYtazEts/wTbaGSetFEl9eXN1zAceN6dpoY8EZ13axy/YDjB5NXj2U7i05IaVWpDiKf TuZsmGY/C3k5bJVNtGy+fZLJHzntiPYiJo8vEd7TSzvWQVxc1SdJC6uCEd5BCiUR/Eyl myw41swRk3/x7O/QYkldrwTGi1rs5yVseNqFWhi35qbQjYsG0Z5+TSt0oCKcpPmliqGF HMrA== ARC-Authentication-Results: i=1; mx.google.com; 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 r15-v6si18454429pgf.403.2018.08.14.10.48.15; Tue, 14 Aug 2018 10:48:30 -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; 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 S2390984AbeHNUeI (ORCPT + 99 others); Tue, 14 Aug 2018 16:34:08 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:60310 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390473AbeHNUeI (ORCPT ); Tue, 14 Aug 2018 16:34:08 -0400 Received: from localhost (unknown [194.244.16.108]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 7250CD06; Tue, 14 Aug 2018 17:45:56 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Al Viro Subject: [PATCH 4.4 10/43] root dentries need RCU-delayed freeing Date: Tue, 14 Aug 2018 19:17:46 +0200 Message-Id: <20180814171517.772981706@linuxfoundation.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180814171517.014285600@linuxfoundation.org> References: <20180814171517.014285600@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Al Viro commit 90bad5e05bcdb0308cfa3d3a60f5c0b9c8e2efb3 upstream. Since mountpoint crossing can happen without leaving lazy mode, root dentries do need the same protection against having their memory freed without RCU delay as everything else in the tree. It's partially hidden by RCU delay between detaching from the mount tree and dropping the vfsmount reference, but the starting point of pathwalk can be on an already detached mount, in which case umount-caused RCU delay has already passed by the time the lazy pathwalk grabs rcu_read_lock(). If the starting point happens to be at the root of that vfsmount *and* that vfsmount covers the entire filesystem, we get trouble. Fixes: 48a066e72d97 ("RCU'd vsfmounts") Cc: stable@vger.kernel.org Signed-off-by: Al Viro Signed-off-by: Greg Kroah-Hartman --- fs/dcache.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --- a/fs/dcache.c +++ b/fs/dcache.c @@ -1954,10 +1954,12 @@ struct dentry *d_make_root(struct inode static const struct qstr name = QSTR_INIT("/", 1); res = __d_alloc(root_inode->i_sb, &name); - if (res) + if (res) { + res->d_flags |= DCACHE_RCUACCESS; d_instantiate(res, root_inode); - else + } else { iput(root_inode); + } } return res; }