Received: by 2002:a05:6358:c692:b0:131:369:b2a3 with SMTP id fe18csp2165966rwb; Sat, 29 Jul 2023 00:55:57 -0700 (PDT) X-Google-Smtp-Source: APBJJlF2b1i2h8D4BnopE3by7zZP0GeuIlwkxokfRMyNp5cQECmrq5qhdtrz5SrK5zDyUe7lNjEe X-Received: by 2002:a17:903:1d1:b0:1bb:ed65:5e0d with SMTP id e17-20020a17090301d100b001bbed655e0dmr4762673plh.56.1690617356974; Sat, 29 Jul 2023 00:55:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690617356; cv=none; d=google.com; s=arc-20160816; b=ZxPtrzjB7EpOiSpeyBcfG7BWyPw1rCMqIvAD5DeWpgW7zzJwWFjeAlo2ANwdcYCqjC Mco5MLaYEmi0QPhOPMyE2BWg82Z5K5obWPIZYxNFfrXC1T6QDLqFROtQHmTSRdW3mPWa nbEU4/wXPzBCLdcDbxM2tCGcPbE4VvrKRp1pF/kDuDFwe9XnsMvRvUm+Y+MJIHLaCNYl LY0VeUXTvMo/ALBlI9c6n+dYd6Si4HI8sFyBntnJuqJBqwnF6bfGTrGOe5BgQZYH/bUr /KIysn6zHqBWxULYzxknrUHPtOZNv+DemyxQVlqhFW3l7lCK2klb8AYs3HtFa0mK8fvs 1y9g== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=mnM9ZAF5cE2AQMNNS5S+NXlmpKtqMm5oEbcXaptH02I=; fh=BqdffjDvCM1fZciitVQLS/DgysONfxcy9AqklHSr0Wo=; b=gGDakm2LT/ZUuuUXgMfnNbvrERKMVpkC8w16aUi0UShKrJBTlqL2Yqa3dLRxlzdgpv KTsGQkkBXK//ZW4/wBrd8SLrkIU+DT3JmAv9gWPtVsYE+BWeU4gVM9yIwQ0ky3r3NOng ozZ6h/lBZO61E4Tf5HHP279g5qx1zBvvkhLx5GC6pvgvhoirqLXZ5sn8eXPI8Gh4f3UU k2TTlbilg6ce9JGb8GyadiHtWEKORilhK1hBWEi/SICeyCNVDDoEFIWv0vNO8cuZ3kAO LJo568bYJOScJ4TY0a/jksg7zd/8Sx85zPZ3raomPj60Ao+txcBIrg4N6197Jto2Sl55 pBpA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b="OwkHIH/H"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g1-20020a170902d1c100b001b3d6d125f9si4149703plb.524.2023.07.29.00.55.45; Sat, 29 Jul 2023 00:55:56 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b="OwkHIH/H"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232003AbjG2GOK (ORCPT + 99 others); Sat, 29 Jul 2023 02:14:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33970 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229469AbjG2GOI (ORCPT ); Sat, 29 Jul 2023 02:14:08 -0400 Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B77D049DE for ; Fri, 28 Jul 2023 23:14:07 -0700 (PDT) Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-31751d7d96eso2505830f8f.1 for ; Fri, 28 Jul 2023 23:14:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690611246; x=1691216046; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=mnM9ZAF5cE2AQMNNS5S+NXlmpKtqMm5oEbcXaptH02I=; b=OwkHIH/HuiSNNr7YspeK++Tfd+sxlRF4UcAl20GEvHyhDL3YBvilZ9ZQ6YKwXcDvKM gz2xRoM59JtzrsPeePJnZzN0H652+TzsbHJCriVokFrYJfmta9N0QyaDrPup8/4VN9xM EeROIBCsiBfeBeADmK2hZrM2n1J4oiEb0IT1GNgcANYvh8X4mHeoiu8c6UNsE4I4vDTF JfisNFwEBl9mJ3Spg+/RFWbCTKX2KAEdXflNrNGtGyNn5hYF7orHMbXIs6dq7dLiHfTx lwqT1Tk0Co1gN5EmZ5Y8qnd3TLCx+enI0di9ArpnVTfm/+8NLSCljhFPD10KDPqCt4VB YcHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690611246; x=1691216046; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=mnM9ZAF5cE2AQMNNS5S+NXlmpKtqMm5oEbcXaptH02I=; b=QipB3EmrnP062KzBf5+nlYsimHNhzaEUJw2JAelG+kkfjo42AYW0t01UR6DKq6W8Tt /KGmsQGwUv1ASbphvUuxIKh+EanheGdkmSxesZI8eInE15f+8tLp4eFgDJ7qJxurF/SS jXM3uVLIzxkYoKYtKu28b+fgCQtmgp0OZbELg516nblv1881sWLvXeCTGXj4DX2vPRgV 09AtryoBHxHKm+l2vmW/kWogrANnsw42pFXs44azs3UwRwRMweN1/iyIW6ltbvnRLnE0 LVImyjKhLUxNnT6gfkMDjVRrsCqoXravQqsUbOu2vGof0K3/YW73ic/ZlKoUsa0SSiPC Dn6w== X-Gm-Message-State: ABy/qLagCi98uZmxxqxDs2HK/1zNMBc/D9a1d8eLE4bTWe1fGh5lN+KI p4jRrY1O8PKW3rFzNDTpN36GNdMcz6I= X-Received: by 2002:a5d:530c:0:b0:314:49d2:aaab with SMTP id e12-20020a5d530c000000b0031449d2aaabmr3279012wrv.8.1690611245527; Fri, 28 Jul 2023 23:14:05 -0700 (PDT) Received: from localhost.localdomain ([2a05:f480:1000:b09:5400:4ff:fe6f:7099]) by smtp.gmail.com with ESMTPSA id f13-20020adfdb4d000000b003141e9e2f81sm6684416wrj.4.2023.07.28.23.14.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Jul 2023 23:14:05 -0700 (PDT) From: zhangshida X-Google-Original-From: zhangshida To: tytso@mit.edu, adilger.kernel@dilger.ca Cc: linux-kernel@vger.kernel.org, zhangshida@kylinos.cn, starzhangzsd@gmail.com Subject: [PATCH] ext4: Fix rec_len verify error Date: Sat, 29 Jul 2023 14:13:57 +0800 Message-Id: <20230729061357.1702891-1-zhangshida@kylinos.cn> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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-kernel@vger.kernel.org From: Shida Zhang with the configuration PAGE_SIZE 64k and filesystem blocksize 64k, a problem occurred when more than 13 millon files were directly created under a directory: EXT4-fs error (device xx): ext4_dx_csum_set:492: inode #xxxx: comm xxxxx: dir seems corrupt? Run e2fsck -D. EXT4-fs error (device xx): ext4_dx_csum_verify:463: inode #xxxx: comm xxxxx: dir seems corrupt? Run e2fsck -D. EXT4-fs error (device xx): dx_probe:856: inode #xxxx: block 8188: comm xxxxx: Directory index failed checksum when enough files are created, the fake_dirent->reclen will be 0xffff. it doesn't equal to blocksize 65536, i.e. 0x10000. But it is not the same condition when blocksize equals to 4k. when enough files are created, the fake_dirent->reclen will be 0x1000. it equals to blocksize 4k, i.e. 0x1000. The problem seems to be related to the limitation of the 16-bit field when the blocksize is set to 64k. To address this, a special condition was introduced to handle it properly. Signed-off-by: Shida Zhang --- fs/ext4/namei.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c index 0caf6c730ce3..a422cff25216 100644 --- a/fs/ext4/namei.c +++ b/fs/ext4/namei.c @@ -458,6 +458,9 @@ static struct dx_countlimit *get_dx_countlimit(struct inode *inode, root->info_length != sizeof(struct dx_root_info)) return NULL; count_offset = 32; + } else if ((EXT4_BLOCK_SIZE(inode->i_sb) == 65536) + && (le16_to_cpu(dirent->rec_len) == 65535)) { + count_offset = 8; } else return NULL; -- 2.27.0