Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp4143953pxb; Mon, 27 Sep 2021 10:16:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwO51nhgQd6OLKfRICaZAbFJfw1jMDujGTCvFx1M4898mbdjsZ0CARMIBZtiLHlpMV7E99T X-Received: by 2002:a63:bf07:: with SMTP id v7mr635640pgf.333.1632762984536; Mon, 27 Sep 2021 10:16:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632762984; cv=none; d=google.com; s=arc-20160816; b=VhOedM8IWl7JBwUCdXxoZZw9OjKkTIg35fMiPlYKbYKMtbrEdGzJNYTce+Xnu8EFpn /SQ1ZFEGjJ0Fx61Ohmce5+K+kxdx+6gZ/e7l55b4Yy8v8iFzA7ausxM6Jp/UfMDSanZh QbU9UKgcpONRXtOEE/kmpX4FnR5huVpSS8JsYIFIM2d9y+c7LchBFYV46YzV34/P37RT Tx4tsFwv+L4NqIgL06HjTD6Xom76N+wUGtOQlAySoQ1/sRfJoQ7MLFx5bBfwWEzr3nE2 MUhPRyb7OWnrHhLBG5iSV2Ok4qd9YwIZ7ZwsudQ61tL9I/cCyh12OfaoZ+gCZICf/aA7 KDWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=JrhQlegvJUNPQ9ci35jz+0RVCPrNeKGdpMd1AGehkVo=; b=kOYSKPmCmu+X7M0dWuc7+UdFAnjOudQQSwQsv7zr9QzP44QQfHWPSXZdBDe/2RcCLt PYDb/FElVO5ttoXyJLKFEImZTZo5bdmhF2AqNvjEyUCdWJVWqG5HqxZLz3cDCL7s0CsY Z5HTBQCrI9hGwrCLmJkN2D/ORQ3/LVPFAfOGhdTFrKk9oXq3swwI5fredpBqKpLSB0jY H9oYRs0DGvmJ/DcqNskIpV1mij2Qnhe6bK1G+pEoalJ90qkd4TcGNgER7t6qV1WImCx1 EO7t4t1IKmQMCp6ZWZdr79NHbIf05GTseYFZjWGDQZO3ry8ukpIzlZpnfxV1xikh1M10 Mnpg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Em56yDTT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 6si21951339pgr.2.2021.09.27.10.16.11; Mon, 27 Sep 2021 10:16:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Em56yDTT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237041AbhI0RQw (ORCPT + 99 others); Mon, 27 Sep 2021 13:16:52 -0400 Received: from mail.kernel.org ([198.145.29.99]:53906 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236892AbhI0RNW (ORCPT ); Mon, 27 Sep 2021 13:13:22 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 14CFD610E8; Mon, 27 Sep 2021 17:09:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1632762553; bh=hcXWIwXEqJZRgb+BK1m5fNT2PHWpzTTQkULV40mzPEc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Em56yDTTICve5bC5SaRbs/EGUw+rh8R4WkRmtnM0hwHf0XnUT7kN3d9ZViDM6Prf/ 3UfmABfkFdMYLOiqy3gTQWCFB1ALVq+EvnuGIPVHphYJt0qhaRwdp5Hac2VAKdIWzQ +xHn6sBm3LT+db2BUlFjLhxQGplrp7wqk3XOg+/E= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, syzbot+fadc0aaf497e6a493b9f@syzkaller.appspotmail.com, Christoph Hellwig , NeilBrown , Song Liu , Sasha Levin Subject: [PATCH 5.10 068/103] md: fix a lock order reversal in md_alloc Date: Mon, 27 Sep 2021 19:02:40 +0200 Message-Id: <20210927170228.128635855@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210927170225.702078779@linuxfoundation.org> References: <20210927170225.702078779@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Christoph Hellwig [ Upstream commit 7df835a32a8bedf7ce88efcfa7c9b245b52ff139 ] Commit b0140891a8cea3 ("md: Fix race when creating a new md device.") not only moved assigning mddev->gendisk before calling add_disk, which fixes the races described in the commit log, but also added a mddev->open_mutex critical section over add_disk and creation of the md kobj. Adding a kobject after add_disk is racy vs deleting the gendisk right after adding it, but md already prevents against that by holding a mddev->active reference. On the other hand taking this lock added a lock order reversal with what is not disk->open_mutex (used to be bdev->bd_mutex when the commit was added) for partition devices, which need that lock for the internal open for the partition scan, and a recent commit also takes it for non-partitioned devices, leading to further lockdep splatter. Fixes: b0140891a8ce ("md: Fix race when creating a new md device.") Fixes: d62633873590 ("block: support delayed holder registration") Reported-by: syzbot+fadc0aaf497e6a493b9f@syzkaller.appspotmail.com Signed-off-by: Christoph Hellwig Tested-by: syzbot+fadc0aaf497e6a493b9f@syzkaller.appspotmail.com Reviewed-by: NeilBrown Signed-off-by: Song Liu Signed-off-by: Sasha Levin --- drivers/md/md.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/md/md.c b/drivers/md/md.c index 288d26013de2..f16f190546ef 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -5759,10 +5759,6 @@ static int md_alloc(dev_t dev, char *name) disk->flags |= GENHD_FL_EXT_DEVT; disk->events |= DISK_EVENT_MEDIA_CHANGE; mddev->gendisk = disk; - /* As soon as we call add_disk(), another thread could get - * through to md_open, so make sure it doesn't get too far - */ - mutex_lock(&mddev->open_mutex); add_disk(disk); error = kobject_add(&mddev->kobj, &disk_to_dev(disk)->kobj, "%s", "md"); @@ -5777,7 +5773,6 @@ static int md_alloc(dev_t dev, char *name) if (mddev->kobj.sd && sysfs_create_group(&mddev->kobj, &md_bitmap_group)) pr_debug("pointless warning\n"); - mutex_unlock(&mddev->open_mutex); abort: mutex_unlock(&disks_mutex); if (!error && mddev->kobj.sd) { -- 2.33.0