FS#14363: revised inode patch, old one caused a division by zero
This commit is contained in:
parent
3e247a8b4d
commit
4665e9d64f
8
PKGBUILD
8
PKGBUILD
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
pkgname=grub
|
pkgname=grub
|
||||||
pkgver=0.97
|
pkgver=0.97
|
||||||
pkgrel=15
|
pkgrel=16
|
||||||
pkgdesc="A GNU multiboot boot loader"
|
pkgdesc="A GNU multiboot boot loader"
|
||||||
arch=('i686' 'x86_64')
|
arch=('i686' 'x86_64')
|
||||||
license=('GPL')
|
license=('GPL')
|
||||||
@ -31,15 +31,15 @@ md5sums=('cd3f3eb54446be6003156158d51f4884'
|
|||||||
'49f6d4bcced0bc8bbcff273f3254bbfa'
|
'49f6d4bcced0bc8bbcff273f3254bbfa'
|
||||||
'f41f702014a064918d7afc6fc23baa6e'
|
'f41f702014a064918d7afc6fc23baa6e'
|
||||||
'175dc6b9f4ab94e8056c3afb3e34460a'
|
'175dc6b9f4ab94e8056c3afb3e34460a'
|
||||||
'ada26cbc681907823cc4ff2a55b97866'
|
'69c648d2b8d0965df70a74014424f31c'
|
||||||
'39e0f9a05b7e04aceb24fc7bc4893e3d')
|
'39e0f9a05b7e04aceb24fc7bc4893e3d')
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
cd $srcdir/$pkgname-$pkgver
|
cd $srcdir/$pkgname-$pkgver
|
||||||
|
|
||||||
#set destination architecture here
|
#set destination architecture here
|
||||||
#DESTARCH="i686"
|
DESTARCH="i686"
|
||||||
DESTARCH="x86_64"
|
#DESTARCH="x86_64"
|
||||||
# optimizations break the build -- disable them
|
# optimizations break the build -- disable them
|
||||||
# adding special devices to grub, patches are from fedora
|
# adding special devices to grub, patches are from fedora
|
||||||
patch -Np1 -i ../special-devices.patch || return 1
|
patch -Np1 -i ../special-devices.patch || return 1
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
diff -Nrup a/stage2/fsys_ext2fs.c b/stage2/fsys_ext2fs.c
|
diff -Naur grub-0.97-800/stage2/fsys_ext2fs.c grub-0.97-810/stage2/fsys_ext2fs.c
|
||||||
--- a/stage2/fsys_ext2fs.c 2004-08-08 20:19:18.000000000 +0200
|
--- grub-0.97-800/stage2/fsys_ext2fs.c 2008-07-21 00:40:21.668879475 -0600
|
||||||
+++ b/stage2/fsys_ext2fs.c 2008-01-30 14:27:20.000000000 +0100
|
+++ grub-0.97-810/stage2/fsys_ext2fs.c 2008-07-21 01:01:11.063953773 -0600
|
||||||
@@ -79,7 +79,52 @@ struct ext2_super_block
|
@@ -79,7 +79,52 @@
|
||||||
__u32 s_rev_level; /* Revision level */
|
__u32 s_rev_level; /* Revision level */
|
||||||
__u16 s_def_resuid; /* Default uid for reserved blocks */
|
__u16 s_def_resuid; /* Default uid for reserved blocks */
|
||||||
__u16 s_def_resgid; /* Default gid for reserved blocks */
|
__u16 s_def_resgid; /* Default gid for reserved blocks */
|
||||||
@ -55,17 +55,22 @@ diff -Nrup a/stage2/fsys_ext2fs.c b/stage2/fsys_ext2fs.c
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct ext2_group_desc
|
struct ext2_group_desc
|
||||||
@@ -218,6 +263,9 @@ struct ext2_dir_entry
|
@@ -218,6 +263,14 @@
|
||||||
#define EXT2_ADDR_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof (__u32))
|
#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_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))
|
+#define EXT2_INODES_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s)/EXT2_INODE_SIZE(s))
|
||||||
+
|
+
|
||||||
/* linux/ext2_fs.h */
|
/* linux/ext2_fs.h */
|
||||||
#define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_log_block_size + 10)
|
#define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_log_block_size + 10)
|
||||||
/* kind of from ext2/super.c */
|
/* kind of from ext2/super.c */
|
||||||
@@ -553,7 +601,7 @@ ext2fs_dir (char *dirname)
|
@@ -553,7 +606,7 @@
|
||||||
gdp = GROUP_DESC;
|
gdp = GROUP_DESC;
|
||||||
ino_blk = gdp[desc].bg_inode_table +
|
ino_blk = gdp[desc].bg_inode_table +
|
||||||
(((current_ino - 1) % (SUPERBLOCK->s_inodes_per_group))
|
(((current_ino - 1) % (SUPERBLOCK->s_inodes_per_group))
|
||||||
@ -74,7 +79,7 @@ diff -Nrup a/stage2/fsys_ext2fs.c b/stage2/fsys_ext2fs.c
|
|||||||
#ifdef E2DEBUG
|
#ifdef E2DEBUG
|
||||||
printf ("inode table fsblock=%d\n", ino_blk);
|
printf ("inode table fsblock=%d\n", ino_blk);
|
||||||
#endif /* E2DEBUG */
|
#endif /* E2DEBUG */
|
||||||
@@ -565,13 +613,12 @@ ext2fs_dir (char *dirname)
|
@@ -565,13 +618,12 @@
|
||||||
/* reset indirect blocks! */
|
/* reset indirect blocks! */
|
||||||
mapblock2 = mapblock1 = -1;
|
mapblock2 = mapblock1 = -1;
|
||||||
|
|
||||||
@ -92,3 +97,4 @@ diff -Nrup a/stage2/fsys_ext2fs.c b/stage2/fsys_ext2fs.c
|
|||||||
printf ("inode=%x, raw_inode=%x\n", INODE, raw_inode);
|
printf ("inode=%x, raw_inode=%x\n", INODE, raw_inode);
|
||||||
printf ("offset into inode table block=%d\n", (int) raw_inode - (int) INODE);
|
printf ("offset into inode table block=%d\n", (int) raw_inode - (int) INODE);
|
||||||
for (i = (unsigned char *) INODE; i <= (unsigned char *) raw_inode;
|
for (i = (unsigned char *) INODE; i <= (unsigned char *) raw_inode;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user