Received: by 2002:a25:86ce:0:0:0:0:0 with SMTP id y14csp2174329ybm; Thu, 23 May 2019 12:34:43 -0700 (PDT) X-Google-Smtp-Source: APXvYqzRGZ9SMfvEy35xGabpf2c0qVPSfwjXE0O2wAa/55LDKeWwWX+gRtb16doLBuDLukgM8j2Y X-Received: by 2002:a17:902:d890:: with SMTP id b16mr52497646plz.91.1558640083593; Thu, 23 May 2019 12:34:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558640083; cv=none; d=google.com; s=arc-20160816; b=BJqNb44V4Xrq0LkDwd04FAPmhLF5y1NgPjyjJ9UcNIsp2WIlpMBbuIHcbDLID/hp6G gw2n/Lopfm3hhg+BbSTjw4lrHk2ydH2HcPaHcjU3U/1P9mVz5G8Iuyys3NcishAtb6i9 SAM+CbpzXIvY9Oib/dE3qIn/3FLsetgUmnNS57kcO/7yDtHY9huedR2F/Q/wv9EEyb+N 6SAy3Adnft3fNrpUjvDnb3r/pA0Bc1JN20lRI7FxBR4PNo19/BmoLnScl+VnkilmJX+8 aPKA2NN6mTNto0d5wREv2Wp4f2lsE4zSOeXO3YQLZfsOppnq63FxuULlnldpp3jI3KrC 4YUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=PA1FVkGOEbZgXAmI4EUOUKmB0+iEZHn9Oyg5hsM5i5Q=; b=AqJE+w+yFyH9GNx5yuCqLP77Odn0nYSuqvzQeG7wNGR+J49q4umNzo2KXPzxZZAIVW LkO33Kcl8NlBvIRbgXjIliyrkmZNs6viDY+G0LUX7d+sBpPb+zgm5V4UdBgak7/yrJTw 9vg8h4wtEpl+iM+Www7g1JSW59b4WOJZOHYAQivO9fQjISGp1tDoxv+2ZzNfhP8mWCrh PqB9ytj4OPNdIE4MazBedQJZCn76lETOmwn1g8KjAWBRj5LalnF30C453tcqxmB9Ji7f TVFAksgKcoWjybmj2DXZ94U4r0xyXVmXnufyZplfz6JJW4XAQDEW23E3ge1CkIL25SbG FI8g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=jfhq9qEy; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n6si524576plk.237.2019.05.23.12.34.28; Thu, 23 May 2019 12:34:43 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=jfhq9qEy; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2391662AbfEWTcO (ORCPT + 99 others); Thu, 23 May 2019 15:32:14 -0400 Received: from mail.kernel.org ([198.145.29.99]:44720 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2391932AbfEWTbB (ORCPT ); Thu, 23 May 2019 15:31:01 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id AA8F821841; Thu, 23 May 2019 19:31:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1558639861; bh=2ptE7vIvQyhsyXR24RemViMRC03B+p8ztYdpEcbI6Q8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jfhq9qEyYpbIAUD/nAcpOMlwxpepODppugky/DGMX9kQXkZnX/XWhRF3seh2qGJR3 ChmJmb6YtonnCdBajUFCIpua+3KcQETCr83iFORa1VmlPMOayl7piAaR+E62TsZcNd drk2/rJtyVnOKimfAZ+7e/azqYpibVoVZV+1YExA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Damien Le Moal , Shaun Tancheff , Mike Snitzer Subject: [PATCH 5.1 103/122] dm zoned: Fix zone report handling Date: Thu, 23 May 2019 21:07:05 +0200 Message-Id: <20190523181718.941014095@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190523181705.091418060@linuxfoundation.org> References: <20190523181705.091418060@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Damien Le Moal commit 7aedf75ff740a98f3683439449cd91c8662d03b2 upstream. The function blkdev_report_zones() returns success even if no zone information is reported (empty report). Empty zone reports can only happen if the report start sector passed exceeds the device capacity. The conditions for this to happen are either a bug in the caller code, or, a change in the device that forced the low level driver to change the device capacity to a value that is lower than the report start sector. This situation includes a failed disk revalidation resulting in the disk capacity being changed to 0. If this change happens while dm-zoned is in its initialization phase executing dmz_init_zones(), this function may enter an infinite loop and hang the system. To avoid this, add a check to disallow empty zone reports and bail out early. Also fix the function dmz_update_zone() to make sure that the report for the requested zone was correctly obtained. Fixes: 3b1a94c88b79 ("dm zoned: drive-managed zoned block device target") Cc: stable@vger.kernel.org Signed-off-by: Damien Le Moal Reviewed-by: Shaun Tancheff Signed-off-by: Damien Le Moal Signed-off-by: Mike Snitzer Signed-off-by: Greg Kroah-Hartman --- drivers/md/dm-zoned-metadata.c | 5 +++++ 1 file changed, 5 insertions(+) --- a/drivers/md/dm-zoned-metadata.c +++ b/drivers/md/dm-zoned-metadata.c @@ -1169,6 +1169,9 @@ static int dmz_init_zones(struct dmz_met goto out; } + if (!nr_blkz) + break; + /* Process report */ for (i = 0; i < nr_blkz; i++) { ret = dmz_init_zone(zmd, zone, &blkz[i]); @@ -1204,6 +1207,8 @@ static int dmz_update_zone(struct dmz_me /* Get zone information from disk */ ret = blkdev_report_zones(zmd->dev->bdev, dmz_start_sect(zmd, zone), &blkz, &nr_blkz, GFP_NOIO); + if (!nr_blkz) + ret = -EIO; if (ret) { dmz_dev_err(zmd->dev, "Get zone %u report failed", dmz_id(zmd, zone));