Received: by 2002:a05:6a10:7420:0:0:0:0 with SMTP id hk32csp610267pxb; Tue, 15 Feb 2022 23:42:35 -0800 (PST) X-Google-Smtp-Source: ABdhPJzi0DEfqo5coGd4XQsd9Sxc6BDqwfifBBRCBsjuZkUtq3cEu3lES0ccZnA2JUFAWdMQlwYS X-Received: by 2002:a17:90b:3b52:b0:1b9:cb97:6f0 with SMTP id ot18-20020a17090b3b5200b001b9cb9706f0mr312458pjb.191.1644997355700; Tue, 15 Feb 2022 23:42:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644997355; cv=none; d=google.com; s=arc-20160816; b=al3Ym7XS6vdNrXRBNptHxCwydPXDsmBdnICDTZBBSq0LKQnUMbSbOm44pqeW+SDWEz gLRHAtkjVkjOEXQGVa5skef8AyWL0l7HmWqxafnMrs2LAI6pfumz7esXsykn1ay6XKaU 8UOes5HEzi2QX7grdIXs1ayNqaSHhB77KkDzvP+r+oO4/zFiqahZ6Ees3JbCGFmOZIgg /hqGwtYYksz5Ml+li9hFn6Y+gLPECYz6QN4BNJIBoPTF0dO9eHrUr8H28R5FPZd9ngMw PXnJkyq3QobKCCC1OX5tfFDbv99Ili+57ZAbawqGLzvJWXXabUp8WhGr1/rJQmmk5dIf iK8w== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=RL/DqFMOEOCkZaGneC5Haru/gnmVeW+SrV4NaCfXwMc=; b=PBgw6X74FJgOXkURPO4DTNee8UaaoZsaL+no4GDizqQYsXiVq3G06sMoe39J1PyTvk DP0M7GApctM0JgIUcauxEWswSsmkgWTyYUeWuD9nBj08QkysR0OA4Q0IKhKD1xlBG5G6 JeNZ3Eh0QX4Fm6+4jl93XrPyAZEL4b+qStMYuEbJuZ1gZQ3OVlxy0zB1NKIwwfdI1WZ6 i6Gqe2odTTVS3h7712YtNJSb0L3pJM/CxpXuB1QeJXB+R5A0KeXduuRliPykRmLI/PYr 48+aJ+aOnaPwuPjEGtRDE3R7hpvrTGadKcweas43IUghCrasfy71WsWXl6qN+smO8Hi5 uNEQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=BWUzb4IL; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id t15si16998090plg.592.2022.02.15.23.42.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Feb 2022 23:42:35 -0800 (PST) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=BWUzb4IL; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 9D35B258FF1; Tue, 15 Feb 2022 23:07:42 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229528AbiBPHH0 (ORCPT + 99 others); Wed, 16 Feb 2022 02:07:26 -0500 Received: from gmail-smtp-in.l.google.com ([23.128.96.19]:34230 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229498AbiBPHHZ (ORCPT ); Wed, 16 Feb 2022 02:07:25 -0500 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8102B2C8C67; Tue, 15 Feb 2022 23:06:37 -0800 (PST) Received: from pps.filterd (m0187473.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 21G5BpRT034328; Wed, 16 Feb 2022 07:03:16 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=RL/DqFMOEOCkZaGneC5Haru/gnmVeW+SrV4NaCfXwMc=; b=BWUzb4ILSCaRYQDIDfxhX7XQ3+9cv0TdE0NN617jYmmeFfHVft78o1GQL9IcN4esdxVK 3mpTNLLrlaDpcuq53pcOVA+Csntzji0eHAOoUfUcPTpKFMacGJ4Dk6I37OlaLDacgzxb TCzLYu5Pa2x8Xj3uuV54sEraa5bLDIBx5O6ca5md9BNeKRXLb2PP87MHjHQEUxcw82sA Q0tm8/EEcbYLp3XE9kA/5eAvHW9pa/H6Dy+acbjZRO9nFpT5ibg76zc6aP/7tHrw39Q/ pXRRQ+1e2BmvyHmoxybNXPZ/AWLOb4pO/xz+Z6QEWJBAFF+f8USe2hTGdbzOe0vco+TD 6w== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com with ESMTP id 3e8twfa3c8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 16 Feb 2022 07:03:15 +0000 Received: from m0187473.ppops.net (m0187473.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 21G72WlR017364; Wed, 16 Feb 2022 07:03:15 GMT Received: from ppma06ams.nl.ibm.com (66.31.33a9.ip4.static.sl-reverse.com [169.51.49.102]) by mx0a-001b2d01.pphosted.com with ESMTP id 3e8twfa3ba-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 16 Feb 2022 07:03:15 +0000 Received: from pps.filterd (ppma06ams.nl.ibm.com [127.0.0.1]) by ppma06ams.nl.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 21G72eKL007601; Wed, 16 Feb 2022 07:03:13 GMT Received: from b06avi18878370.portsmouth.uk.ibm.com (b06avi18878370.portsmouth.uk.ibm.com [9.149.26.194]) by ppma06ams.nl.ibm.com with ESMTP id 3e645jwn96-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 16 Feb 2022 07:03:12 +0000 Received: from d06av24.portsmouth.uk.ibm.com (mk.ibm.com [9.149.105.60]) by b06avi18878370.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 21G73AbZ42992048 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 16 Feb 2022 07:03:10 GMT Received: from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7813B4204B; Wed, 16 Feb 2022 07:03:10 +0000 (GMT) Received: from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 06E9142047; Wed, 16 Feb 2022 07:03:10 +0000 (GMT) Received: from localhost (unknown [9.43.85.173]) by d06av24.portsmouth.uk.ibm.com (Postfix) with ESMTP; Wed, 16 Feb 2022 07:03:09 +0000 (GMT) From: Ritesh Harjani To: linux-ext4@vger.kernel.org Cc: Jan Kara , "Theodore Ts'o" , Andreas Dilger , Harshad Shirwadkar , linux-fsdevel@vger.kernel.org, Ritesh Harjani Subject: [PATCHv2 8/9] ext4: Add strict range checks while freeing blocks Date: Wed, 16 Feb 2022 12:32:50 +0530 Message-Id: X-Mailer: git-send-email 2.31.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: KZrneDowrUa00V-jipmMlgUAn2rR1u_Y X-Proofpoint-GUID: LShg3hoQPQalrteTKX92JdT5BPMjBHwm X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.816,Hydra:6.0.425,FMLib:17.11.62.513 definitions=2022-02-16_02,2022-02-14_04,2021-12-02_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 suspectscore=0 mlxlogscore=623 malwarescore=0 spamscore=0 priorityscore=1501 phishscore=0 impostorscore=0 mlxscore=0 lowpriorityscore=0 clxscore=1015 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2201110000 definitions=main-2202160038 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Currently ext4_mb_clear_bb() & ext4_group_add_blocks() only checks whether the given block ranges (which is to be freed) belongs to any FS metadata blocks or not, of the block's respective block group. But to detect any FS error early, it is better to add more strict checkings in those functions which checks whether the given blocks belongs to any critical FS metadata or not within system-zone. Suggested-by: Jan Kara Signed-off-by: Ritesh Harjani Reviewed-by: Jan Kara --- fs/ext4/mballoc.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index bb3cfcd545ce..0a95bdb1e07b 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -5930,13 +5930,7 @@ static void ext4_mb_clear_bb(handle_t *handle, struct inode *inode, goto error_return; } - if (in_range(ext4_block_bitmap(sb, gdp), block, count) || - in_range(ext4_inode_bitmap(sb, gdp), block, count) || - in_range(block, ext4_inode_table(sb, gdp), - sbi->s_itb_per_group) || - in_range(block + count - 1, ext4_inode_table(sb, gdp), - sbi->s_itb_per_group)) { - + if (!ext4_inode_block_valid(inode, block, count)) { ext4_error(sb, "Freeing blocks in system zone - " "Block = %llu, count = %lu", block, count); /* err = 0. ext4_std_error should be a no op */ @@ -6007,7 +6001,7 @@ static void ext4_mb_clear_bb(handle_t *handle, struct inode *inode, NULL); if (err && err != -EOPNOTSUPP) ext4_msg(sb, KERN_WARNING, "discard request in" - " group:%d block:%d count:%lu failed" + " group:%u block:%d count:%lu failed" " with %d", block_group, bit, count, err); } else @@ -6220,11 +6214,7 @@ int ext4_group_add_blocks(handle_t *handle, struct super_block *sb, goto error_return; } - if (in_range(ext4_block_bitmap(sb, desc), block, count) || - in_range(ext4_inode_bitmap(sb, desc), block, count) || - in_range(block, ext4_inode_table(sb, desc), sbi->s_itb_per_group) || - in_range(block + count - 1, ext4_inode_table(sb, desc), - sbi->s_itb_per_group)) { + if (!ext4_sb_block_valid(sb, NULL, block, count)) { ext4_error(sb, "Adding blocks in system zones - " "Block = %llu, count = %lu", block, count); -- 2.31.1