From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 403B6C64E7B for ; Thu, 26 Nov 2020 17:42:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E8B3921D7F for ; Thu, 26 Nov 2020 17:42:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2404473AbgKZRmn (ORCPT ); Thu, 26 Nov 2020 12:42:43 -0500 Received: from verein.lst.de ([213.95.11.211]:35231 "EHLO verein.lst.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2404320AbgKZRmn (ORCPT ); Thu, 26 Nov 2020 12:42:43 -0500 Received: by verein.lst.de (Postfix, from userid 2407) id 31C9868B05; Thu, 26 Nov 2020 18:42:39 +0100 (CET) Date: Thu, 26 Nov 2020 18:42:38 +0100 From: Christoph Hellwig To: Jan Kara Cc: Christoph Hellwig , Jens Axboe , Tejun Heo , Josef Bacik , Coly Li , Mike Snitzer , Greg Kroah-Hartman , Johannes Thumshirn , dm-devel@redhat.com, Jan Kara , linux-block@vger.kernel.org, linux-bcache@vger.kernel.org, linux-mtd@lists.infradead.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH 24/44] block: simplify bdev/disk lookup in blkdev_get Message-ID: <20201126174238.GA24098@lst.de> References: <20201126130422.92945-1-hch@lst.de> <20201126130422.92945-25-hch@lst.de> <20201126163341.GL422@quack2.suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20201126163341.GL422@quack2.suse.cz> User-Agent: Mutt/1.5.17 (2007-11-01) Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org On Thu, Nov 26, 2020 at 05:33:41PM +0100, Jan Kara wrote: > > bdev->bd_contains = whole; > > - bdev->bd_part = disk_get_part(disk, partno); > > - if (!(disk->flags & GENHD_FL_UP) || > > - !bdev->bd_part || !bdev->bd_part->nr_sects) { > > + bdev->bd_part = disk_get_part(disk, bdev->bd_partno); > > + if (!bdev->bd_part || !bdev->bd_part->nr_sects) { > > AFAICT it is still possible that we see !(disk->flags & GENHD_FL_UP) here, > isn't it? Is it safe to remove because the nr_sects check is already > equivalent to it? Or something else? At this point we already have the disk abd bdev reference, so we're not closing any new race here. That being said we might as well keep this check to not bother going ahead when the disk is already torn down. > I think bdget() above needs to be already under bdev_lookup_sem. Otherwise > disk_to_dev(bdev->bd_disk)->kobj below is a potential use-after-free. Yes. I've fixed this and the other issues. From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 91D59C63697 for ; Thu, 26 Nov 2020 17:43:20 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id F2D14207BC for ; Thu, 26 Nov 2020 17:43:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="1/nL6mVT" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F2D14207BC Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=lst.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=M7HBswzrapGhkBGIC93IHuqtTSih3Ya16BxRYIN154g=; b=1/nL6mVTk1P2ReTUvIE/2mWhA c7QR95Zj9ARjUTVrVC9+k7+QiASYOD7cYNf+UPscvALzcph/wqXDMpIdcxCIw11Grf0R9lMmry5dr KA3FYG7ycyQPkWXUpZHrFLKUYGUVgWZwV8UESkn6KoVwBPvICi2m1WRogVUCVVWIq8kwOk02bYCyq WL9OgIj2Z+CJoDcJW+94ywzbv6URyV4bzcPpaB7dhw+4DZDJiCB1X6zPdrf9oV42HENPFM/5YoeAz Q6cmuCZxWHh5dBt3icyvM2M/Po0mghdty1eZZhDv4glzSaG+8+JFIGZcxwFvwzQvY+SdITBIZp11s EvKvC2Ajg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kiLI7-0001sN-JT; Thu, 26 Nov 2020 17:42:47 +0000 Received: from verein.lst.de ([213.95.11.211]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kiLI4-0001rc-9i for linux-mtd@lists.infradead.org; Thu, 26 Nov 2020 17:42:45 +0000 Received: by verein.lst.de (Postfix, from userid 2407) id 31C9868B05; Thu, 26 Nov 2020 18:42:39 +0100 (CET) Date: Thu, 26 Nov 2020 18:42:38 +0100 From: Christoph Hellwig To: Jan Kara Subject: Re: [PATCH 24/44] block: simplify bdev/disk lookup in blkdev_get Message-ID: <20201126174238.GA24098@lst.de> References: <20201126130422.92945-1-hch@lst.de> <20201126130422.92945-25-hch@lst.de> <20201126163341.GL422@quack2.suse.cz> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20201126163341.GL422@quack2.suse.cz> User-Agent: Mutt/1.5.17 (2007-11-01) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201126_124244_621788_F5DA370D X-CRM114-Status: GOOD ( 13.15 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jens Axboe , Mike Snitzer , linux-mm@kvack.org, Greg Kroah-Hartman , Jan Kara , Josef Bacik , Coly Li , linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, dm-devel@redhat.com, linux-mtd@lists.infradead.org, Johannes Thumshirn , Tejun Heo , linux-bcache@vger.kernel.org, Christoph Hellwig Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org On Thu, Nov 26, 2020 at 05:33:41PM +0100, Jan Kara wrote: > > bdev->bd_contains = whole; > > - bdev->bd_part = disk_get_part(disk, partno); > > - if (!(disk->flags & GENHD_FL_UP) || > > - !bdev->bd_part || !bdev->bd_part->nr_sects) { > > + bdev->bd_part = disk_get_part(disk, bdev->bd_partno); > > + if (!bdev->bd_part || !bdev->bd_part->nr_sects) { > > AFAICT it is still possible that we see !(disk->flags & GENHD_FL_UP) here, > isn't it? Is it safe to remove because the nr_sects check is already > equivalent to it? Or something else? At this point we already have the disk abd bdev reference, so we're not closing any new race here. That being said we might as well keep this check to not bother going ahead when the disk is already torn down. > I think bdget() above needs to be already under bdev_lookup_sem. Otherwise > disk_to_dev(bdev->bd_disk)->kobj below is a potential use-after-free. Yes. I've fixed this and the other issues. ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B4FC4C63697 for ; Thu, 26 Nov 2020 17:43:04 +0000 (UTC) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1601D207BC for ; Thu, 26 Nov 2020 17:43:03 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1601D207BC Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=lst.de Authentication-Results: mail.kernel.org; spf=tempfail smtp.mailfrom=dm-devel-bounces@redhat.com Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-466-_Ez8OByRNFqiGreVxPn6nQ-1; Thu, 26 Nov 2020 12:43:00 -0500 X-MC-Unique: _Ez8OByRNFqiGreVxPn6nQ-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 7C99C1E7E5; Thu, 26 Nov 2020 17:42:56 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9875A5D9D5; Thu, 26 Nov 2020 17:42:55 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 0F63D180954D; Thu, 26 Nov 2020 17:42:53 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 0AQHgoHp000815 for ; Thu, 26 Nov 2020 12:42:50 -0500 Received: by smtp.corp.redhat.com (Postfix) id 822BF112D405; Thu, 26 Nov 2020 17:42:50 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7E34F112D404 for ; Thu, 26 Nov 2020 17:42:47 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 4B904858EEC for ; Thu, 26 Nov 2020 17:42:47 +0000 (UTC) Received: from verein.lst.de (verein.lst.de [213.95.11.211]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-381-KHjoTLWCORehp2qJvTsZHw-1; Thu, 26 Nov 2020 12:42:42 -0500 X-MC-Unique: KHjoTLWCORehp2qJvTsZHw-1 Received: by verein.lst.de (Postfix, from userid 2407) id 31C9868B05; Thu, 26 Nov 2020 18:42:39 +0100 (CET) Date: Thu, 26 Nov 2020 18:42:38 +0100 From: Christoph Hellwig To: Jan Kara Message-ID: <20201126174238.GA24098@lst.de> References: <20201126130422.92945-1-hch@lst.de> <20201126130422.92945-25-hch@lst.de> <20201126163341.GL422@quack2.suse.cz> MIME-Version: 1.0 In-Reply-To: <20201126163341.GL422@quack2.suse.cz> User-Agent: Mutt/1.5.17 (2007-11-01) X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-loop: dm-devel@redhat.com Cc: Jens Axboe , Mike Snitzer , linux-mm@kvack.org, Greg Kroah-Hartman , Jan Kara , Josef Bacik , Coly Li , linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, dm-devel@redhat.com, linux-mtd@lists.infradead.org, Johannes Thumshirn , Tejun Heo , linux-bcache@vger.kernel.org, Christoph Hellwig Subject: Re: [dm-devel] [PATCH 24/44] block: simplify bdev/disk lookup in blkdev_get X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: device-mapper development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=dm-devel-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit On Thu, Nov 26, 2020 at 05:33:41PM +0100, Jan Kara wrote: > > bdev->bd_contains = whole; > > - bdev->bd_part = disk_get_part(disk, partno); > > - if (!(disk->flags & GENHD_FL_UP) || > > - !bdev->bd_part || !bdev->bd_part->nr_sects) { > > + bdev->bd_part = disk_get_part(disk, bdev->bd_partno); > > + if (!bdev->bd_part || !bdev->bd_part->nr_sects) { > > AFAICT it is still possible that we see !(disk->flags & GENHD_FL_UP) here, > isn't it? Is it safe to remove because the nr_sects check is already > equivalent to it? Or something else? At this point we already have the disk abd bdev reference, so we're not closing any new race here. That being said we might as well keep this check to not bother going ahead when the disk is already torn down. > I think bdget() above needs to be already under bdev_lookup_sem. Otherwise > disk_to_dev(bdev->bd_disk)->kobj below is a potential use-after-free. Yes. I've fixed this and the other issues. -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel