Received: by 2002:a89:2c3:0:b0:1ed:23cc:44d1 with SMTP id d3csp152526lqs; Mon, 4 Mar 2024 19:28:10 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCXVqq8xzQfJeIcui0xFgL7r6NWxM1mPDI8sp7ei6MOIqLlMjhkBqPVThWL6qjb9Ep6XHSC29BCV22E6iBGyjU+yMLazii1osqfgoWRiWw== X-Google-Smtp-Source: AGHT+IHXqhmZQ2jTy6LIzgd5JK3rkf9rpXD+HRVK/6DWvIpNhP5R4Ggobk65xJSiKgMgIk5JFnb/ X-Received: by 2002:a2e:b60d:0:b0:2d2:bdc2:2f51 with SMTP id r13-20020a2eb60d000000b002d2bdc22f51mr417310ljn.1.1709609290135; Mon, 04 Mar 2024 19:28:10 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709609290; cv=pass; d=google.com; s=arc-20160816; b=LQUl2a5ao7X7+ho7N9vbDTNG8bNin0x3JLqm5eeg1j8DfcBVwLUrcAKklTcdPLXNnj gBZ83wrdCQx/8Tcz4xvrfo8GHuiaBYArsASR1iZcp/ROe/1LnHW6f0CNe5Og3cZ4kP2W M4ixpQUAGJAyt9vdB+FlV833FSnOsX6N0O/IbF3mZlRUvWyBwGg2BuuiY8DiLpO7yB9T aF1kbatiOx3G7u2+Jxl5c6WrUI6UC1kzYkdUCvfOxvxC/7/Yt9tuImFvbBNQxhKVag3A zcf0RDunJ1QzfVXIeLcBM5qt/HAfC0PT5bmjznxu5rq6shdGsXieIbIbgKPJHejiliTg z4/Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from; bh=I7yh+9X51iWRrvwz24kmgdHWfyklY/RbRYfw7BWJoi4=; fh=8xed9C/1fmL5SYcrxDYn4GV7uNkQSMrPJH0DT86G0Ew=; b=m6OVCAqBekly0oZmQK4xxuHfl0TkoS2koSxBsBK0Jnl9DJ6rn0GNSpJszL68jJ4WJF lLOt68tIjHXPsys4O5Qnk2DEr+/lnkSi5z8T2XiLTVERsT/Oj6dZqNHZHjiRbpdzzlq/ vKpRygaoyS3PCIkY8ZWiYO/gqNjfzr2rUFe0XDoSRep+N2fI3NN1zFZxT1OAkfdzZA8b if42u1RifjDc8O9mX+9iJNzd25H75T87R/eKIVuNMXY2efQPoGehvCV6+Xims0sp/y1e mXSFwFxY1OhUZnKMZzvdgrj+CY0UlpAIFqhIXJrdY+8WQUA96npQ8CTHIt750GyZHSCn lUyQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=huaweicloud.com); spf=pass (google.com: domain of linux-kernel+bounces-91613-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-91613-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id f13-20020a0564021e8d00b005665b5ddb50si4611941edf.108.2024.03.04.19.28.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Mar 2024 19:28:10 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-91613-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=huaweicloud.com); spf=pass (google.com: domain of linux-kernel+bounces-91613-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-91613-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id D0F851F22E84 for ; Tue, 5 Mar 2024 03:28:09 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CE027381C6; Tue, 5 Mar 2024 03:28:00 +0000 (UTC) Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D5F962942A; Tue, 5 Mar 2024 03:27:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.51 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709609280; cv=none; b=DJpN/rXgqU4bOTL+FcrZhWLeshKkeBZ6VR5P58v69bQ32waRBYDrYObWMSq25kIr6dgk0D+pGvmq5d2o/ET0M6EUTVS59dd6vyF2XmkNDt5v+R1tI5BbGCzUCRz1sRbkxeDUirhZe73SWrLhj5Yz8AdR+yUTMZ1tHsUWsJPOFdk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709609280; c=relaxed/simple; bh=YRh+Mt+daWe/BzDZsCdxpBwt/WHkdjmD0/0uz+38YQI=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=Ypr2tHfhW5ybQsSQX5psJ1Eu1Y1ohHg8j/NwAg9IIVZmFD+oEQaOKfLGe9OZc7/LAeqlrWlp4mtjWiU39vSMxNpd8JPp9LNgrc9uQPfobf05JS+a9KrEpM4pw+5Z/l0vspl+9MOCCbO0Lhibz0lWVz4C+gYApFB4nr1Sq7Y2UQU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com; spf=pass smtp.mailfrom=huaweicloud.com; arc=none smtp.client-ip=45.249.212.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huaweicloud.com Received: from mail.maildlp.com (unknown [172.19.93.142]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4TpgxF3R8Xz4f3kKQ; Tue, 5 Mar 2024 11:27:45 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.112]) by mail.maildlp.com (Postfix) with ESMTP id EF2A81A016E; Tue, 5 Mar 2024 11:27:48 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.104.67]) by APP1 (Coremail) with SMTP id cCh0CgAX6REzkeZlkkvtFw--.19090S4; Tue, 05 Mar 2024 11:27:48 +0800 (CST) From: Li Lingfeng To: axboe@kernel.dk, min15.li@samsung.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, dlemoal@kernel.org, hch@lst.de, yangerkun@huawei.com, yukuai1@huaweicloud.com, houtao1@huawei.com, yi.zhang@huawei.com, lilingfeng@huaweicloud.com Subject: [PATCH] block: move capacity validation to blkpg_do_ioctl() Date: Tue, 5 Mar 2024 11:21:32 +0800 Message-Id: <20240305032132.548958-1-lilingfeng@huaweicloud.com> X-Mailer: git-send-email 2.39.2 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID:cCh0CgAX6REzkeZlkkvtFw--.19090S4 X-Coremail-Antispam: 1UD129KBjvJXoW7tFW8XFWfKF1fuFWUWF4UJwb_yoW8Zw1Upr s8tay3Jw4rGF17ua42qa1fC34Fg3Zrtr4xJ3y8Gw1Fy347Aws7KFyF93yFv3WUtr93trWa vF40vFykuFyxCrDanT9S1TB71UUUUUDqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUv014x267AKxVW8JVW5JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02 1l84ACjcxK6xIIjxv20xvE14v26F1j6w1UM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4U JVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq3wA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Gc CE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E 2Ix0cI8IcVAFwI0_Jrv_JF1lYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJV W8JwACjcxG0xvY0x0EwIxGrwACjI8F5VA0II8E6IAqYI8I648v4I1lFIxGxcIEc7CjxVA2 Y2ka0xkIwI1l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4 xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r1q6r43 MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I 0E14v26r4j6F4UMIIF0xvE42xK8VAvwI8IcIk0rVW3JVWrJr1lIxAIcVC2z280aVAFwI0_ Jr0_Gr1lIxAIcVC2z280aVCY1x0267AKxVW8JVW8JrUvcSsGvfC2KfnxnUUI43ZEXa7VUb E_M3UUUUU== X-CM-SenderInfo: polox0xjih0w46kxt4xhlfz01xgou0bp/ From: Li Lingfeng Commit 6d4e80db4ebe ("block: add capacity validation in bdev_add_partition()") add check of partition's start and end sectors to prevent exceeding the size of the disk when adding partitions. However, there is still no check for resizing partitions now. Move the check to blkpg_do_ioctl() to cover resizing partitions. Signed-off-by: Li Lingfeng --- block/ioctl.c | 9 ++++++++- block/partitions/core.c | 11 ----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/block/ioctl.c b/block/ioctl.c index 438f79c564cf..de0cc0d215c6 100644 --- a/block/ioctl.c +++ b/block/ioctl.c @@ -18,7 +18,7 @@ static int blkpg_do_ioctl(struct block_device *bdev, { struct gendisk *disk = bdev->bd_disk; struct blkpg_partition p; - sector_t start, length; + sector_t start, length, capacity, end; if (!capable(CAP_SYS_ADMIN)) return -EACCES; @@ -41,6 +41,13 @@ static int blkpg_do_ioctl(struct block_device *bdev, start = p.start >> SECTOR_SHIFT; length = p.length >> SECTOR_SHIFT; + capacity = get_capacity(disk); + + if (check_add_overflow(start, length, &end)) + return -EINVAL; + + if (start >= capacity || end > capacity) + return -EINVAL; switch (op) { case BLKPG_ADD_PARTITION: diff --git a/block/partitions/core.c b/block/partitions/core.c index 5f5ed5c75f04..b11e88c82c8c 100644 --- a/block/partitions/core.c +++ b/block/partitions/core.c @@ -419,21 +419,10 @@ static bool partition_overlaps(struct gendisk *disk, sector_t start, int bdev_add_partition(struct gendisk *disk, int partno, sector_t start, sector_t length) { - sector_t capacity = get_capacity(disk), end; struct block_device *part; int ret; mutex_lock(&disk->open_mutex); - if (check_add_overflow(start, length, &end)) { - ret = -EINVAL; - goto out; - } - - if (start >= capacity || end > capacity) { - ret = -EINVAL; - goto out; - } - if (!disk_live(disk)) { ret = -ENXIO; goto out; -- 2.39.2