Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp5278699pxb; Wed, 19 Jan 2022 15:07:43 -0800 (PST) X-Google-Smtp-Source: ABdhPJxmr06z6HWoAj7KKHw3ott/P1S7GL8lfTvIfpfAXnghYVG6+DFHG2B/pIh/8s4EW2TWEbVT X-Received: by 2002:a17:90a:e454:: with SMTP id jp20mr7207338pjb.53.1642633663387; Wed, 19 Jan 2022 15:07:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642633663; cv=none; d=google.com; s=arc-20160816; b=ayET6ZAhr+LeUF3/I3ppKKuDslTNM8dUlv99jCJXcNBmzbClfWSA4QPe0wDLg4312p H0emNP7h2sVkQkWw2r6V+LXybIL809765KDpQv6sVxu7J+M2rl6QoSMqoKFof4PXC9Kt cPt7Lx5KktG2aWiLXs7LB8PXrinN2RuMJ2Yp0AUsr0A5qEy60BStK3X659a/K1TPOQZR H7pfV7gErx7JLJ+gwfh1T8VU5nP+u+rYEOpc6e2T3OhkoLmE1Fr38foaymX6o8sFowS2 ZP6Mb/J06cD+ih1ghS+25LxQW+C87qF3zwIDimVfXUbE1pbnAahby+BevDw8Esw9O48/ JJrw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=8644S0zMrNSPED8TGoBnmWt2R0OVZ85VhUQArBliWXI=; b=j6OiSFYmb2s/huR1iffUKpX4F3qB+MzPoGMFWwlTAcqhiTwSyM9YFJE7nl7eVPwOPb NNvS5QwYE/0MGtU22wYLW4KVXLSNArWHVjo9sHrc/Su4NPQ/bcPK71Nlw7F20KSiq2d7 6xZ9BsVKChWAKSoQgNkJ7jxSlRE3k91eBodSs29myCSf9eGgTy4/wJgVQI5pyY3rsp/K KooazwFz4aazSP66RxDGstHpyGDdBQoxy4kHp+AqA5Nagu/0xOKp38F8BkQezWoHcK0s Rkp9bfX7X6hNXLtLlCQUO2V4TIgXLI8nSXXuJaZqP89WhyRICE37XzEKcM7GeEP2Bb6l Lj8w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=cNXthNkV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bt12si6890960pjb.93.2022.01.19.15.07.31; Wed, 19 Jan 2022 15:07:43 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=cNXthNkV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344567AbiARI3U (ORCPT + 99 others); Tue, 18 Jan 2022 03:29:20 -0500 Received: from dfw.source.kernel.org ([139.178.84.217]:46398 "EHLO dfw.source.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344364AbiARI3R (ORCPT ); Tue, 18 Jan 2022 03:29:17 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 17D16613F9; Tue, 18 Jan 2022 08:29:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 46AF6C340E4; Tue, 18 Jan 2022 08:29:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1642494556; bh=RAQ8U6MFEu51ITZP1wP47dn7g6hCRWOKwdwVbfE6DKQ=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=cNXthNkVcBk1bNhH1Xj0Fzri4j4JnM6FdfS61Eg79P6SNmA+esMC0Y4ygPJTzCP2/ uyaj/rLV21w4LJL6hF1NXC31+dnd9Llb29CoDSNWOyLXjg9Ezuvmh2WtxUhrN+n2pK ALkPL2Ha6xE49ouHZkI5H5tIhvlr/nqRpR6/kGb24fg47K3GZ+NYJSohMIiySlMLGL wsDEY5n2NxvUWzj70P2B1X8viAujg7n6LeyzTSrZ8V0Xez2x/hbSUP4M91Sfxt85wM FxvHOKRZx4jJrbbxRE/SSPx765FPbM9WeHqxI4IVsxDJHoe6Z4A9PCpWkrnWSo7lEl RrNKW57V+r43A== Date: Tue, 18 Jan 2022 09:29:11 +0100 From: Christian Brauner To: Al Viro Cc: Brian Foster , Ian Kent , "Darrick J. Wong" , Christoph Hellwig , Miklos Szeredi , David Howells , Kernel Mailing List , linux-fsdevel , xfs Subject: Re: [PATCH] vfs: check dentry is still valid in get_link() Message-ID: <20220118082911.rsmv5m2pjeyt6wpg@wittgenstein> References: <164180589176.86426.501271559065590169.stgit@mickey.themaw.net> <275358741c4ee64b5e4e008d514876ed4ec1071c.camel@themaw.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jan 17, 2022 at 06:10:36PM +0000, Al Viro wrote: > On Mon, Jan 17, 2022 at 04:28:52PM +0000, Al Viro wrote: > > > IOW, ->free_inode() is RCU-delayed part of ->destroy_inode(). If both > > are present, ->destroy_inode() will be called synchronously, followed > > by ->free_inode() from RCU callback, so you can have both - moving just > > the "finally mark for reuse" part into ->free_inode() would be OK. > > Any blocking stuff (if any) can be left in ->destroy_inode()... > > BTW, we *do* have a problem with ext4 fast symlinks. Pathwalk assumes that > strings it parses are not changing under it. There are rather delicate > dances in dcache lookups re possibility of ->d_name contents changing under > it, but the search key is assumed to be stable. > > What's more, there's a correctness issue even if we do not oops. Currently > we do not recheck ->d_seq of symlink dentry when we dismiss the symlink from > the stack. After all, we'd just finished traversing what used to be the > contents of a symlink that used to be in the right place. It might have been > unlinked while we'd been traversing it, but that's not a correctness issue. > > But that critically depends upon the contents not getting mangled. If it > *can* be screwed by such unlink, we risk successful lookup leading to the Out of curiosity: whether or not it can get mangled depends on the filesystem and how it implements fast symlinks or do fast symlinks currently guarantee that contents are mangled?