From mboxrd@z Thu Jan 1 00:00:00 1970 From: Darius Augulis Date: Sun, 04 Sep 2011 15:21:29 +0300 Subject: [Buildroot] [PATCH 2/2] grub: fix ext2 segfaults In-Reply-To: <20110821165202.25078.23846.stgit@darius-desktop> References: <20110821165202.25078.23846.stgit@darius-desktop> Message-ID: <4E636D49.2060300@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net On 08/21/2011 07:52 PM, Darius Augulis wrote: > Fix grub issue when loading stage2 from ext2. > The symptom is periodically rebooting system. > This fix is borrowed from *somewhere* but it > does the job. Hi all, please review this patch and merge if it's ok. Thanks. Darius A. > > Signed-off-by: Darius Augulis > --- > boot/grub/grub.600-ext2-fix.patch | 32 ++++++++++++++++++++++++++++++++ > 1 files changed, 32 insertions(+), 0 deletions(-) > create mode 100644 boot/grub/grub.600-ext2-fix.patch > > diff --git a/boot/grub/grub.600-ext2-fix.patch b/boot/grub/grub.600-ext2-fix.patch > new file mode 100644 > index 0000000..8bbd199 > --- /dev/null > +++ b/boot/grub/grub.600-ext2-fix.patch > @@ -0,0 +1,32 @@ > +diff -uprN grub-0.97-orig//debian/patches/00list grub-0.97/debian/patches/00list > +--- grub-0.97-orig//debian/patches/00list 2011-08-21 17:08:01.651441450 +0300 > ++++ grub-0.97/debian/patches/00list 2011-08-21 17:13:11.712978964 +0300 > +@@ -24,6 +24,7 @@ crossreference_manpages.diff > + ext3_256byte_inode.diff > + use_grub-probe_in_grub-install.diff > + 128gib_disk_limit.diff > ++ext2_fix.diff > + > + # We aren't building amd64 binaries, see #244498 > + #fix_amd64_compile.diff > +diff -uprN grub-0.97-orig//debian/patches/ext2_fix.diff grub-0.97/debian/patches/ext2_fix.diff > +--- grub-0.97-orig//debian/patches/ext2_fix.diff 1970-01-01 03:00:00.000000000 +0300 > ++++ grub-0.97/debian/patches/ext2_fix.diff 2011-08-21 17:12:10.088673380 +0300 > +@@ -0,0 +1,17 @@ > ++diff -uprN grub-0.97-orig//stage2/fsys_ext2fs.c grub-0.97/stage2/fsys_ext2fs.c > ++--- grub-0.97-orig//stage2/fsys_ext2fs.c 2011-08-21 17:08:01.647441447 +0300 > +++++ grub-0.97/stage2/fsys_ext2fs.c 2011-08-21 17:11:05.312352171 +0300 > ++@@ -263,7 +263,12 @@ struct ext2_dir_entry > ++ #define EXT2_ADDR_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof (__u32)) > ++ #define EXT2_ADDR_PER_BLOCK_BITS(s) (log2(EXT2_ADDR_PER_BLOCK(s))) > ++ > ++-#define EXT2_INODE_SIZE(s) (SUPERBLOCK->s_inode_size) > +++#define EXT2_GOOD_OLD_REV 0 /* The good old (original) format */ > +++#define EXT2_DYNAMIC_REV 1 /* V2 format w/ dynamic inode sizes */ > +++#define EXT2_GOOD_OLD_INODE_SIZE 128 > +++#define EXT2_INODE_SIZE(s) (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \ > +++ EXT2_GOOD_OLD_INODE_SIZE : \ > +++ (s)->s_inode_size) > ++ #define EXT2_INODES_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s)/EXT2_INODE_SIZE(s)) > ++ > ++ /* linux/ext2_fs.h */