Received: by 2002:a05:7412:518d:b0:e2:908c:2ebd with SMTP id fn13csp547836rdb; Thu, 5 Oct 2023 13:47:04 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEkFxr66l3PLcrTgHaaqR3ifuRZsgbMIKPiaWoBj6gEBGSBZjwnM+45SPdCJxWtc9a+ui99 X-Received: by 2002:a17:903:11c7:b0:1c7:36ff:1ffd with SMTP id q7-20020a17090311c700b001c736ff1ffdmr7053242plh.61.1696538824059; Thu, 05 Oct 2023 13:47:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696538824; cv=none; d=google.com; s=arc-20160816; b=nQDLAABEM2COkb7AS6e8qpSukmb9VK/XAsPY0ovIcZPWWhV+xuACweg9AklOBJouRr 6YI3qVgkAwN1uZe4xdSuwhfMq5xhZC/k8cPnAFz3bVtpvLjapEpMQ7RB2D8T1NfzvJIl ehBeVT5x5OFRthu36hUWMWRuMbqIVBUnXvume4mVcFLDniSrFTOSWhTCdfxf8TbHcpyp H5oEPyrBvEmrqNaAiFb7Pqcyqe+3RSP1DJC1BlLMP2lNRKRdx7+DQA4+f7efpjcXcJzV xi6j6sGLE0bhM992Q2WX3WdF3FGMn/eDdxZt5Kz3Gz40Q5fycqBlH53fnR/5wfcIZ/lN pQsw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:thread-index:thread-topic :content-transfer-encoding:mime-version:subject:references :in-reply-to:message-id:cc:to:from:date; bh=Nmazt23krY2x0PhTsUvIv4e82qQrsPI5hsh7Ut+hw3Y=; fh=cnNcGImSCyHZg61Oq1lVwS9n8ovlUW+xOV8QcY0Hamw=; b=ErL+zHAEAQSF4EQFalN+X9YHswUk12xB40xXXD15/ahDDpoJ1PCIWDmUp0nE3Sv1fa 03PTPg/ux/kvJSuAQcisX/l1FM1WrtYnoj22V1tOFoNfhsobfRAZkaZxQDJ32ctShcBI 7ub4FH3dFDj+B15t6T1na6IMJXpjDFlYQfA0ua0rrro95sL+zqFi23uwWPnu/Y5YsI67 6PL+dofGn0n22O6kYezx5fANDgc5Dt/uLQPorio+0K69FcqC0C5lVOWR4ymRfpQK/tp0 9R18PMPB1g0bPecPtd4jS/p/NxcMGEqQzDjJXB97giJOwK+FIbGVcZWQQz1N7KryJkUw wniw== 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:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id u9-20020a17090341c900b001c5ecff1bd4si2263666ple.603.2023.10.05.13.47.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Oct 2023 13:47:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 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 morse.vger.email (Postfix) with ESMTP id AB64F8077917; Thu, 5 Oct 2023 13:47:01 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231668AbjJEUqv convert rfc822-to-8bit (ORCPT + 99 others); Thu, 5 Oct 2023 16:46:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54364 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229526AbjJEUqr (ORCPT ); Thu, 5 Oct 2023 16:46:47 -0400 Received: from lithops.sigma-star.at (lithops.sigma-star.at [195.201.40.130]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8302B93; Thu, 5 Oct 2023 13:46:44 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by lithops.sigma-star.at (Postfix) with ESMTP id 3C9B06340DEC; Thu, 5 Oct 2023 22:46:42 +0200 (CEST) Received: from lithops.sigma-star.at ([127.0.0.1]) by localhost (lithops.sigma-star.at [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id pxjMnQh4blOb; Thu, 5 Oct 2023 22:46:41 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by lithops.sigma-star.at (Postfix) with ESMTP id BEEE46340DF3; Thu, 5 Oct 2023 22:46:41 +0200 (CEST) Received: from lithops.sigma-star.at ([127.0.0.1]) by localhost (lithops.sigma-star.at [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id 4Jkbwh50XZ7F; Thu, 5 Oct 2023 22:46:41 +0200 (CEST) Received: from lithops.sigma-star.at (lithops.sigma-star.at [195.201.40.130]) by lithops.sigma-star.at (Postfix) with ESMTP id 895696340DEC; Thu, 5 Oct 2023 22:46:41 +0200 (CEST) Date: Thu, 5 Oct 2023 22:46:41 +0200 (CEST) From: Richard Weinberger To: Daniel Golle Cc: Randy Dunlap , Miquel Raynal , Vignesh Raghavendra , Rob Herring , Krzysztof Kozlowski , Conor Dooley , linux-mtd , devicetree , linux-kernel Message-ID: <1863543078.49676.1696538801349.JavaMail.zimbra@nod.at> In-Reply-To: <226381209.31782.1696362327615.JavaMail.zimbra@nod.at> References: <226381209.31782.1696362327615.JavaMail.zimbra@nod.at> Subject: Re: [PATCH v4 5/8] mtd: ubi: attach MTD partition from device-tree MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT X-Originating-IP: [195.201.40.130] X-Mailer: Zimbra 8.8.12_GA_3807 (ZimbraWebClient - FF97 (Linux)/8.8.12_GA_3809) Thread-Topic: attach MTD partition from device-tree Thread-Index: kqr0xqm+jR+lBv0FwDpbk9UYfLM3MSkaKwBk X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.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 (morse.vger.email [0.0.0.0]); Thu, 05 Oct 2023 13:47:01 -0700 (PDT) ----- Ursprüngliche Mail ----- > Von: "richard" > ----- Ursprüngliche Mail ----- >> diff --git a/drivers/mtd/ubi/block.c b/drivers/mtd/ubi/block.c >> index e0618bbde3613..99b5f502c9dbc 100644 >> --- a/drivers/mtd/ubi/block.c >> +++ b/drivers/mtd/ubi/block.c >> @@ -470,7 +470,7 @@ int ubiblock_remove(struct ubi_volume_info *vi, bool force) >> } >> >> /* Found a device, let's lock it so we can check if it's busy */ >> - mutex_lock(&dev->dev_mutex); >> + mutex_lock_nested(&dev->dev_mutex, SINGLE_DEPTH_NESTING); > > The usage of mutex_lock_nested() in this patch looks fishy. > Can you please elaborate a bit more why all these mutexes can be taken twice? > (Any why not more often). I think I figured myself. ubiblock_ops->open() and ->release() are both called with disk->open_mutex held. ubiblock_open() and ubiblock_release() take dev->dev_mutex. So, the locking order is open_mutex, followed by dev_mutex. On the other hand, ubiblock_remove() is called via UBI notify. It takes first dev_mutex and then calls del_gendisk() which will trigger ubiblock_ops->release() under disk->open_mutex but takes dev_mutex again. So, we this not only takes a lock twice but also in reverse order. mutex_lock_nested() might silence lockdep but I'm not sure whether this is safe at all. Thanks, //richard