From patchwork Tue Nov 21 23:10:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 168030 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2b07:b0:403:3b70:6f57 with SMTP id io7csp972027vqb; Tue, 21 Nov 2023 15:12:04 -0800 (PST) X-Google-Smtp-Source: AGHT+IHb+FnLGCAFPlTEDNxlRqBMp0OZU8EQ2WTl81KlfbUvd0QfGLarPziJcKBXoH78GbBdXsME X-Received: by 2002:a05:6a00:2314:b0:6be:43f8:4e0b with SMTP id h20-20020a056a00231400b006be43f84e0bmr708956pfh.24.1700608323901; Tue, 21 Nov 2023 15:12:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700608323; cv=none; d=google.com; s=arc-20160816; b=dsbdb0TskJmo6pLaCY4WRmNkRnByzrq2TnpLNMr18jPd3oq/WiHUjQUIbZJEZ/+keK 6EBbf2ogM9udN9gVNA0tOuM/en8eDpjPpXTsjKlXuHciJGJmapfoIhz99stINNRcIpzm awW2vE9PQLXiws7SqJUltoUqBnO+Tg9tqQ8qTN5ZjtHQb2pREgiz5uuMjEiA+aDTfF+u VcCGO8hIxByGg/rSm2I9pKIk/HP5l/vazdjq4oz2ZgXAaFl+EktdXuIZ3ohJn36h6Hah tBFEhqS/4jEHt+2bBwzcXv9nKP40HKQfn3qjRRBYjeXx+9zy5K1D6xH+MyTXYT/4Bwaa Fgyw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=MwXSnjnRJxRk/rq6PM4P3sKYFnyaqjjrtTHRJwr4Ypc=; fh=v5d2iK8lt4G1vkplZbghBt7rCstLvm5F4A2+SX42VNY=; b=hrKLMHNR6Xn4UHwNPpAMuq3Dc63T3uXqzd33oV5F8ybLWZuWQV8XvgpdiBnPpIdakY uYFQzUyY7oYksmtBGveJBghqYgDdYwCheipqTGA9g3xNlViR1FL2VG9fan+O3YFbYaWF 4LCUH+MMUS/ixE8TSp2+rn/j/GzdQF0Szg7fjujNskZUwEFVurMUOuX/uXjQLmqn6khS noTACZKNnpEKwQzomyZeZwa+VgIF7yTZfClksJzdlko29/ywp+Z3xK1rtjzUBF5xLgcN ymxLhiVKnXT+PQP2h5w/eA+y9wvGdLQdVO3NARtBNbMmMszuZGUnPdjWBm4SXpdZRC3h Wigw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id f13-20020a056a0022cd00b006b7b42fe43asi11831655pfj.185.2023.11.21.15.12.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Nov 2023 15:12:03 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 05E23817C1D2; Tue, 21 Nov 2023 15:11:07 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234887AbjKUXLE (ORCPT + 99 others); Tue, 21 Nov 2023 18:11:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54954 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229527AbjKUXLA (ORCPT ); Tue, 21 Nov 2023 18:11:00 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B1ED110C for ; Tue, 21 Nov 2023 15:10:56 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 58720C433C9; Tue, 21 Nov 2023 23:10:56 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.97-RC3) (envelope-from ) id 1r5Ztg-00000002dDc-27wd; Tue, 21 Nov 2023 18:11:12 -0500 Message-ID: <20231121231112.373501894@goodmis.org> User-Agent: quilt/0.67 Date: Tue, 21 Nov 2023 18:10:04 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton Subject: [PATCH 1/4] eventfs: Use GFP_NOFS for allocation when eventfs_mutex is held References: <20231121231003.516999942@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Tue, 21 Nov 2023 15:11:07 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1783217073899449661 X-GMAIL-MSGID: 1783217073899449661 From: "Steven Rostedt (Google)" If memory reclaim happens, it can reclaim file system pages. The file system pages from eventfs may take the eventfs_mutex on reclaim. This means that allocation while holding the eventfs_mutex must not call into filesystem reclaim. A lockdep splat uncovered this. Fixes: 28e12c09f5aa0 ("eventfs: Save ownership and mode") Fixes: 5790b1fb3d672 ("eventfs: Remove eventfs_file and just use eventfs_inode") Reported-by: Mark Rutland Signed-off-by: Steven Rostedt (Google) --- fs/tracefs/event_inode.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/tracefs/event_inode.c b/fs/tracefs/event_inode.c index 3eb6c622a74d..56d192f0ead8 100644 --- a/fs/tracefs/event_inode.c +++ b/fs/tracefs/event_inode.c @@ -95,7 +95,7 @@ static int eventfs_set_attr(struct mnt_idmap *idmap, struct dentry *dentry, if (!(dentry->d_inode->i_mode & S_IFDIR)) { if (!ei->entry_attrs) { ei->entry_attrs = kzalloc(sizeof(*ei->entry_attrs) * ei->nr_entries, - GFP_KERNEL); + GFP_NOFS); if (!ei->entry_attrs) { ret = -ENOMEM; goto out; @@ -627,7 +627,7 @@ static int add_dentries(struct dentry ***dentries, struct dentry *d, int cnt) { struct dentry **tmp; - tmp = krealloc(*dentries, sizeof(d) * (cnt + 2), GFP_KERNEL); + tmp = krealloc(*dentries, sizeof(d) * (cnt + 2), GFP_NOFS); if (!tmp) return -1; tmp[cnt] = d; From patchwork Tue Nov 21 23:10:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 168028 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2b07:b0:403:3b70:6f57 with SMTP id io7csp971691vqb; Tue, 21 Nov 2023 15:11:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IGlM5oMA9BmpWYWnIlTYvlgXOKdGsDMBx2/fpy3kC0oR+9YHLIeQMOf2DNVyOEbtiA7WDZG X-Received: by 2002:a17:903:2352:b0:1cf:6bc2:2267 with SMTP id c18-20020a170903235200b001cf6bc22267mr723996plh.24.1700608264730; Tue, 21 Nov 2023 15:11:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700608264; cv=none; d=google.com; s=arc-20160816; b=YADT/CDFzm2zxghu0Kk2PA37EtdjQvVXINuVfQ2o/cmyxNGcfOSsqMA5tJAhiD+aMG QiafLCy5hXKgLlp9PPo7iVAE30kMrQYvfbB2yuJVbmAMBFK6Fxb/jvnrp5K2nMf+BGlw sFBtsDr6JzZfkLLmRWhV4YgZdXM2ru1OgIPV397G6J1pqkBZ7I8haZY9GY+66RiBzgjg fTaOT3PDA/fMccGUklDUHh1mVmp16JQTpgTIeOkfyD/daSJ6Ux3/sE9JWTDCdhKV6gUE 3IZ5G7j3yllQZHJpeH/M/cLCDQHn0T3XmezJjbr0xoHjOmYX5k6qs4C9r7vhv2XA3Mf+ ZsXg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=4FRHF8Sx6EHe/ICrhO2yGvL214Z2/wllowyBfBkziuo=; fh=v5d2iK8lt4G1vkplZbghBt7rCstLvm5F4A2+SX42VNY=; b=Ys1qwhvnMlwFOonkmKXSwi0qLqZNPQhRFv1IHV/ZYzxnB24BEC2JKMKeZ4xkVoKWMW 1jPU86B8+Ws//ZI6xxzfwnOUuxge+DKv4r2nwgR/IYefwuVMVkVx052pjbo2Y0MBCOSN KdCpYXqmg+mfbFXDhDuBChEWJnwTu/acqSGQvHl7A8rphixwKhFcbY4TMaEmKi2Sztzw lDc3IDE55dIb+Pe8V6s2qVjyvv5nfe2q74UlPg4yqKIYQAT5SNub+UuqIdiAcVWIH3qc lm+b7RVnf3fFPIyjeg8+RUV9i1oPazTDFN5myoBEkV+IxAbnZ6rSKDDXUbNyuklGYkR/ Uplg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id b12-20020a170902d50c00b001cf665669f7si4167994plg.426.2023.11.21.15.11.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Nov 2023 15:11:04 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id BB228801CA42; Tue, 21 Nov 2023 15:11:03 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233419AbjKUXLC (ORCPT + 99 others); Tue, 21 Nov 2023 18:11:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54962 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229558AbjKUXLA (ORCPT ); Tue, 21 Nov 2023 18:11:00 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 31616185 for ; Tue, 21 Nov 2023 15:10:57 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9167AC433CD; Tue, 21 Nov 2023 23:10:56 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.97-RC3) (envelope-from ) id 1r5Ztg-00000002dE7-2p2f; Tue, 21 Nov 2023 18:11:12 -0500 Message-ID: <20231121231112.528544825@goodmis.org> User-Agent: quilt/0.67 Date: Tue, 21 Nov 2023 18:10:05 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton Subject: [PATCH 2/4] eventfs: Move taking of inode_lock into dcache_dir_open_wrapper() References: <20231121231003.516999942@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Tue, 21 Nov 2023 15:11:03 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1783217011780687147 X-GMAIL-MSGID: 1783217011780687147 From: "Steven Rostedt (Google)" The both create_file_dentry() and create_dir_dentry() takes a boolean parameter "lookup", as on lookup the inode_lock should already be taken, but for dcache_dir_open_wrapper() it is not taken. There's no reason that the dcache_dir_open_wrapper() can't take the inode_lock before calling these functions. In fact, it's better if it does, as the lock can be held throughout both directory and file creations. This also simplifies the code, and possibly prevents unexpected race conditions when the lock is released. Fixes: 5790b1fb3d672 ("eventfs: Remove eventfs_file and just use eventfs_inode") Signed-off-by: Steven Rostedt (Google) --- fs/tracefs/event_inode.c | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/fs/tracefs/event_inode.c b/fs/tracefs/event_inode.c index 56d192f0ead8..590e8176449b 100644 --- a/fs/tracefs/event_inode.c +++ b/fs/tracefs/event_inode.c @@ -347,15 +347,8 @@ create_file_dentry(struct eventfs_inode *ei, int idx, mutex_unlock(&eventfs_mutex); - /* The lookup already has the parent->d_inode locked */ - if (!lookup) - inode_lock(parent->d_inode); - dentry = create_file(name, mode, attr, parent, data, fops); - if (!lookup) - inode_unlock(parent->d_inode); - mutex_lock(&eventfs_mutex); if (IS_ERR_OR_NULL(dentry)) { @@ -453,15 +446,8 @@ create_dir_dentry(struct eventfs_inode *pei, struct eventfs_inode *ei, } mutex_unlock(&eventfs_mutex); - /* The lookup already has the parent->d_inode locked */ - if (!lookup) - inode_lock(parent->d_inode); - dentry = create_dir(ei, parent); - if (!lookup) - inode_unlock(parent->d_inode); - mutex_lock(&eventfs_mutex); if (IS_ERR_OR_NULL(dentry) && !ei->is_freed) { @@ -693,6 +679,7 @@ static int dcache_dir_open_wrapper(struct inode *inode, struct file *file) return -ENOMEM; } + inode_lock(parent->d_inode); list_for_each_entry_srcu(ei_child, &ei->children, list, srcu_read_lock_held(&eventfs_srcu)) { d = create_dir_dentry(ei, ei_child, parent, false); @@ -725,6 +712,7 @@ static int dcache_dir_open_wrapper(struct inode *inode, struct file *file) cnt++; } } + inode_unlock(parent->d_inode); srcu_read_unlock(&eventfs_srcu, idx); ret = dcache_dir_open(inode, file); From patchwork Tue Nov 21 23:10:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 168031 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2b07:b0:403:3b70:6f57 with SMTP id io7csp972677vqb; Tue, 21 Nov 2023 15:13:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IHF2/+bHNZgz37WhXiM6QhxmOiSnBmzQLkazvVs4qQUQ8jS80wrdEylmaH3hf9D55m++ahq X-Received: by 2002:a17:90b:1e09:b0:280:cc16:f756 with SMTP id pg9-20020a17090b1e0900b00280cc16f756mr746529pjb.20.1700608417000; Tue, 21 Nov 2023 15:13:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700608416; cv=none; d=google.com; s=arc-20160816; b=wu8T16jMDPwEb5X9nclW1taQcwO2Qvd2DT7j2D3Kzi9sOmEHWfHVtj/O2DxjEvLoWl phSKxJkcxvJkYXzCuiEMju1QBeYLP3qLHpvDK7HoS7wdXsTr7YK/2ZutimfIaDhsg9di w1EgXrbKQWRWZ0JM1x8IKZBnhOL+TKxtuhAbMX5Ggr+YRTfeZ+EUrIC0LSAZ6WKHV7Bm DYvC5rLiEzfhxIJWaVf6VkKMHC8MkwznTUEZqz1TYSR6sfq6lpVCAMVHTvcJSQEc6rhv 3W+QIPyDuUMjJ2falmZbJxd5/+RnuB5i9ltzLR971554OAu7NjXWmSNZWWZrOk8G8KYf kldQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=Qdbn8oW9Psq0Up6EGJVQxVyzNgBHEcS3W5ajaiGnVAg=; fh=v5d2iK8lt4G1vkplZbghBt7rCstLvm5F4A2+SX42VNY=; b=gSyWcCP/WV9Oi+Np33ndqzCfT292kAzlWhsH1IKc5dDMpv/+47mjD+f8vkILKtgkc/ ZJCAA3KGLSXtZOKuqgTYaHYgToN7d5LLHP1F+kYq1aB0lj4djAagfp6e4/corZhWyx/I /joQH+w3m2miA9IU2dOP9qmql4VQ8it37Ozh45qdCqkcizKcQmDcYW8t+8Bs0DzbAoQr obJnVOXn2zSUwT0pCVG+u/UXUNWbdloLvhD9x1KECQy+c++k8WpsQYZIr/VxPPYsajls Lz+lPbeTUuQOLotYR9m1BJ0krnGpzLHgkUDRTJUiuuSAYi/ourgg2eJTdUCEyVU+s5ww ARWA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id x35-20020a17090a6c2600b0027cdee52324si141285pjj.74.2023.11.21.15.13.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Nov 2023 15:13:36 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 1A841806B54F; Tue, 21 Nov 2023 15:11:18 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234900AbjKUXLH (ORCPT + 99 others); Tue, 21 Nov 2023 18:11:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54964 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229695AbjKUXLA (ORCPT ); Tue, 21 Nov 2023 18:11:00 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 347C2191 for ; Tue, 21 Nov 2023 15:10:57 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8D1B0C433CA; Tue, 21 Nov 2023 23:10:56 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.97-RC3) (envelope-from ) id 1r5Ztg-00000002dEb-3Uvn; Tue, 21 Nov 2023 18:11:12 -0500 Message-ID: <20231121231112.693841807@goodmis.org> User-Agent: quilt/0.67 Date: Tue, 21 Nov 2023 18:10:06 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton Subject: [PATCH 3/4] eventfs: Do not allow NULL parent to eventfs_start_creating() References: <20231121231003.516999942@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Tue, 21 Nov 2023 15:11:18 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1783217171398519789 X-GMAIL-MSGID: 1783217171398519789 From: "Steven Rostedt (Google)" The eventfs directory is dynamically created via the meta data supplied by the existing trace events. All files and directories in eventfs has a parent. Do not allow NULL to be passed into eventfs_start_creating() as the parent because that should never happen. Warn if it does. Signed-off-by: Steven Rostedt (Google) --- fs/tracefs/inode.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/fs/tracefs/inode.c b/fs/tracefs/inode.c index 5b54948514fe..ae648deed019 100644 --- a/fs/tracefs/inode.c +++ b/fs/tracefs/inode.c @@ -509,20 +509,15 @@ struct dentry *eventfs_start_creating(const char *name, struct dentry *parent) struct dentry *dentry; int error; + /* Must always have a parent. */ + if (WARN_ON_ONCE(!parent)) + return ERR_PTR(-EINVAL); + error = simple_pin_fs(&trace_fs_type, &tracefs_mount, &tracefs_mount_count); if (error) return ERR_PTR(error); - /* - * If the parent is not specified, we create it in the root. - * We need the root dentry to do this, which is in the super - * block. A pointer to that is in the struct vfsmount that we - * have around. - */ - if (!parent) - parent = tracefs_mount->mnt_root; - if (unlikely(IS_DEADDIR(parent->d_inode))) dentry = ERR_PTR(-ENOENT); else From patchwork Tue Nov 21 23:10:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 168029 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2b07:b0:403:3b70:6f57 with SMTP id io7csp971769vqb; Tue, 21 Nov 2023 15:11:33 -0800 (PST) X-Google-Smtp-Source: AGHT+IFeXhGdsdfK/bA8XP0X+yRchGhhC2bFUe/AtLPWd7lIbpKxps9Fk+iDHgeFq++m9AXEjtAw X-Received: by 2002:a17:903:5c3:b0:1cf:6b8f:5af4 with SMTP id kf3-20020a17090305c300b001cf6b8f5af4mr553619plb.43.1700608293460; Tue, 21 Nov 2023 15:11:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700608293; cv=none; d=google.com; s=arc-20160816; b=DB7hK87Jn2ceCZX0bh7C6K0UVEqXCXzvGGvTEY0FcI8C8ht6uGTIRtW0DWcen20vZM +0k/RbRg8uq6j1OvgHJdzsABmd62edYVrS3ConqQ0PxSsjxzCQbUW46rgI+/buK8Wx21 jaUEEBrFn3nXtC6KvzU3aYGr7dt/FO0ZnSRkOZl99jSr8AopJ3fIYfif2/8SayR/NOh3 7MhjA/l01R4oVfEKGsyykwswzR0T5IDRyVmJZqZ9FP/GJoT6eLRx1x2fJ98ClffMoFCo WRE6x7zc0LQdkKkXFGLzBk0iKokzibIcnaso7MLS5jTO0jgflod2m9NXvsdUZZFsdNZO lIkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=UMdCQ/XJkuHfQpfMd3V3T9ad5QuJPVTi1nPivLRsobo=; fh=v5d2iK8lt4G1vkplZbghBt7rCstLvm5F4A2+SX42VNY=; b=ia29R8Z1bzKcM0ewmXN9SlMq1EqZgTiwTESPB72OxPfg3enLGmVdEGeYaoK1ciE95Y WJ0gYqgEoLiDjpNC+5JCUqs65sVVPyLs2smlZo6wQbyJVOIxnMKdjqm1hIFDGMn37ZXY UIBaYbIIwxFBdG3O2WWL8vpuwhBtmQJW8c7IOy4p0RONFaM5nxHYf1SZLi42JWsYmtIR C/TC967vpR3HU53d3eWzAHb1MN3vPARUlWCkj56BrswqMVOGmCHMVxCb+O4gPenyvKCL G1LRezzSebA6FawU00ppHoWSeFomoDPdKoHhhXJHoTmMfZOZQOnNTddMm67AzqhXV5vN TxSw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id n4-20020a170902f60400b001c624cbc92dsi11689455plg.296.2023.11.21.15.11.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Nov 2023 15:11:33 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id D8C3880EA943; Tue, 21 Nov 2023 15:11:28 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234901AbjKUXLK (ORCPT + 99 others); Tue, 21 Nov 2023 18:11:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54968 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233024AbjKUXLB (ORCPT ); Tue, 21 Nov 2023 18:11:01 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1CFA4A4 for ; Tue, 21 Nov 2023 15:10:58 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B5607C433C7; Tue, 21 Nov 2023 23:10:57 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.97-RC3) (envelope-from ) id 1r5Ztg-00000002dF5-4BCs; Tue, 21 Nov 2023 18:11:12 -0500 Message-ID: <20231121231112.853962542@goodmis.org> User-Agent: quilt/0.67 Date: Tue, 21 Nov 2023 18:10:07 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton Subject: [PATCH 4/4] eventfs: Make sure that parent->d_inode is locked in creating files/dirs References: <20231121231003.516999942@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Tue, 21 Nov 2023 15:11:29 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1783217041863722403 X-GMAIL-MSGID: 1783217041863722403 From: "Steven Rostedt (Google)" Since the locking of the parent->d_inode has been moved outside the creation of the files and directories (as it use to be locked via a conditional), add a WARN_ON_ONCE() to the case that it's not locked. Signed-off-by: Steven Rostedt (Google) --- fs/tracefs/event_inode.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fs/tracefs/event_inode.c b/fs/tracefs/event_inode.c index 590e8176449b..0b90869fd805 100644 --- a/fs/tracefs/event_inode.c +++ b/fs/tracefs/event_inode.c @@ -327,6 +327,8 @@ create_file_dentry(struct eventfs_inode *ei, int idx, struct dentry **e_dentry = &ei->d_children[idx]; struct dentry *dentry; + WARN_ON_ONCE(!inode_is_locked(parent->d_inode)); + mutex_lock(&eventfs_mutex); if (ei->is_freed) { mutex_unlock(&eventfs_mutex); @@ -430,6 +432,8 @@ create_dir_dentry(struct eventfs_inode *pei, struct eventfs_inode *ei, { struct dentry *dentry = NULL; + WARN_ON_ONCE(!inode_is_locked(parent->d_inode)); + mutex_lock(&eventfs_mutex); if (pei->is_freed || ei->is_freed) { mutex_unlock(&eventfs_mutex);