Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp513137ybt; Wed, 1 Jul 2020 04:00:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxmYEFqcrkPqMUraE1wY8bojjtLNGiFtZZqTf5E6N6BvILyJNlc8ngrxrFYOT4K0N1m4IN0 X-Received: by 2002:a17:906:6ad8:: with SMTP id q24mr17084735ejs.223.1593601218434; Wed, 01 Jul 2020 04:00:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593601218; cv=none; d=google.com; s=arc-20160816; b=FPgcsgwgQ1kOtFnxG0z1a4qpm98CKv6s28r3E+ztpV+uetpyVLnvG1KqQ0f/3tznxv XcIorQC7hqXRduOlwi1bQgz+vakch9/9Mv90p+zEk16lIhXgok1wgJ/ZcX004wzTEmxs Nk3u4V2bzh0ZfK2EZtpS6pT7i11NCYfkt6uLeMILjMWMrTxHwjaGny9Z18j4u5x43DKP mZKOk2J7NKFf7I6+BGRXi5M5CWDs+RXxcbrQcirv2Ku0lC0RrndEQ6PzPTV5y3RnXuM3 593qwoDRTDt6LGdd3cDxAiTRjdFP9ce6bVclzP8q6YnFlPU9BkDtnJKnm9CIqoIF7xDj bARA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=nCr1ZEwgcWbols4NNzw9WfqYKyFsPeuwSwekCCLUt7Y=; b=UDxvQqNjGDD8TrwheK/+feFVCCt4FT91jij50gEddw9aCCDdvw1w497ntOEPCT3ZYz AYD5n5TWKZZEn4dWGob5mKOf1A2KrqH7zR9fViAmP8MLTn/Pgmf9WSCQ8m7+LdRPYrMo tilhWMvt0lXjgWDWFfd+l9LDJFKEcqwTMbF8LlvbWDIxYgYyIGWfRPuDs2w0tVnkUhVF kVWi1Hu1aPE0cMVsDmWw47EwmlqSTAjRqSXajoY1Cq6x8mURRuZy9KrFgmREJcettAUn E+HzHrnlFgIntkz6C2zhWlYqhTBxhe5UQPICoGXZNDxmXC+KcaHS13i05Lbgu744wCaE pxwQ== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a12si3657954edr.496.2020.07.01.03.59.54; Wed, 01 Jul 2020 04:00:18 -0700 (PDT) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730159AbgGAK7p (ORCPT + 99 others); Wed, 1 Jul 2020 06:59:45 -0400 Received: from nautica.notk.org ([91.121.71.147]:48986 "EHLO nautica.notk.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729952AbgGAK7o (ORCPT ); Wed, 1 Jul 2020 06:59:44 -0400 Received: by nautica.notk.org (Postfix, from userid 1001) id BCAA5C021; Wed, 1 Jul 2020 12:59:42 +0200 (CEST) Date: Wed, 1 Jul 2020 12:59:27 +0200 From: Dominique Martinet To: Jianyong Wu Cc: ericvh@gmail.com, lucho@ionkov.net, v9fs-developer@lists.sourceforge.net, linux-kernel@vger.kernel.org, Steve.Capper@arm.com, Kaly.Xin@arm.com, justin.he@arm.com, wei.chen@arm.com Subject: Re: [PATCH v2] 9p: retrieve fid from file when file instance exist. Message-ID: <20200701105927.GA20762@nautica> References: <20200701023821.5387-1-jianyong.wu@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20200701023821.5387-1-jianyong.wu@arm.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Jianyong Wu wrote on Wed, Jul 01, 2020: > In the current setattr implementation in 9p, fid is always retrieved > from dentry no matter file instance exists or not. There may be > some info related to opened file instance dropped. so it's better > to retrieve fid from file instance if file instance is passed to setattr. > > for example: > fd=open("tmp", O_RDWR); > ftruncate(fd, 10); > > The file context related with fd will be lost as fid is always > retrieved from dentry, then the backend can't get the info of > file context. It is against the original intention of user and > may lead to bug. Thanks for the commit message - still feels a bit odd but at least correct enough for me :) > Signed-off-by: Jianyong Wu > --- > fs/9p/vfs_inode.c | 6 +++++- > fs/9p/vfs_inode_dotl.c | 6 +++++- > 2 files changed, 10 insertions(+), 2 deletions(-) > > diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c > index c9255d399917..b33574d347fa 100644 > --- a/fs/9p/vfs_inode.c > +++ b/fs/9p/vfs_inode.c > @@ -1100,7 +1100,11 @@ static int v9fs_vfs_setattr(struct dentry *dentry, struct iattr *iattr) > > retval = -EPERM; > v9ses = v9fs_dentry2v9ses(dentry); > - fid = v9fs_fid_lookup(dentry); > + if (iattr->ia_valid & ATTR_FILE) { > + fid = iattr->ia_file->private_data; > + WARN_ON(!fid); That would crash in 9p_client_wstat a few lines below with the current else ; so I'm not sure WARN_ON is appropriate with this code. the snippet I had suggested had v9fs_fid_lookup in a different if, not as a else statement to avoid this crash (and then warning is OK) > + } else > + fid = v9fs_fid_lookup(dentry); -- Dominique