All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Sandeen <sandeen@redhat.com>
To: ext4 development <linux-ext4@vger.kernel.org>
Cc: maxnet@onlinehome.de
Subject: [PATCH] filefrag: Fix segfault on virtual fs
Date: Tue, 26 Jun 2012 09:59:08 -0400	[thread overview]
Message-ID: <4FE9C02C.8040703@redhat.com> (raw)

filefrag on a virtual fs like proc segfaults:

# filefrag /proc/filesystems 
Floating point exception

because stat.f_blocks is 0, so the calculation of cylgroups is 0,
which leads to a divide by 0 when calculating expected extents.

Since it's only used for ext2 filesystems anyway, just move
the calculation of expected under "if (is_ext2)" to fix this.

Reported-by: Max Beikirch <maxnet@onlinehome.de>
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
---

diff --git a/misc/filefrag.c b/misc/filefrag.c
index 0583e91..b6e7d62 100644
--- a/misc/filefrag.c
+++ b/misc/filefrag.c
@@ -365,11 +366,12 @@ static void frag_report(const char *filename)
 	else
 		printf("%s: %d extents found", filename, num_extents);
 	/* count, and thus expected, only set for indirect FIBMAP'd files */
-	expected = (count/((bs*8)-(fsinfo.f_files/8/cylgroups)-3))+1;
-	if (is_ext2 && expected && expected < num_extents)
-		printf(", perfection would be %d extent%s\n", expected,
-			(expected>1) ? "s" : "");
-	else
+	if (is_ext2) {
+		expected = (count/((bs*8)-(fsinfo.f_files/8/cylgroups)-3))+1;
+		if (expected && expected < num_extents)
+			printf(", perfection would be %d extent%s\n", expected,
+				(expected>1) ? "s" : "");
+	} else
 		fputc('\n', stdout);
 	close(fd);
 	once = 0;


             reply	other threads:[~2012-06-26 13:59 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-26 13:59 Eric Sandeen [this message]
2012-07-28 21:43 ` filefrag: Fix segfault on virtual fs Theodore Ts'o

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=4FE9C02C.8040703@redhat.com \
    --to=sandeen@redhat.com \
    --cc=linux-ext4@vger.kernel.org \
    --cc=maxnet@onlinehome.de \
    /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.