From: Kazuya Mio Date: Thu, 18 Nov 2010 21:51:25 +0000 (+0000) Subject: e4defrag: fix segfault when e4defrag races with unlink/truncate X-Git-Tag: v1.42-WIP-0702~56 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b07f014face2e2aa0abf8a3266fd716152cd0cd4;p=thirdparty%2Fe2fsprogs.git e4defrag: fix segfault when e4defrag races with unlink/truncate If a file gets deleted or truncated while e4defrag is trying to operate on it, it's possible for it seg fault. Addresses-Red-Hat-Bugzilla: #641926 Reported-by: Michal Piotrowski Signed-off-by: Kazuya Mio Signed-off-by: "Theodore Ts'o" --- diff --git a/misc/e4defrag.c b/misc/e4defrag.c index e795987c1..9008bc27f 100644 --- a/misc/e4defrag.c +++ b/misc/e4defrag.c @@ -942,7 +942,7 @@ static int get_file_extents(int fd, struct fiemap_extent_list **ext_list_head) fiemap_buf->fm_start = pos; memset(ext_buf, 0, ext_buf_size); ret = ioctl(fd, FS_IOC_FIEMAP, fiemap_buf); - if (ret < 0) + if (ret < 0 || fiemap_buf->fm_mapped_extents == 0) goto out; for (i = 0; i < fiemap_buf->fm_mapped_extents; i++) { ext_list = NULL;