From: "Theodore Y. Ts'o" <tytso@mit.edu>
To: Andreas Dilger <adilger@whamcloud.com>
Cc: linux-ext4@vger.kernel.org
Subject: Re: [PATCH 1/9] e2fsck: fix e2fsck_allocate_memory() overflow
Date: Sat, 29 Feb 2020 18:25:59 -0500 [thread overview]
Message-ID: <20200229232559.GA38945@mit.edu> (raw)
In-Reply-To: <1581037786-62789-1-git-send-email-adilger@whamcloud.com>
On Thu, Feb 06, 2020 at 06:09:38PM -0700, Andreas Dilger wrote:
> e2fsck_allocate_memory() takes an "unsigned int size" argument, which
> will overflow for allocations above 4GB. This happens for dir_info
> and dx_dir_info arrays when there are more than 350M directories in a
> filesystem, and for the dblist array above 180M directories.
>
> There is also a risk of overflow during the binary search in both
> e2fsck_get_dir_info() and e2fsck_get_dx_dir_info() when the midpoint
> of the array is calculated, if there would be more than 2B directories
> in the filesystem and working above the half way point.
>
> Also, in some places inode numbers are "int" instead of "ext2_ino_t",
> which can also cause problems with the array size calculations, and
> makes it hard to identify where inode numbers are used.
>
> Fix e2fsck_allocate_memory() to take an "unsigned long" argument to
> match ext2fs_get_mem(), so that it can do single memory allocations
> over 4GB.
>
> Fix e2fsck_get_dir_info() and e2fsck_get_dx_dir_info() to temporarily
> use an unsigned long long value to calculate the midpoint (which will
> always fit into an ext2_ino_t again afterward).
>
> Change variables that hold inode numbers to be ext2_ino_t, and print
> them as unsigned values instead of printing negative inode numbers.
>
> Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
> Reviewed-by: Shilong Wang <wshilong@ddn.com>
> Lustre-bug-id: https://jira.whamcloud.com/browse/LU-13197
Applied, thanks.
- Ted
prev parent reply other threads:[~2020-02-29 23:26 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-07 1:09 [PATCH 1/9] e2fsck: fix e2fsck_allocate_memory() overflow Andreas Dilger
2020-02-07 1:09 ` [PATCH 2/9] e2fsck: use proper types for variables Andreas Dilger
2020-02-29 23:27 ` Theodore Y. Ts'o
2020-02-07 1:09 ` [PATCH 3/9] e2fsck: avoid mallinfo() if over 2GB allocated Andreas Dilger
2020-02-29 23:28 ` Theodore Y. Ts'o
2020-02-07 1:09 ` [PATCH 4/9] e2fsck: reduce memory usage for many directories Andreas Dilger
2020-02-29 23:29 ` Theodore Y. Ts'o
2020-02-07 1:09 ` [PATCH 5/9] debugfs: allow comment lines in command file Andreas Dilger
2020-02-29 23:32 ` Theodore Y. Ts'o
2020-02-07 1:09 ` [PATCH 6/9] debugfs: print inode numbers as unsigned Andreas Dilger
2020-02-29 23:34 ` Theodore Y. Ts'o
2020-02-07 1:09 ` [PATCH 7/9] e2fsck: fix overflow if more than 4B inodes Andreas Dilger
2020-02-29 23:35 ` Theodore Y. Ts'o
2020-02-07 1:09 ` [PATCH 8/9] e2fsck: consistently use ext2fs_get_mem() Andreas Dilger
2020-02-29 23:36 ` Theodore Y. Ts'o
2020-03-04 23:23 ` Theodore Y. Ts'o
2020-02-07 1:09 ` [PATCH 9/9] misc: handle very large files with filefrag Andreas Dilger
2020-03-04 23:27 ` Theodore Y. Ts'o
2020-02-12 0:58 ` [PATCH] " Andreas Dilger
2020-02-12 1:09 ` Andreas Dilger
2020-02-12 1:07 ` [PATCH] e2fsck: avoid overflow with very large dirs Andreas Dilger
2020-03-04 23:39 ` Theodore Y. Ts'o
2020-02-29 23:25 ` Theodore Y. Ts'o [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200229232559.GA38945@mit.edu \
--to=tytso@mit.edu \
--cc=adilger@whamcloud.com \
--cc=linux-ext4@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.