Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp268022ybg; Tue, 22 Oct 2019 20:21:44 -0700 (PDT) X-Google-Smtp-Source: APXvYqy4MVY5BQEkJP9P/YkykX7CVWYQwjEaScaPt+cmP+tJiG3s/Tv4joCq6dq0eVMOwBczij42 X-Received: by 2002:aa7:d955:: with SMTP id l21mr26124701eds.179.1571800904715; Tue, 22 Oct 2019 20:21:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1571800904; cv=none; d=google.com; s=arc-20160816; b=eh/yiXs2TbuVTD+oYpe71yxkp6rsHPFp/GyGnQWfMSTo/P13g+ml5VdHegD/YBs1ec fCNXZOhf7Rk2Y3wIqrBPcf4SiKPcK6gPFVD18nBil51g4YXHcqaTSPuvOj+iAOWceOVv SevywYroi0TW6QH+V3ni3IrpZ5uzBC4BS0DBz72yR6Gs8pA1NshCvMK5VGlEWVOTplAb lXPKuLNN6PSvZipNKNSS2/PniErAh8DHD2qIXZwyXzUYeSV9Cby8VOkAxfszf04hNps0 aCmVx4AqTEzm5Dq69lEtv8tOKUORc5O58gGTIazMrrygPVktQ5W6HuYXIPnDN6OSl8r3 qaKQ== 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 :message-id:date:subject:cc:to:from; bh=Hv7N8+iIE98Bq0moMGjQapF/yt4Uj7AeVLxQ5D/cWQU=; b=YgafF//6HdVN2b0JPYK34Ow0/WKwWNRcCMWthkVWj/s+nd3B0AziunU5NMcLhxBKvU pYpkzuF/IKYO5P0IsM53qv8hZBsLgI54i6ji7A4b7X3gs1PQs4s5TwQP/Ncf/qujsJae uqEiNRHodS2u+jG3mhdadBqnli0FvrcDv64fGqRN3H2X/kA2yYgWPSUiFlEyUuD0VsWE oCIllMBERxTX97Du1/GSnYGoGOW+vwxfOANDHCgcq1IJgTmf3nxBKu9Ss/HYAfsJWRKx uhKg67apeQJHE4uGMuf8402ms+hewLDxui6KQ9jNKTatKpY4d0sNfZ3wUcv5bPM4P/3j fIQg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-ext4-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-ext4-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 dx21si208459ejb.101.2019.10.22.20.21.10; Tue, 22 Oct 2019 20:21:44 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-ext4-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-ext4-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730878AbfJWBbW (ORCPT + 99 others); Tue, 22 Oct 2019 21:31:22 -0400 Received: from outgoing-auth-1.mit.edu ([18.9.28.11]:56271 "EHLO outgoing.mit.edu" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730047AbfJWBbW (ORCPT ); Tue, 22 Oct 2019 21:31:22 -0400 Received: from callcc.thunk.org (pool-72-93-95-157.bstnma.fios.verizon.net [72.93.95.157]) (authenticated bits=0) (User authenticated as tytso@ATHENA.MIT.EDU) by outgoing.mit.edu (8.14.7/8.12.4) with ESMTP id x9N1VHwh025989 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 22 Oct 2019 21:31:18 -0400 Received: by callcc.thunk.org (Postfix, from userid 15806) id 6E0D8420456; Tue, 22 Oct 2019 21:31:17 -0400 (EDT) From: "Theodore Ts'o" To: Ext4 Developers List Cc: "Theodore Ts'o" , stable@kernel.org Subject: [PATCH] ext4: fix signed vs unsigned comparison in ext4_valid_extent() Date: Tue, 22 Oct 2019 21:31:12 -0400 Message-Id: <20191023013112.18809-1-tytso@mit.edu> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Due to a signed vs unsigned comparison, an invalid extent where ee_block (the logical block) is so large that lblk + len overflow wasn't getting flagged as invalid. As a result, we tripped the BUG_ON(end < lblk) in ext4_es_cache_extent() when trying to mount a file system with a corrupted journal inode was corrupted. https://bugzilla.kernel.org/show_bug.cgi?id=205197 Signed-off-by: Theodore Ts'o Cc: stable@kernel.org --- fs/ext4/extents.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index fb0f99dc8c22..d12bc287abdc 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -367,7 +367,7 @@ ext4_ext_max_entries(struct inode *inode, int depth) static int ext4_valid_extent(struct inode *inode, struct ext4_extent *ext) { ext4_fsblk_t block = ext4_ext_pblock(ext); - int len = ext4_ext_get_actual_len(ext); + unsigned int len = ext4_ext_get_actual_len(ext); ext4_lblk_t lblock = le32_to_cpu(ext->ee_block); /* -- 2.23.0