grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] xfs bug fix


From: Pavel Roskin
Subject: Re: [PATCH] xfs bug fix
Date: Sun, 19 Jul 2009 00:06:02 -0400
User-agent: Internet Messaging Program (IMP) H3 (4.1.4)

Quoting Bean <address@hidden>:

The current xfs driver uses fixed inode size (256), this patch should fix it.

I'm afraid this patch doesn't take something into account. I tried creating an image by

mkfs.xfs -i log=9 /root/tmp/xfs.img -f

Then I copied stgit sources on top of it (it's just a directory with many files).

Then I ran

valgrind grub-fstest /root/tmp/xfs.img ls -al '/stgit'

It reported this problem:

==11029== Conditional jump or move depends on uninitialised value(s)
==11029==    at 0x403CAE: grub_disk_adjust_range (disk.c:373)
==11029==    by 0x403D6C: grub_disk_read (disk.c:392)
==11029==    by 0x41CB8C: grub_xfs_read_inode (xfs.c:222)
==11029==    by 0x41D217: call_hook.2830 (xfs.c:414)
==11029==    by 0x41D49C: grub_xfs_iterate_dir (xfs.c:469)
==11029==    by 0x41DA6B: grub_xfs_dir (xfs.c:655)
==11029==    by 0x408E72: grub_ls_list_files (ls.c:195)
==11029==    by 0x4093F8: grub_cmd_ls (ls.c:252)
==11029==    by 0x407CB8: grub_extcmd_dispatcher (extcmd.c:48)
==11029==    by 0x400EF1: execute_command (grub-fstest.c:74)
==11029==    by 0x4016AC: fstest (grub-fstest.c:300)
==11029==    by 0x401EBC: main (grub-fstest.c:550)

I tried to track it down, and it appears that line 465 in call_hook() is responsible:

ino = *(grub_uint64_t *) inopos;

First inopos points to valid memory, but at some point it starts pointing to invalid memory. I don't get this problem if I omit "-i log=9" from the mkfs.xfs arguments.

I got some interesting warnings from the RAID code too, which I suppressed by this patch:

--- a/disk/raid.c
+++ b/disk/raid.c
@@ -613,6 +613,7 @@ grub_raid_scan_device (int head_only)

       for (p = grub_raid_list; p; p = p->next)
         {
+         grub_memset(&array, 0, sizeof(array));
           if (! p->detect (disk, &array))
             {
               if (! insert_array (disk, &array, p->name))


Let's fix errors first and then we can add improvements.

--
Regards,
Pavel Roskin




reply via email to

[Prev in Thread] Current Thread [Next in Thread]