FS#14363: revised inode patch, old one caused a division by zero
This commit is contained in:
		
							
								
								
									
										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;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user