Received: by 2002:a05:6a10:9afc:0:0:0:0 with SMTP id t28csp1703049pxm; Fri, 4 Mar 2022 01:36:47 -0800 (PST) X-Google-Smtp-Source: ABdhPJwHI+ufmHR5fKh0GtgupEfScG3Oo7WWckFeT4H13IKO98gy4Rzt7JNE9wVHlLdQ461CVh+w X-Received: by 2002:a17:90a:5b0d:b0:1bc:7e66:2970 with SMTP id o13-20020a17090a5b0d00b001bc7e662970mr9700570pji.12.1646386607588; Fri, 04 Mar 2022 01:36:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646386607; cv=none; d=google.com; s=arc-20160816; b=U79MTBfaq0yQyd2c6nPcWrShnEgY5lI4MY0KLq7YGfHSrI633i4wGula5ETxir3OIL 2qTI4aiJmq2NocIpSPjrvwLGQjO9wvceaXGFtz4LNyxmO6TtY5XS6qR5XzWMpGBqsF3S ze3UtlcRabZFLLsqYxmypYi7tCztxT3JqL6w3buPL7ArMdziY8OsmdJwHf4pFR9CGkkx uHRe6S7A+nktYwpLx15MX1pRLzsigBKvWpIMBO3Rac4rKFf0h6lfaFOnPmczLqCA3wqE RDVvhEEF85nDgEKBkjYnApUEAgoQdcFRK+xSHcvHwfMdYpIXeU6RNY1+UG9nVChtzVwM ZABQ== 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=YrNkTznuZM2qYUJXNJypHwBsaShaE/xriYFjiudjnq0=; b=jTyyhU91sCcHvd+cNcYeJ4DLflodnDVgZU4Yg+qMdl1FUIyeHgKB7wp2hTwEbH5QGj E2KZlopvPPmrhekzAXRt62DB97U/hvkrEe9euSKkOArXDef7b/d/Xv0XKXd3Ug5QZzRD ierJhMQR0GAEdZ2FzXMUKdFcLIDXCjM/+pufQ9RSEoAT4blEflaRCoVXG38EqPMuqtxT m6MWK8lElXIeduO1JX4vnAtpRdKuSH8j2jypywQeLkl5gkWjKStjkQGxYd+5++cWd+HY UCOoJ0PKxzTcitWKJL2cie/LY5/3V8410f4yPJxomzLdJ5cL2A+VCTOw1oozSUgHgyLQ 3NEw== 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 w9-20020a17090a460900b001bc3cdfced7si10402377pjg.183.2022.03.04.01.36.30; Fri, 04 Mar 2022 01:36:47 -0800 (PST) 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 S238786AbiCDHJH (ORCPT + 99 others); Fri, 4 Mar 2022 02:09:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36650 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238777AbiCDHIv (ORCPT ); Fri, 4 Mar 2022 02:08:51 -0500 Received: from lgeamrelo11.lge.com (lgeamrelo13.lge.com [156.147.23.53]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 50BD1192C9C for ; Thu, 3 Mar 2022 23:07:13 -0800 (PST) Received: from unknown (HELO lgemrelse6q.lge.com) (156.147.1.121) by 156.147.23.53 with ESMTP; 4 Mar 2022 16:07:09 +0900 X-Original-SENDERIP: 156.147.1.121 X-Original-MAILFROM: byungchul.park@lge.com Received: from unknown (HELO localhost.localdomain) (10.177.244.38) by 156.147.1.121 with ESMTP; 4 Mar 2022 16:07:09 +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 v4 22/24] dept: Don't create dependencies between different depths in any case Date: Fri, 4 Mar 2022 16:06:41 +0900 Message-Id: <1646377603-19730-23-git-send-email-byungchul.park@lge.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1646377603-19730-1-git-send-email-byungchul.park@lge.com> References: <1646377603-19730-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=unavailable 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. lock A0 with depth lock_nested A1 with depth + 1 ... unlock A1 unlock A0 Dept does not create A0 -> A1 dependency in this case, either. 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. 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. So 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 5d4efc3..cc1b3a3 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