Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp4154595pxb; Mon, 27 Sep 2021 10:30:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwLc04m/XTPa4WBojj/dF1juwzbCwz18AJEqXNaX4hqndBI10MiiV6ZTwg+go/4d04YA6jF X-Received: by 2002:a17:902:ed8a:b0:13b:7a09:5215 with SMTP id e10-20020a170902ed8a00b0013b7a095215mr1089968plj.56.1632763804056; Mon, 27 Sep 2021 10:30:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632763804; cv=none; d=google.com; s=arc-20160816; b=VeAadTCCh9bDT241XQTPqRmXGEAEfYuVoLQQlsiM9vLEVCLXBXDGbCcARwUkIy9jtZ kWunMUl4uqY7f/B/D5AAEGsADxjOPDXOHKT6KP5KubuAitHaEApwmaJlx6gn3yxiRTEz k1TUrqBH7ByI04rnSCNX3QT8PlmFa3QCG/d6XOsvsTOtbQIOGzmQBU4lvLzvWhp6nZJO GUKYB1C2JJ7xpJK4ZwmGnt8nHaMShHf+v6KmBM1JTynTXYsa3QXnVuMoh/WFXkMn5wGg vd5mbC0sfbjzXjvR/OJd8NJbBlQO2y8G0mzcG9H34l40Hv/snW0oEjh4/eblyrkP5ec4 DQAg== 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=mS9UaLoc4orVfDjLUdYDIOLIH8y4X/2ndo8yIYTvMBM=; b=LBEdYHtyg1SHI9NjlquWKyMC3FPMTWsazcgkxk69kmgEEaB+n6ZB/GAfQjdjAl3jxA AAH/sPBsFbx6L4ExF5z8z0VJz1/noqieofT92kJ/jrHfAPLzTCeqi/WbcFNYbmbVnFDf yzxPPyNxD7Kp51s2BP7h2y7AUFP6P9N6GdGhMr96mEtMMHeEdN/AGoQd2GUGCSMzbaQR SZl5PoqevkbIStAZLZPlZXdN6zeZwc0u1K99Z0iJIzWWvVVWIcjt3eXlPB5I5NgJpHTK Ja3fj5X4VABJvQEfhptcubvF9+XNsq644RGYmge8rMKetMDUDsH+rWBj+IegNhArCK6M NyqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=dSDh5mrG; 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 s207si23502606pfc.377.2021.09.27.10.29.50; Mon, 27 Sep 2021 10:30:04 -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=dSDh5mrG; 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 S238112AbhI0R2a (ORCPT + 99 others); Mon, 27 Sep 2021 13:28:30 -0400 Received: from mail.kernel.org ([198.145.29.99]:37176 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236459AbhI0RY0 (ORCPT ); Mon, 27 Sep 2021 13:24:26 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 7C87A6140F; Mon, 27 Sep 2021 17:15:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1632762947; bh=m6XPlepzWCVLve9/3ZlQ/F/2zsTdLcW778g6EpQb3uY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dSDh5mrGiPUMxGwlwJbpm54AnZzbvLAdhUDeNyPGJV2d9F3JIaVyG3XY/7vGvfu7F XnumDFVGIK6kJ3mqRNEcOFMPR8s8s8650C0afcVZlX+fJXpQcZqAIiHjJKWWwH2gOa ZfcFADilF9Xbs4cYrzgvKZWHBq5B1gQs33K/8jP0= 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.14 110/162] md: fix a lock order reversal in md_alloc Date: Mon, 27 Sep 2021 19:02:36 +0200 Message-Id: <20210927170237.260881756@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210927170233.453060397@linuxfoundation.org> References: <20210927170233.453060397@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 ae8fe54ea358..6c0c3d0d905a 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -5700,10 +5700,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"); @@ -5718,7 +5714,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