Received: by 2002:a05:6358:e9c4:b0:b2:91dc:71ab with SMTP id hc4csp5647001rwb; Tue, 9 Aug 2022 01:23:07 -0700 (PDT) X-Google-Smtp-Source: AA6agR5vLX2W9qUH1zu+vJhQl8OrdMkm7nDwepuwOWg4rO3bkLGbXZmD4N4s5r1IlhFo7wFhFCSJ X-Received: by 2002:a17:907:60c7:b0:731:148b:c515 with SMTP id hv7-20020a17090760c700b00731148bc515mr11491126ejc.724.1660033387165; Tue, 09 Aug 2022 01:23:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1660033387; cv=none; d=google.com; s=arc-20160816; b=DPkHYfBVcbVqklIx4UowRhZQiJTY+zN0drmSDFUpgcp5Rd3w6UjfO0r5phcvZ++O63 BuceMNgr2Q7orVyvOQ2M+GSGyVLsqjZLouYbs/6q4JNwaN2noUAqnkD77xa8zYBkaemQ 5k2g/GWCAyMDxOrodnY60j8C98sJilgrazfwPT/hZynz8GPHAbq8vsIgveIqomu2TKkK TZ2bOI/6NwD+xN1K+nYnG/FqyPwvQt3fK4M9+elhdllhE36VlZOgR/LxdjWOYnw8dp5h Y3Ouvh7t80K5WVkOmKd0wwP+d+24+y5ArfMpbglnODNRSiY+bYA6YsyLnCT1WUZ09XVP MBMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=sDsvRg26s5GEkig84u4+2R0Q5CK9vZqWA8CPIVl+kAY=; b=A/LBlHCPV/rrKQRvx2Ts3g1jUrT172R8cksiiLq9J/vmYTnk0Yx0/lbjL0qKdyRtr/ 5P5Yk1mwfuVmG2KknHHJUS2jTzt79TzS/zUgUJkQAyzxbkgC8r4+tpnjOV6B7K4tOVcd g8r18eUMebxee0SAHbg0rycV6BDGgPLCEDWFb9GCe8hS0OiEhz1qFYf77EhwybGNmDdQ tA9iFmMINt0UJfVdy1Cvl8PFBTDIqPJabD5teEZQrSfLzV7OiDcZBbywKok4sGlbc23L kJ+0DMdcNzJHTtlPjqzvQU7P1fGemFxuBxKTp5l6kuBsMG45zNeEmU0HCUx4x4TTHflh kKMw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-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 z8-20020a05640235c800b0043d79e6bf7dsi8874201edc.322.2022.08.09.01.22.41; Tue, 09 Aug 2022 01:23:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-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-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239501AbiHIIIT (ORCPT + 99 others); Tue, 9 Aug 2022 04:08:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52292 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233351AbiHIIIQ (ORCPT ); Tue, 9 Aug 2022 04:08:16 -0400 Received: from verein.lst.de (verein.lst.de [213.95.11.211]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3D0B71C10B for ; Tue, 9 Aug 2022 01:08:13 -0700 (PDT) Received: by verein.lst.de (Postfix, from userid 2407) id 7D89868AA6; Tue, 9 Aug 2022 10:08:09 +0200 (CEST) Date: Tue, 9 Aug 2022 10:08:09 +0200 From: ChristophHellwig To: Liwei Song Cc: MiquelRaynal , RichardWeinberger , VigneshRaghavendra , ChristophHellwig , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] mtd_blkdevs: add mtd_table_mutex lock back to blktrans_{open, release} to avoid race condition Message-ID: <20220809080809.GB14727@lst.de> References: <20220809075753.21950-1-liwei.song@windriver.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220809075753.21950-1-liwei.song@windriver.com> User-Agent: Mutt/1.5.17 (2007-11-01) X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_NONE,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 On Tue, Aug 09, 2022 at 03:57:53PM +0800, Liwei Song wrote: > without lock mtd_table_mutex in blktrans_{open, release}, there will > be a race condition when access devices /dev/mtd1 and /dev/mtdblock1 > at the same time with a high frequency open and close test: > > kernel BUG at drivers/mtd/mtdcore.c:1221! > lr : blktrans_release+0xb0/0x120 This does not seem on a current mainline kernel and seems to be a somewhat incomplete backtrace. Can you send the full dmesg of a latest mainline run and maybe share the reproducer? > diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c > index b8ae1ec14e17..147e4a11dfe4 100644 > --- a/drivers/mtd/mtd_blkdevs.c > +++ b/drivers/mtd/mtd_blkdevs.c > @@ -188,6 +188,8 @@ static int blktrans_open(struct block_device *bdev, fmode_t mode) > > kref_get(&dev->ref); > > + if (!mutex_trylock(&mtd_table_mutex)) > + return ret; No, that's not really the solution. Turning the kref_get above into a kref_get_unless_zero might be better path to look into.