Patchwork debugfs: initialize inode to 0 in list_dir_proc() if no inode nr

login
register
mail settings
Submitter Eric Sandeen
Date Sept. 17, 2011, 1:36 a.m.
Message ID <4E73F982.3020806@redhat.com>
Download mbox | patch
Permalink /patch/115071/
State Accepted
Headers show

Comments

Eric Sandeen - Sept. 17, 2011, 1:36 a.m.
If (!ino), the inode will be uninitialized when we print it
in the PARSE_OPT case.

So do the same as the LONG_OPT case, and memset it to 0 if
(!ino).

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
---


--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Theodore Ts'o - Sept. 25, 2011, 4:50 a.m.
On Fri, Sep 16, 2011 at 08:36:02PM -0500, Eric Sandeen wrote:
> If (!ino), the inode will be uninitialized when we print it
> in the PARSE_OPT case.
> 
> So do the same as the LONG_OPT case, and memset it to 0 if
> (!ino).
> 
> Signed-off-by: Eric Sandeen <sandeen@redhat.com>

Applied, thanks

					- Ted
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/debugfs/ls.c b/debugfs/ls.c
index e01fd20..f21e96e 100644
--- a/debugfs/ls.c
+++ b/debugfs/ls.c
@@ -73,15 +73,18 @@  static int list_dir_proc(ext2_ino_t dir EXT2FS_ATTR((unused)),
 		lbr = rbr = ' ';
 	}
 	if (ls->options & PARSE_OPT) {
-		if (ino && debugfs_read_inode(ino, &inode, name)) return 0;
+		if (ino) {
+			if (debugfs_read_inode(ino, &inode, name))
+				return 0;
+		} else
+			memset(&inode, 0, sizeof(struct ext2_inode));
 		fprintf(ls->f,"/%u/%06o/%d/%d/%s/",ino,inode.i_mode,inode.i_uid, inode.i_gid,name);
 		if (LINUX_S_ISDIR(inode.i_mode))
 			fprintf(ls->f, "/");
 		else
 			fprintf(ls->f, "%lld/", EXT2_I_SIZE(&inode));
 		fprintf(ls->f, "\n");
-	}
-	else if (ls->options & LONG_OPT) {
+	} else if (ls->options & LONG_OPT) {
 		if (ino) {
 			if (debugfs_read_inode(ino, &inode, name))
 				return 0;