Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp369754pxp; Wed, 16 Mar 2022 07:28:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzt7rOuFo40DAO0j+sRlGsEA6KCj2Us14y9JR2eL6E+vRqXoICNCZBtzhn1dvBInPKvCI+w X-Received: by 2002:a05:6402:2754:b0:418:afad:bc2f with SMTP id z20-20020a056402275400b00418afadbc2fmr7765269edd.170.1647440923838; Wed, 16 Mar 2022 07:28:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647440923; cv=none; d=google.com; s=arc-20160816; b=RJI0K8Z+ZxFZyPxerDlUu7I1O0UOK7czXZ7CJgTX6TD9qL/9R9gww6H+P4sXFjXb5j Z1aQIYOyF0lTPKwjVFIt33motHst+22nlxCaYWgWEDXpzgZE3qNjBdE1HviYc1XXHori z69FElQbR5GJmdWKZOwpGO9WT5j3/mFUlx3hsRcBmRDVZo439qSKe+yyCiGdgv1z6yKV 5dRJS2nsV5vyx/sadxrJyyrWwDk3TGf5gBgSnyt4o0XzFz29sUx6f/Z4T62RFK2PcL98 gyBL9boWeV4hLh03w450OykhN/sFqXJAoGPUq2icSt6ePrH3CbMHEjfEFWSbZ+oxjg+H 5SQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from; bh=HWdApJNbxI1KOdTQ2KY4FUQ7lLGoI3r7sjtt+cV2vXU=; b=yEnjwdU8EcljrHY8XSrnlQLl4lQpJuQv+pjDnZM8tb0DrDeBqCDB7EjzLsPH5TV9V/ J6iOahVCqzqo0bb62bqBGfBDp1sskS/dMqW5Dazsyjjv+P/kI0wQV/4I15aYbUu8Nv+Y 8ChMZ1RSLzNDsOlZvD4gaT4ANc3/AErTA6gM4GmdRhsmrE9uG+B/cW4UO9RUE5tMJq4+ +y82am2Sz2EDsAWj4O2X3S29HtEJunXNqVgJXsIg1dIhFPzRge04U245qiP94hqjWq6l k6n/JJfJ/a0hbcTW8yaRzZ0SL+aOr351RBoXWPrawzwRsJTsab1D48B4kT7kbJcb1zpr metQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z5-20020a50eb45000000b00418e8ca9635si1329561edp.128.2022.03.16.07.28.14; Wed, 16 Mar 2022 07:28:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1353146AbiCPC3S (ORCPT + 99 others); Tue, 15 Mar 2022 22:29:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55352 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1352746AbiCPC2g (ORCPT ); Tue, 15 Mar 2022 22:28:36 -0400 Received: from lgeamrelo11.lge.com (lgeamrelo12.lge.com [156.147.23.52]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 1D2AA5DA7C for ; Tue, 15 Mar 2022 19:27:15 -0700 (PDT) Received: from unknown (HELO lgemrelse7q.lge.com) (156.147.1.151) by 156.147.23.52 with ESMTP; 16 Mar 2022 11:27:12 +0900 X-Original-SENDERIP: 156.147.1.151 X-Original-MAILFROM: byungchul.park@lge.com Received: from unknown (HELO localhost.localdomain) (10.177.244.38) by 156.147.1.151 with ESMTP; 16 Mar 2022 11:27:12 +0900 X-Original-SENDERIP: 10.177.244.38 X-Original-MAILFROM: byungchul.park@lge.com From: Byungchul Park To: torvalds@linux-foundation.org Cc: damien.lemoal@opensource.wdc.com, linux-ide@vger.kernel.org, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, mingo@redhat.com, linux-kernel@vger.kernel.org, peterz@infradead.org, will@kernel.org, tglx@linutronix.de, rostedt@goodmis.org, joel@joelfernandes.org, sashal@kernel.org, daniel.vetter@ffwll.ch, chris@chris-wilson.co.uk, duyuyang@gmail.com, johannes.berg@intel.com, tj@kernel.org, tytso@mit.edu, willy@infradead.org, david@fromorbit.com, amir73il@gmail.com, bfields@fieldses.org, gregkh@linuxfoundation.org, kernel-team@lge.com, linux-mm@kvack.org, akpm@linux-foundation.org, mhocko@kernel.org, minchan@kernel.org, hannes@cmpxchg.org, vdavydov.dev@gmail.com, sj@kernel.org, jglisse@redhat.com, dennis@kernel.org, cl@linux.com, penberg@kernel.org, rientjes@google.com, vbabka@suse.cz, ngupta@vflare.org, linux-block@vger.kernel.org, paolo.valente@linaro.org, josef@toxicpanda.com, linux-fsdevel@vger.kernel.org, viro@zeniv.linux.org.uk, jack@suse.cz, jack@suse.com, jlayton@kernel.org, dan.j.williams@intel.com, hch@infradead.org, djwong@kernel.org, dri-devel@lists.freedesktop.org, airlied@linux.ie, rodrigosiqueiramelo@gmail.com, melissa.srw@gmail.com, hamohammed.sa@gmail.com Subject: [PATCH RFC v5 21/21] dept: Don't create dependencies between different depths in any case Date: Wed, 16 Mar 2022 11:26:33 +0900 Message-Id: <1647397593-16747-22-git-send-email-byungchul.park@lge.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1647397593-16747-1-git-send-email-byungchul.park@lge.com> References: <1647397593-16747-1-git-send-email-byungchul.park@lge.com> X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,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-ext4@vger.kernel.org Dept already prevents creating dependencies between different depths of the class indicated by *_lock_nested() when the lock acquisitions happen consecutively. For example: lock A0 with depth lock_nested A1 with depth + 1 ... unlock A1 unlock A0 Dept does not create A0 -> A1 dependency in this case. However, once another class cut in, the code becomes problematic. When Dept tries to create real dependencies, it does not only create real ones but also wrong ones between different depths of the class. For example: lock A0 with depth lock B lock_nested A1 with depth + 1 ... unlock A1 unlock B unlock A0 Even in this case, Dept should not create A0 -> A1 dependency but it does. Let Dept not create wrong dependencies between different depths of the class in any case. Reported-by: 42.hyeyoo@gmail.com Signed-off-by: Byungchul Park --- kernel/dependency/dept.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/kernel/dependency/dept.c b/kernel/dependency/dept.c index 10801783..a2088685 100644 --- a/kernel/dependency/dept.c +++ b/kernel/dependency/dept.c @@ -1458,14 +1458,7 @@ static void add_wait(struct dept_class *c, unsigned long ip, eh = dt->ecxt_held + i; if (eh->ecxt->class != c || eh->nest == ne) - break; - } - - for (; i >= 0; i--) { - struct dept_ecxt_held *eh; - - eh = dt->ecxt_held + i; - add_dep(eh->ecxt, w); + add_dep(eh->ecxt, w); } if (!wait_consumed(w) && !rich_stack) { -- 1.9.1