summaryrefslogtreecommitdiff
path: root/lib/ext2fs/mkjournal.c
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2008-06-17 00:18:58 -0400
committerTheodore Ts'o <tytso@mit.edu>2008-06-17 01:14:30 -0400
commitbc507e31ad8a890232dc2b3aec9ee9d68e95622a (patch)
tree81a065cfb1c7abd2a4e7f0cfe61b78a680aeb232 /lib/ext2fs/mkjournal.c
parent74128f8d7e93fe633aa87951319a4afd252a4494 (diff)
downloade2fsprogs-bc507e31ad8a890232dc2b3aec9ee9d68e95622a.tar.gz
ext2fs_zero_blocks: Avoid clearing more blocks than requested
This could cause certain mke2fs feature combinations to result in the initial blocks of the inode table getting wiped out when the journal is created. Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'lib/ext2fs/mkjournal.c')
-rw-r--r--lib/ext2fs/mkjournal.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/ext2fs/mkjournal.c b/lib/ext2fs/mkjournal.c
index ca8e733b..e55dcbda 100644
--- a/lib/ext2fs/mkjournal.c
+++ b/lib/ext2fs/mkjournal.c
@@ -170,9 +170,11 @@ errcode_t ext2fs_zero_blocks(ext2_filsys fs, blk_t blk, int num,
/* OK, do the write loop */
j=0;
while (j < num) {
- if (blk % STRIDE_LENGTH)
+ if (blk % STRIDE_LENGTH) {
count = STRIDE_LENGTH - (blk % STRIDE_LENGTH);
- else {
+ if (count > (num - j))
+ count = num - j;
+ } else {
count = num - j;
if (count > STRIDE_LENGTH)
count = STRIDE_LENGTH;