Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp2578973imm; Thu, 16 Aug 2018 11:50:25 -0700 (PDT) X-Google-Smtp-Source: AA+uWPx7dx9nH/rIOv6f56jMZihumTn89KJQMxn23xVVgqOH1xVk5b47PtHkKWG10JCg1e9/Harq X-Received: by 2002:a17:902:9a8b:: with SMTP id w11-v6mr30152877plp.333.1534445425473; Thu, 16 Aug 2018 11:50:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534445425; cv=none; d=google.com; s=arc-20160816; b=EffNYDfrmBrN/hF5OC95x/dUhRZa7K5Mlu6IH9PrAjt7fdUVeoAWGlULN1/awCYSvv wJAEAGCZlcURt+dplkbO0WgSwOjgQJEZycq12rCC0sS339DbnYcErqRHXZBaShfAg+Fy G7jFvRCa9YuepgzU1w9kerpHKZYsdMWIsjKgMGJ2IohX7Po0GpI8ZzzVrDExRHAHHzmW X7TSjA7ZXEZJBVakFkycWljH18/L/hljnW5tdbyBMBM5mN5TB2kiCzUSIIUKRYkvcOdo OSJHCO0FJk2GCzRJ0/Red/mDM00Jcy2FMYLq+QhlDK7a2wSzFGGjhSlib5XQhfIh9upZ zNdw== 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=iYShVjqufd+qL6ZFjSYdJC9INCcsGflTorcrKhkoEL4=; b=f9ksAtFS7Ihu/fcpCyBuyT9p8LXZRSnXgjVDBRnEfmuCkEJuUczN7cnoM1E1VI5mqy rUkyGo4WtwzDoaikN93x61v59+BlQc2NFPwccrG/XxVuaL0GoqIhtKKnf9T8RoPc17ni OI+EWtSxDuVIV+Ndzpafb/JnhYnKbiLHtVvXorlVkMd7kp9IXLCTc3oXrtI9s9rZmiKJ bHUDqxkVTXztOy14aEDicFsjNd4P0b/1RO2vZRwzdDfQFzvLve+Stoa3Z/4XGx0EwJt3 VP+AxNoTXKgNSedAE9BGJhi4nYUjfOkvvkDJjwaNLWedOjQlk1/NdkMG3VIue7aZcwz1 PBJg== 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 g11-v6si40519plb.323.2018.08.16.11.50.09; Thu, 16 Aug 2018 11:50:25 -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 S1728474AbeHPVmg (ORCPT + 99 others); Thu, 16 Aug 2018 17:42:36 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:56094 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728344AbeHPVmf (ORCPT ); Thu, 16 Aug 2018 17:42:35 -0400 Received: from localhost (unknown [194.244.16.108]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 386F8CB7; Thu, 16 Aug 2018 18:42:27 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Al Viro Subject: [PATCH 3.18 02/15] root dentries need RCU-delayed freeing Date: Thu, 16 Aug 2018 20:41:39 +0200 Message-Id: <20180816171633.637791038@linuxfoundation.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180816171633.546734046@linuxfoundation.org> References: <20180816171633.546734046@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 3.18-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 @@ -1848,10 +1848,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; }