Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp497209ybt; Fri, 19 Jun 2020 06:55:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJye8aNqF6fqMlSjmzWhdfzqG5+frz8ow05iNJV3nYvLQJQ35kuGtN0Wh4gPCqYETcXKyIyj X-Received: by 2002:a05:6402:1a48:: with SMTP id bf8mr3508410edb.133.1592574902317; Fri, 19 Jun 2020 06:55:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592574902; cv=none; d=google.com; s=arc-20160816; b=Cr81kD/cpYwwNffZ/YEOXDaHgr/zOiaz3xWXLlfOFFLobK4Hx/qzRUg9LgRlp4m8dW K1AQ8qnjE44kO3BN0lwOXhj+QSn/DETR4d1Y8K2fvep37KpLvCRHx/0AZNfRZug7MigQ LIFPZzD/8ytnU80oCeEzyyaoVjSaGD/SaNiktX1PPD/Df2yVq6kX+NYfB8uBYvwEAHQZ LvrnFXtki4cIguLpd5aDKn+kNUzsabW9esWMqKZ8/HZMovs1yLa825fxngTzQW07JSrL ggs0aJt33yGm9Sgpvo75M6wKSNiCvgvWcPEHqExU7FFNkzuDinvLXpuy8Rj6by7xPfnw IK9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :dkim-signature; bh=GACF9F5CJXHMMRhKONk7G6GG/DsczmK7cX9umo++kj4=; b=MERmpugWYLiS6YoP38gQjL0VhbkyfJ9RQY7NmMR5DR9GpQP8vxK8SbyEgWrtW0tqcU 7fVVJm3aOnGRpK6ZdEKrbu5JZ3sCLdSywRext5V+m6ZX9G9mBQOcIaaR/eURYvzzYqzM wgE8wt82fBdExtQZ+KqA4ECcowA1a8MDt8YSGoELckJ5En2H5xDA/q7i2iATJpIxeEm1 iezUiWZCokCujp1iYlFROZlEpLv2bSZXw/tH8qvCeDJJBSRmeKr0I3XnEUZ8WF7dhB1s +SezRFbqJEWMinOcBjmkzXY438G5NlXfq25yoyQcphTUPdjQvhD8qn5JMtSFwTOKIR/9 5OkA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Tn8SE7RH; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u21si4011963edq.299.2020.06.19.06.54.38; Fri, 19 Jun 2020 06:55:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Tn8SE7RH; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731738AbgFSNxv (ORCPT + 99 others); Fri, 19 Jun 2020 09:53:51 -0400 Received: from us-smtp-2.mimecast.com ([205.139.110.61]:43313 "EHLO us-smtp-delivery-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1731581AbgFSNxv (ORCPT ); Fri, 19 Jun 2020 09:53:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1592574830; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=GACF9F5CJXHMMRhKONk7G6GG/DsczmK7cX9umo++kj4=; b=Tn8SE7RHoc/k1lmy2Ogj5V9gzWJhdajBx7Tdf52HpcxdmyVFFJQsqnr3dTH63vcxNsxdXO LODpyOytmGHKJRcBISy148sTlsHq4iUQtfW8eiVuwM71IL1luDbR+2A6qgT/rGQVHq5Qkr nCkJb366MaHWy3K6a90MccZq67E8Vg4= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-152-P6KuuS-NOBa8DS0ZHnJghg-1; Fri, 19 Jun 2020 09:53:45 -0400 X-MC-Unique: P6KuuS-NOBa8DS0ZHnJghg-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id CDC70102CC49; Fri, 19 Jun 2020 13:53:44 +0000 (UTC) Received: from work (unknown [10.40.192.238]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AB21019D61; Fri, 19 Jun 2020 13:53:37 +0000 (UTC) Date: Fri, 19 Jun 2020 15:53:33 +0200 From: Lukas Czerner To: Eric Sandeen Cc: Eric Sandeen , "linux-ext4@vger.kernel.org" Subject: Re: [PATCH 1/1] ext4: fix potential negative array index in do_split() Message-ID: <20200619135333.3idxuwhyax543ibt@work> References: <20200619064122.vj346xptid5viogv@work> <20200619070854.z3dslhh7yebainhd@work> <20200619111631.ugx7sdpci32ohgir@work> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org On Fri, Jun 19, 2020 at 08:44:19AM -0500, Eric Sandeen wrote: > On 6/19/20 6:16 AM, Lukas Czerner wrote: > > >> The other possibility is that map[i].size is not right and indeed there > >> seems to be a bug in dx_make_map() > >> > >> map_tail->size = le16_to_cpu(de->rec_len); > >> > >> should be > >> > >> map_tail->size = ext4_rec_len_from_disk(de->rec_len, blocksize)); > >> > >> right ? Otherwise with large enough records the size will be smaller > >> than it really is. > >> > >> A quick look at fs/ext4/namei.c reveals couple of places there rec_len > >> is used without the conversion and we should check whether it needs > >> fixing. > >> > >> -Lukas > > > > And indeed the following patch seems to have fixed the issue we were > > seeing. Eric I think that this might be a proper fix. But we still need > > to check the other uses of rec_len to make sure it's ok as well. > > > > diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c > > index 94ec882..5509fdc 100644 > > --- a/fs/ext4/namei.c > > +++ b/fs/ext4/namei.c > > @@ -1068,7 +1068,7 @@ static int dx_make_map(struct ext4_dir_entry_2 *de, unsigned blocksize, > > map_tail--; > > map_tail->hash = h.hash; > > map_tail->offs = ((char *) de - base)>>2; > > - map_tail->size = le16_to_cpu(de->rec_len); > > + map_tail->size = ext4_rec_len_from_disk(le16_to_cpu(de->rec_len), blocksize); > > That isn't right, ext4_rec_len_from_disk /takes/ an __le16 :) > > - map_tail->size = le16_to_cpu(de->rec_len); > + map_tail->size = ext4_rec_len_from_disk(de->rec_len), blocksize); Yep, my bad. > > would be more correct, but won't matter for PAGE_SIZE < 65536 right? True, it's not the problem we're seeing. -Lukas > > -Eric >