rpms/kernel/devel linux-2.6-ext3-16tb-overflow-fixes.patch, NONE, 1.1.2.1 linux-2.6-x86-k8-powernow-clock-disable-fix.patch, NONE, 1.1.2.1 linux-2.6.18.tar.bz2.sign, NONE, 1.1.2.1 .cvsignore, 1.528, 1.528.2.1 kernel-2.6.spec, 1.2670.2.3, 1.2670.2.4 linux-2.6-lockdep-fixes.patch, 1.25, 1.25.8.1 linux-2.6-net-netlabel-cipso.patch, 1.1, 1.1.16.1 linux-2.6-x86-relocatable.patch, 1.6, 1.6.4.1 linux-2.6-xen.patch, 1.67, 1.67.2.1 sources, 1.491, 1.491.2.1 upstream, 1.425, 1.425.2.1

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Wed Sep 20 17:45:38 UTC 2006


Author: jmoyer

Update of /cvs/dist/rpms/kernel/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv27707

Modified Files:
      Tag: private-jmoyer-dio-testing-branch
	.cvsignore kernel-2.6.spec linux-2.6-lockdep-fixes.patch 
	linux-2.6-net-netlabel-cipso.patch 
	linux-2.6-x86-relocatable.patch linux-2.6-xen.patch sources 
	upstream 
Added Files:
      Tag: private-jmoyer-dio-testing-branch
	linux-2.6-ext3-16tb-overflow-fixes.patch 
	linux-2.6-x86-k8-powernow-clock-disable-fix.patch 
	linux-2.6.18.tar.bz2.sign 
Log Message:
updated to latest from head



linux-2.6-ext3-16tb-overflow-fixes.patch:
 fs/ext3/super.c                          |   34 +++++++++++++++++--------------
 linux-2.6.17-1.2654.el5/fs/ext3/balloc.c |   11 +++++-----
 linux-2.6.17-1.2654.el5/fs/ext3/ialloc.c |    6 ++---
 linux-2.6.17-1.2654.el5/fs/ext3/inode.c  |    2 -
 linux-2.6.17-1.2654.el5/fs/ext3/namei.c  |    4 +--
 linux-2.6.17-1.2654.el5/fs/ext3/resize.c |   17 +++++++++++++++
 linux-2.6.17-1.2654.el5/fs/ext3/super.c  |   25 +++++++++++-----------
 linux-2.6.17-1.2654.el5/fs/ext3/xattr.c  |   16 +++++++-------
 8 files changed, 69 insertions(+), 46 deletions(-)

--- NEW FILE linux-2.6-ext3-16tb-overflow-fixes.patch ---
Date: Tue, 19 Sep 2006 15:33:04 -0500
From: Eric Sandeen <esandeen at redhat.com>
Subject: [RHEL5 Patch 3/3] (resend) Fix ext3 32-bit inodes

This one is in the -mm tree as ext3-inode-numbers-are-unsigned-long.patch,
resent to accomodate sct's request for uints instead; just pinged akpm
to pick up the ulonglong->uint change.

This is primarily format string fixes, with changes to ialloc.c where large
inode counts could overflow, and also pass around journal_inum as an
unsigned long, just to be pedantic about it....

Signed-off-by: Eric Sandeen <esandeen at redhat.com>
Cc: Mingming Cao <cmm at us.ibm.com>
Signed-off-by: Andrew Morton <akpm at osdl.org>

Index: linux-2.6.17-1.2654.el5/fs/ext3/ialloc.c
===================================================================
--- linux-2.6.17-1.2654.el5.orig/fs/ext3/ialloc.c
+++ linux-2.6.17-1.2654.el5/fs/ext3/ialloc.c
@@ -202,7 +202,7 @@ error_return:
 static int find_group_dir(struct super_block *sb, struct inode *parent)
 {
 	int ngroups = EXT3_SB(sb)->s_groups_count;
-	int freei, avefreei;
+	unsigned int freei, avefreei;
 	struct ext3_group_desc *desc, *best_desc = NULL;
 	struct buffer_head *bh;
 	int group, best_group = -1;
@@ -261,10 +261,10 @@ static int find_group_orlov(struct super
 	struct ext3_super_block *es = sbi->s_es;
 	int ngroups = sbi->s_groups_count;
 	int inodes_per_group = EXT3_INODES_PER_GROUP(sb);
-	int freei, avefreei;
+	unsigned int freei, avefreei;
 	ext3_fsblk_t freeb, avefreeb;
 	ext3_fsblk_t blocks_per_dir;
-	int ndirs;
+	unsigned int ndirs;
 	int max_debt, max_dirs, min_inodes;
 	ext3_grpblk_t min_blocks;
 	int group = -1, i;
Index: linux-2.6.17-1.2654.el5/fs/ext3/inode.c
===================================================================
--- linux-2.6.17-1.2654.el5.orig/fs/ext3/inode.c
+++ linux-2.6.17-1.2654.el5/fs/ext3/inode.c
@@ -2115,7 +2115,7 @@ static void ext3_free_branches(handle_t 
 			 */
 			if (!bh) {
 				ext3_error(inode->i_sb, "ext3_free_branches",
-					   "Read failure, inode=%ld, block="E3FSBLK,
+					   "Read failure, inode=%lu, block="E3FSBLK,
 					   inode->i_ino, nr);
 				continue;
 			}
Index: linux-2.6.17-1.2654.el5/fs/ext3/namei.c
===================================================================
--- linux-2.6.17-1.2654.el5.orig/fs/ext3/namei.c
+++ linux-2.6.17-1.2654.el5/fs/ext3/namei.c
@@ -1919,8 +1919,8 @@ int ext3_orphan_add(handle_t *handle, st
 	if (!err)
 		list_add(&EXT3_I(inode)->i_orphan, &EXT3_SB(sb)->s_orphan);
 
-	jbd_debug(4, "superblock will point to %ld\n", inode->i_ino);
-	jbd_debug(4, "orphan inode %ld will point to %d\n",
+	jbd_debug(4, "superblock will point to %lu\n", inode->i_ino);
+	jbd_debug(4, "orphan inode %lu will point to %d\n",
 			inode->i_ino, NEXT_ORPHAN(inode));
 out_unlock:
 	unlock_super(sb);
Index: linux-2.6.17-1.2654.el5/fs/ext3/super.c
===================================================================
--- linux-2.6.17-1.2654.el5.orig/fs/ext3/super.c
+++ linux-2.6.17-1.2654.el5/fs/ext3/super.c
@@ -45,7 +45,7 @@
 static int ext3_load_journal(struct super_block *, struct ext3_super_block *,
 			     unsigned long journal_devnum);
 static int ext3_create_journal(struct super_block *, struct ext3_super_block *,
-			       int);
+			       unsigned int);
 static void ext3_commit_super (struct super_block * sb,
 			       struct ext3_super_block * es,
 			       int sync);
@@ -376,7 +376,7 @@ static void dump_orphan_list(struct supe
 	list_for_each(l, &sbi->s_orphan) {
 		struct inode *inode = orphan_list_entry(l);
 		printk(KERN_ERR "  "
-		       "inode %s:%ld at %p: mode %o, nlink %d, next %d\n",
+		       "inode %s:%lu at %p: mode %o, nlink %d, next %d\n",
 		       inode->i_sb->s_id, inode->i_ino, inode,
 		       inode->i_mode, inode->i_nlink, 
 		       NEXT_ORPHAN(inode));
@@ -711,7 +711,7 @@ static ext3_fsblk_t get_sb_block(void **
 }
 
 static int parse_options (char *options, struct super_block *sb,
-			  unsigned long *inum, unsigned long *journal_devnum,
+			  unsigned int *inum, unsigned long *journal_devnum,
 			  ext3_fsblk_t *n_blocks_count, int is_remount)
 {
 	struct ext3_sb_info *sbi = EXT3_SB(sb);
@@ -1264,17 +1264,17 @@ static void ext3_orphan_cleanup (struct 
 		DQUOT_INIT(inode);
 		if (inode->i_nlink) {
 			printk(KERN_DEBUG
-				"%s: truncating inode %ld to %Ld bytes\n",
+				"%s: truncating inode %lu to %Ld bytes\n",
 				__FUNCTION__, inode->i_ino, inode->i_size);
-			jbd_debug(2, "truncating inode %ld to %Ld bytes\n",
+			jbd_debug(2, "truncating inode %lu to %Ld bytes\n",
 				  inode->i_ino, inode->i_size);
 			ext3_truncate(inode);
 			nr_truncates++;
 		} else {
 			printk(KERN_DEBUG
-				"%s: deleting unreferenced inode %ld\n",
+				"%s: deleting unreferenced inode %lu\n",
 				__FUNCTION__, inode->i_ino);
-			jbd_debug(2, "deleting unreferenced inode %ld\n",
+			jbd_debug(2, "deleting unreferenced inode %lu\n",
 				  inode->i_ino);
 			nr_orphans++;
 		}
@@ -1353,7 +1353,7 @@ static int ext3_fill_super (struct super
 	ext3_fsblk_t sb_block = get_sb_block(&data);
 	ext3_fsblk_t logic_sb_block;
 	unsigned long offset = 0;
-	unsigned long journal_inum = 0;
+	unsigned int journal_inum = 0;
 	unsigned long journal_devnum = 0;
 	unsigned long def_mount_opts;
 	struct inode *root;
@@ -1802,7 +1802,8 @@ static void ext3_init_journal_params(str
 	spin_unlock(&journal->j_state_lock);
 }
 
-static journal_t *ext3_get_journal(struct super_block *sb, int journal_inum)
+static journal_t *ext3_get_journal(struct super_block *sb,
+				   unsigned int journal_inum)
 {
 	struct inode *journal_inode;
 	journal_t *journal;
@@ -1937,7 +1938,7 @@ static int ext3_load_journal(struct supe
 			     unsigned long journal_devnum)
 {
 	journal_t *journal;
-	int journal_inum = le32_to_cpu(es->s_journal_inum);
+	unsigned int journal_inum = le32_to_cpu(es->s_journal_inum);
 	dev_t journal_dev;
 	int err = 0;
 	int really_read_only;
@@ -2023,7 +2024,7 @@ static int ext3_load_journal(struct supe
 
 static int ext3_create_journal(struct super_block * sb,
 			       struct ext3_super_block * es,
-			       int journal_inum)
+			       unsigned int journal_inum)
 {
 	journal_t *journal;
 
@@ -2036,7 +2037,7 @@ static int ext3_create_journal(struct su
 	if (!(journal = ext3_get_journal(sb, journal_inum)))
 		return -EINVAL;
 
-	printk(KERN_INFO "EXT3-fs: creating new journal on inode %d\n",
+	printk(KERN_INFO "EXT3-fs: creating new journal on inode %u\n",
 	       journal_inum);
 
 	if (journal_create(journal)) {
Index: linux-2.6.17-1.2654.el5/fs/ext3/xattr.c
===================================================================
--- linux-2.6.17-1.2654.el5.orig/fs/ext3/xattr.c
+++ linux-2.6.17-1.2654.el5/fs/ext3/xattr.c
@@ -75,7 +75,7 @@
 
 #ifdef EXT3_XATTR_DEBUG
 # define ea_idebug(inode, f...) do { \
-		printk(KERN_DEBUG "inode %s:%ld: ", \
+		printk(KERN_DEBUG "inode %s:%lu: ", \
 			inode->i_sb->s_id, inode->i_ino); \
 		printk(f); \
 		printk("\n"); \
@@ -233,7 +233,7 @@ ext3_xattr_block_get(struct inode *inode
 		atomic_read(&(bh->b_count)), le32_to_cpu(BHDR(bh)->h_refcount));
 	if (ext3_xattr_check_block(bh)) {
 bad_block:	ext3_error(inode->i_sb, __FUNCTION__,
-			   "inode %ld: bad block "E3FSBLK, inode->i_ino,
+			   "inode %lu: bad block "E3FSBLK, inode->i_ino,
 			   EXT3_I(inode)->i_file_acl);
 		error = -EIO;
 		goto cleanup;
@@ -375,7 +375,7 @@ ext3_xattr_block_list(struct inode *inod
 		atomic_read(&(bh->b_count)), le32_to_cpu(BHDR(bh)->h_refcount));
 	if (ext3_xattr_check_block(bh)) {
 		ext3_error(inode->i_sb, __FUNCTION__,
-			   "inode %ld: bad block "E3FSBLK, inode->i_ino,
+			   "inode %lu: bad block "E3FSBLK, inode->i_ino,
 			   EXT3_I(inode)->i_file_acl);
 		error = -EIO;
 		goto cleanup;
@@ -647,7 +647,7 @@ ext3_xattr_block_find(struct inode *inod
 			le32_to_cpu(BHDR(bs->bh)->h_refcount));
 		if (ext3_xattr_check_block(bs->bh)) {
 			ext3_error(sb, __FUNCTION__,
-				"inode %ld: bad block "E3FSBLK, inode->i_ino,
+				"inode %lu: bad block "E3FSBLK, inode->i_ino,
 				EXT3_I(inode)->i_file_acl);
 			error = -EIO;
 			goto cleanup;
@@ -848,7 +848,7 @@ cleanup_dquot:
 
 bad_block:
 	ext3_error(inode->i_sb, __FUNCTION__,
-		   "inode %ld: bad block "E3FSBLK, inode->i_ino,
+		   "inode %lu: bad block "E3FSBLK, inode->i_ino,
 		   EXT3_I(inode)->i_file_acl);
 	goto cleanup;
 
@@ -1077,14 +1077,14 @@ ext3_xattr_delete_inode(handle_t *handle
 	bh = sb_bread(inode->i_sb, EXT3_I(inode)->i_file_acl);
 	if (!bh) {
 		ext3_error(inode->i_sb, __FUNCTION__,
-			"inode %ld: block "E3FSBLK" read error", inode->i_ino,
+			"inode %lu: block "E3FSBLK" read error", inode->i_ino,
 			EXT3_I(inode)->i_file_acl);
 		goto cleanup;
 	}
 	if (BHDR(bh)->h_magic != cpu_to_le32(EXT3_XATTR_MAGIC) ||
 	    BHDR(bh)->h_blocks != cpu_to_le32(1)) {
 		ext3_error(inode->i_sb, __FUNCTION__,
-			"inode %ld: bad block "E3FSBLK, inode->i_ino,
+			"inode %lu: bad block "E3FSBLK, inode->i_ino,
 			EXT3_I(inode)->i_file_acl);
 		goto cleanup;
 	}
@@ -1211,7 +1211,7 @@ again:
 		bh = sb_bread(inode->i_sb, ce->e_block);
 		if (!bh) {
 			ext3_error(inode->i_sb, __FUNCTION__,
-				"inode %ld: block %lu read error",
+				"inode %lu: block %lu read error",
 				inode->i_ino, (unsigned long) ce->e_block);
 		} else if (le32_to_cpu(BHDR(bh)->h_refcount) >=
 				EXT3_XATTR_REFCOUNT_MAX) {

Date: Tue, 19 Sep 2006 15:32:02 -0500
From: Eric Sandeen <esandeen at redhat.com>
Subject: [RHEL5 Patch 1/3] (resend) Fix ext3 overflows at 16T

This one is in -mm as fix-ext3-mounts-at-16t.patch and 
fix-ext3-mounts-at-16t-fix.patch  

this gets things mounting for a 16T ext3 filesystem.  (patched up 
e2fsprogs will be needed too, working on that)

jarod wilson has been helping with testing.

This patch fixes these issues in the kernel:

o sbi->s_groups_count overflows in ext3_fill_super()

	sbi->s_groups_count = (le32_to_cpu(es->s_blocks_count) -
			       le32_to_cpu(es->s_first_data_block) +
			       EXT3_BLOCKS_PER_GROUP(sb) - 1) /
			      EXT3_BLOCKS_PER_GROUP(sb);

  at 16T, s_blocks_count is already maxed out; adding
  EXT3_BLOCKS_PER_GROUP(sb) overflows it and groups_count comes out to 0. 
  Not really what we want, and causes a failed mount.

  Changing it this way works & avoids the overflow:

  (A + B - 1)/B changed to: ((A - 1)/B) + 1

o ext3_check_descriptors() overflows range checks

  ext3_check_descriptors() iterates over all block groups making sure
  that various bits are within the right block ranges...  on the last pass
  through, it is checking the error case

   [item] >= block + EXT3_BLOCKS_PER_GROUP(sb)

  where "block" is the first block in the last block group.  The last
  block in this group (and the last one that will fit in 32 bits) is block
  + EXT3_BLOCKS_PER_GROUP(sb)- 1.  block + EXT3_BLOCKS_PER_GROUP(sb) wraps
  back around to 0.

  so, make things clearer with "first_block" and "last_block" where those
  are first and last, inclusive, and use <, > rather than <, >=.

  Finally, the last block group may be smaller than the rest, so account
  for this on the last pass through: last_block = sb->s_blocks_count - 1;

Signed-off-by: Eric Sandeen <esandeen at redhat.com>
Cc: Mingming Cao <cmm at us.ibm.com>
Signed-off-by: Andrew Morton <akpm at osdl.org>

Index: linux-2.6.17-1.2654.el5/fs/ext3/super.c
===================================================================
--- linux-2.6.17-1.2654.el5.orig/fs/ext3/super.c
+++ linux-2.6.17-1.2654.el5/fs/ext3/super.c
@@ -1132,7 +1132,8 @@ static int ext3_setup_super(struct super
 static int ext3_check_descriptors (struct super_block * sb)
 {
 	struct ext3_sb_info *sbi = EXT3_SB(sb);
-	ext3_fsblk_t block = le32_to_cpu(sbi->s_es->s_first_data_block);
+	ext3_fsblk_t first_block = le32_to_cpu(sbi->s_es->s_first_data_block);
+	ext3_fsblk_t last_block;
 	struct ext3_group_desc * gdp = NULL;
 	int desc_block = 0;
 	int i;
@@ -1141,12 +1142,17 @@ static int ext3_check_descriptors (struc
 
 	for (i = 0; i < sbi->s_groups_count; i++)
 	{
+		if (i == sbi->s_groups_count - 1)
+			last_block = le32_to_cpu(sbi->s_es->s_blocks_count) - 1;
+		else
+			last_block = first_block +
+				(EXT3_BLOCKS_PER_GROUP(sb) - 1);
+
 		if ((i % EXT3_DESC_PER_BLOCK(sb)) == 0)
 			gdp = (struct ext3_group_desc *)
 					sbi->s_group_desc[desc_block++]->b_data;
-		if (le32_to_cpu(gdp->bg_block_bitmap) < block ||
-		    le32_to_cpu(gdp->bg_block_bitmap) >=
-				block + EXT3_BLOCKS_PER_GROUP(sb))
+		if (le32_to_cpu(gdp->bg_block_bitmap) < first_block ||
+		    le32_to_cpu(gdp->bg_block_bitmap) > last_block)
 		{
 			ext3_error (sb, "ext3_check_descriptors",
 				    "Block bitmap for group %d"
@@ -1155,9 +1161,8 @@ static int ext3_check_descriptors (struc
 					le32_to_cpu(gdp->bg_block_bitmap));
 			return 0;
 		}
-		if (le32_to_cpu(gdp->bg_inode_bitmap) < block ||
-		    le32_to_cpu(gdp->bg_inode_bitmap) >=
-				block + EXT3_BLOCKS_PER_GROUP(sb))
+		if (le32_to_cpu(gdp->bg_inode_bitmap) < first_block ||
+		    le32_to_cpu(gdp->bg_inode_bitmap) > last_block)
 		{
 			ext3_error (sb, "ext3_check_descriptors",
 				    "Inode bitmap for group %d"
@@ -1166,9 +1171,9 @@ static int ext3_check_descriptors (struc
 					le32_to_cpu(gdp->bg_inode_bitmap));
 			return 0;
 		}
-		if (le32_to_cpu(gdp->bg_inode_table) < block ||
-		    le32_to_cpu(gdp->bg_inode_table) + sbi->s_itb_per_group >=
-		    block + EXT3_BLOCKS_PER_GROUP(sb))
+		if (le32_to_cpu(gdp->bg_inode_table) < first_block ||
+		    le32_to_cpu(gdp->bg_inode_table) + sbi->s_itb_per_group >
+		    last_block)
 		{
 			ext3_error (sb, "ext3_check_descriptors",
 				    "Inode table for group %d"
@@ -1177,7 +1182,7 @@ static int ext3_check_descriptors (struc
 					le32_to_cpu(gdp->bg_inode_table));
 			return 0;
 		}
-		block += EXT3_BLOCKS_PER_GROUP(sb);
+		first_block += EXT3_BLOCKS_PER_GROUP(sb);
 		gdp++;
 	}
 
@@ -1580,10 +1585,9 @@ static int ext3_fill_super (struct super
 
 	if (EXT3_BLOCKS_PER_GROUP(sb) == 0)
 		goto cantfind_ext3;
-	sbi->s_groups_count = (le32_to_cpu(es->s_blocks_count) -
-			       le32_to_cpu(es->s_first_data_block) +
-			       EXT3_BLOCKS_PER_GROUP(sb) - 1) /
-			      EXT3_BLOCKS_PER_GROUP(sb);
+	sbi->s_groups_count = ((le32_to_cpu(es->s_blocks_count) -
+			       le32_to_cpu(es->s_first_data_block) - 1)
+				       / EXT3_BLOCKS_PER_GROUP(sb)) + 1;
 	db_count = (sbi->s_groups_count + EXT3_DESC_PER_BLOCK(sb) - 1) /
 		   EXT3_DESC_PER_BLOCK(sb);
 	sbi->s_group_desc = kmalloc(db_count * sizeof (struct buffer_head *),

Date: Tue, 19 Sep 2006 15:32:42 -0500
From: Eric Sandeen <esandeen at redhat.com>
Subject: [RHEL5 Patch 2/3] (resend) Fix more ext3 overflows at 16T

This is in akpm's tree as
more-ext3-16t-overflow-fixes.patch and more-ext3-16t-overflow-fixes-fix.patch

Some of the changes in balloc.c are just cosmetic -
if they overflow they'll then underflow and things are fine.

5th hunk actually fixes an overflow problem.

Also check for potential overflows in inode & block counts when resizing.

Signed-off-by: Eric Sandeen <esandeen at redhat.com>
Cc: Mingming Cao <cmm at us.ibm.com>
Signed-off-by: Andrew Morton <akpm at osdl.org>

Index: linux-2.6.17-1.2654.el5/fs/ext3/balloc.c
===================================================================
--- linux-2.6.17-1.2654.el5.orig/fs/ext3/balloc.c
+++ linux-2.6.17-1.2654.el5/fs/ext3/balloc.c
@@ -168,7 +168,7 @@ goal_in_my_reservation(struct ext3_reser
 	ext3_fsblk_t group_first_block, group_last_block;
 
 	group_first_block = ext3_group_first_block_no(sb, group);
-	group_last_block = group_first_block + EXT3_BLOCKS_PER_GROUP(sb) - 1;
+	group_last_block = group_first_block + (EXT3_BLOCKS_PER_GROUP(sb) - 1);
 
 	if ((rsv->_rsv_start > group_last_block) ||
 	    (rsv->_rsv_end < group_first_block))
@@ -897,7 +897,7 @@ static int alloc_new_reservation(struct 
 	spinlock_t *rsv_lock = &EXT3_SB(sb)->s_rsv_window_lock;
 
 	group_first_block = ext3_group_first_block_no(sb, group);
-	group_end_block = group_first_block + EXT3_BLOCKS_PER_GROUP(sb) - 1;
+	group_end_block = group_first_block + (EXT3_BLOCKS_PER_GROUP(sb) - 1);
 
 	if (grp_goal < 0)
 		start_block = group_first_block;
@@ -1063,7 +1063,7 @@ ext3_try_to_allocate_with_rsv(struct sup
 			struct ext3_reserve_window_node * my_rsv,
 			unsigned long *count, int *errp)
 {
-	ext3_fsblk_t group_first_block;
+	ext3_fsblk_t group_first_block, group_last_block;
 	ext3_grpblk_t ret = 0;
 	int fatal;
 	unsigned long num = *count;
@@ -1100,6 +1100,7 @@ ext3_try_to_allocate_with_rsv(struct sup
 	 * first block is the block number of the first block in this group
 	 */
 	group_first_block = ext3_group_first_block_no(sb, group);
+	group_last_block = group_first_block + (EXT3_BLOCKS_PER_GROUP(sb) - 1);
 
 	/*
 	 * Basically we will allocate a new block from inode's reservation
@@ -1132,8 +1133,8 @@ ext3_try_to_allocate_with_rsv(struct sup
 			try_to_extend_reservation(my_rsv, sb,
 					*count-my_rsv->rsv_end + grp_goal - 1);
 
-		if ((my_rsv->rsv_start >= group_first_block + EXT3_BLOCKS_PER_GROUP(sb))
-		    || (my_rsv->rsv_end < group_first_block))
+		if ((my_rsv->rsv_start > group_last_block) ||
+				(my_rsv->rsv_end < group_first_block))
 			BUG();
 		ret = ext3_try_to_allocate(sb, handle, group, bitmap_bh, grp_goal,
 					   &num, &my_rsv->rsv_window);
Index: linux-2.6.17-1.2654.el5/fs/ext3/resize.c
===================================================================
--- linux-2.6.17-1.2654.el5.orig/fs/ext3/resize.c
+++ linux-2.6.17-1.2654.el5/fs/ext3/resize.c
@@ -730,6 +730,18 @@ int ext3_group_add(struct super_block *s
 		return -EPERM;
 	}
 
+	if (le32_to_cpu(es->s_blocks_count) + input->blocks_count <
+	    le32_to_cpu(es->s_blocks_count)) {
+		ext3_warning(sb, __FUNCTION__, "blocks_count overflow\n");
+		return -EINVAL;
+	}
+
+	if (le32_to_cpu(es->s_inodes_count) + EXT3_INODES_PER_GROUP(sb) <
+	    le32_to_cpu(es->s_inodes_count)) {
+		ext3_warning(sb, __FUNCTION__, "inodes_count overflow\n");
+		return -EINVAL;
+	}
+
 	if (reserved_gdb || gdb_off == 0) {
 		if (!EXT3_HAS_COMPAT_FEATURE(sb,
 					     EXT3_FEATURE_COMPAT_RESIZE_INODE)){
@@ -958,6 +970,11 @@ int ext3_group_extend(struct super_block
 
 	add = EXT3_BLOCKS_PER_GROUP(sb) - last;
 
+	if (o_blocks_count + add < o_blocks_count) {
+		ext3_warning(sb, __FUNCTION__, "blocks_count overflow");
+		return -EINVAL;
+	}
+
 	if (o_blocks_count + add > n_blocks_count)
 		add = n_blocks_count - o_blocks_count;
 


linux-2.6-x86-k8-powernow-clock-disable-fix.patch:
 powernow-k8.c |    7 +++++--
 powernow-k8.h |    2 +-
 2 files changed, 6 insertions(+), 3 deletions(-)

--- NEW FILE linux-2.6-x86-k8-powernow-clock-disable-fix.patch ---
Date: Tue, 29 Aug 2006 15:23:14 -0400
From: Prarit Bhargava <prarit at redhat.com>
Subject: [RHEL5 PATCH]: BZ 204354 C1 clock disable process fixes

The current powernow-k8 driver sets the wrong bitmask when trying to disable
C1 clock ramping, and also attempts to do so on non-existant PCI devices
(because of a cpu vs. core number code error).

This patch fixes those issues in RHEL5.  Successfully tested by me on an
xw9400 system.

Resolves BZ 204354.


--- linux-2.6.17.i386/arch/i386/kernel/cpu/cpufreq/powernow-k8.c.orig	2006-08-28 17:19:37.000000000 -0400
+++ linux-2.6.17.i386/arch/i386/kernel/cpu/cpufreq/powernow-k8.c	2006-08-28 17:19:51.000000000 -0400
@@ -1321,10 +1322,13 @@ static int __cpuinit powernowk8_cpu_init
 
 	if (tscsync && (cpu_family == CPU_OPTERON)) {
 		u32 reg;
+		struct cpuinfo_x86 *c = &cpu_data[pol->cpu];
 		sync_tables(pol->cpu);
-		reg = read_pci_config(0, NB_PCI_ADDR + pol->cpu, NB_PM_DEV, NB_C1_REG);
+		reg = read_pci_config(0, NB_PCI_ADDR + c->cpu_core_id,
+				      NB_PM_DEV, NB_C1_REG);
 		/* turn off C1 clock ramping */
-		write_pci_config(0, NB_PCI_ADDR + pol->cpu, NB_PM_DEV, NB_C1_REG, reg & NB_C1_MASK);
+		write_pci_config(0, NB_PCI_ADDR + c->cpu_core_id,
+				 NB_PM_DEV, NB_C1_REG, reg & NB_C1_MASK);
 	}
 	return 0;
 
--- linux-2.6.17.i386/arch/i386/kernel/cpu/cpufreq/powernow-k8.h.orig	2006-08-28 17:18:37.000000000 -0400
+++ linux-2.6.17.i386/arch/i386/kernel/cpu/cpufreq/powernow-k8.h	2006-08-28 17:19:51.000000000 -0400
@@ -177,7 +177,7 @@ struct powernow_k8_data {
 #define NB_PCI_ADDR	0x18
 #define NB_PM_DEV	3
 #define NB_C1_REG	0x84
-#define NB_C1_MASK	0xfc
+#define NB_C1_MASK	0xfcffffff
 
 /*
  * Version 1.4 of the PSB table. This table is constructed by BIOS and is



--- NEW FILE linux-2.6.18.tar.bz2.sign ---
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
Comment: See http://www.kernel.org/signature.html for info

iD8DBQBFELzpyGugalF9Dw4RAnakAJ98mpXnZ8LNY3GDqAg3Nnp/+jyIgACfcaXr
fLoc6FV2SbBwpMfYHa85hXY=
=52vM
-----END PGP SIGNATURE-----


Index: .cvsignore
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/.cvsignore,v
retrieving revision 1.528
retrieving revision 1.528.2.1
diff -u -r1.528 -r1.528.2.1
--- .cvsignore	18 Sep 2006 14:43:52 -0000	1.528
+++ .cvsignore	20 Sep 2006 17:45:34 -0000	1.528.2.1
@@ -1,8 +1,6 @@
 clog
 kernel-2.6.*.config
 temp-*
-kernel-2.6.17
-linux-2.6.17.tar.bz2
-patch-2.6.18-rc7.bz2
-patch-2.6.18-rc7-git2.bz2
+kernel-2.6.18
 xen-11470.tar.bz2
+linux-2.6.18.tar.bz2


Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/kernel-2.6.spec,v
retrieving revision 1.2670.2.3
retrieving revision 1.2670.2.4
diff -u -r1.2670.2.3 -r1.2670.2.4
--- kernel-2.6.spec	20 Sep 2006 15:16:51 -0000	1.2670.2.3
+++ kernel-2.6.spec	20 Sep 2006 17:45:34 -0000	1.2670.2.4
@@ -4,6 +4,7 @@
 # These are the kernels that are built IF the architecture allows it.
 
 %define buildup 1
+# Only used on archs without run-time support (ie ppc, sparc64)
 %define buildsmp 0
 %define buildpae 0
 # Whether to apply the Xen patches, leave this enabled.
@@ -28,10 +29,10 @@
 # that the kernel isn't the stock distribution kernel, for example by
 # adding some text to the end of the version number.
 #
-%define sublevel 17
+%define sublevel 18
 %define kversion 2.6.%{sublevel}
 %define rpmversion 2.6.%{sublevel}
-%define release %(R="$Revision$"; RR="${R##: }"; echo ${RR%%?})%{?dist}.dio.2
+%define release %(R="$Revision$"; RR="${R##: }"; echo ${RR%%?})%{?dist}.dio.3
 %define signmodules 0
 %define xen_hv_cset 11470
 %define make_target bzImage
@@ -298,8 +299,8 @@
 #
 # Patches 0 through 100 are meant for core subsystem upgrades
 #
-Patch1: patch-2.6.18-rc7.bz2
-Patch2: patch-2.6.18-rc7-git2.bz2
+#Patch1: patch-2.6.18-rc7.bz2
+#Patch2: patch-2.6.18-rc7-git4.bz2
 Patch3: git-geode.patch
 Patch4: git-agpgart.patch
 
@@ -321,6 +322,7 @@
 Patch208: linux-2.6-x86_64-add-ppoll-pselect.patch
 Patch209: linux-2.6-x86_64-opterons-synchronize-p-state-using-TSC.patch
 Patch210: linux-2.6-x86-relocatable.patch
+Patch211: linux-2.6-x86-k8-powernow-clock-disable-fix.patch
 
 # 300 - 399   ppc(64)
 Patch300: linux-2.6-ppc-dac960-ipr-clash.patch
@@ -418,7 +420,6 @@
 # core networking changes.
 Patch1300: linux-2.6-net-ipsec-labelling.patch
 Patch1301: linux-2.6-net-netlabel-cipso.patch
-Patch1302: linux-2.6-secmark-export.patch
 
 # Filesystem stuff.
 # Squashfs
@@ -449,6 +450,9 @@
 # Fix NFS/Selinux oops.
 Patch1441: linux-2.6-nfs-selinux-oops.patch
 
+# EXT3 fixes
+Patch1450: linux-2.6-ext3-16tb-overflow-fixes.patch
+
 # Device mapper / MD layer
 Patch1500: linux-2.6-dm-mirroring.patch
 
@@ -781,8 +785,8 @@
 cd linux-%{kversion}.%{_target_cpu}
 
 # Update to latest upstream.
-%patch1 -p1
-%patch2 -p1
+#%patch1 -p1
+#%patch2 -p1
 %patch3 -p1
 %patch4 -p1
 
@@ -817,6 +821,8 @@
 %patch208 -p1
 # fix opteron timer scaling
 %patch209 -p1
+# fix disabling C1 clock on k8 powernow
+#%patch211 -p1
 
 #
 # PowerPC
@@ -979,7 +985,6 @@
 # core networking changes.
 %patch1300 -p1
 %patch1301 -p1
-%patch1302 -p1
 
 # Filesystem patches.
 # Squashfs
@@ -1010,6 +1015,10 @@
 # Fix NFS/Selinux oops. (#204848)
 %patch1441 -p1
 
+# EXT3
+# overflows at 16tb fix
+%patch1450 -p1
+
 # Device mapper / MD layer
 # dm mirroring
 %patch1500 -p1
@@ -1902,11 +1911,39 @@
 
 %changelog
 * Wed Sep 20 2006 Jeff Moyer <jmoyer at redhat.com>
-- The relocatable kernel patch was failed to apply in brew;  disabled.
+- Updated to latest from head.  Hopefully this clears up my mysterious build
+  failures.
+
+* Wed Sep 20 2006 Jeff Moyer <jmoyer at redhat.com>
+- The relocatable kernel patch failed to apply in brew;  disabled.
+
+* Wed Sep 20 2006 Dave Jones <davej at redhat.com>
+- 2.6.18
+
+* Tue Sep 19 2006 Juan Quintela <quintela at redhat.com>
+- xen update to 2.6.18-rc7-git4.
+  * linux-2.6 changeset: 34288:3fa5ab23fee7
+  * linux-2.6-xen-fedora changeset: 36175:275f8c0b6342
+  * xen-unstable changeset: 11486:d8bceca5f07d
+
+* Tue Sep 19 2006 Dave Jones <davej at redhat.com>
+- 2.6.18rc7-git4
+- Further lockdep fixes. (#207064)
+
+* Tue Sep 19 2006 Don Zickus <dzickus at redhat.com>
+- EXT3 overflows at 16TB (#206721)
+
+* Tue Sep 19 2006 Don Zickus <dzickus at redhat.com>
+- Increase nodes supported on ia64 (#203184)
+- Powernow K8 Clock fix (#204354)
+- NetLabel fixes
 
 * Mon Sep 18 2006 Jeff Moyer <jmoyer at redhat.com>
 - DIO error path cleanup (Zach Brown)
 
+* Mon Sep 18 2006 Dave Jones <davej at redhat.com>
+- Fix RTC lockdep bug. (Peter Zijlstra)
+
 * Mon Sep 18 2006 Juan Quintela <quintela at redhat.com>
 - xen HV update (cset 11470:2b8dc69744e3).
 

linux-2.6-lockdep-fixes.patch:
 a/drivers/net/forcedeth.c                     |   31 +++++++++++++-----------
 a/fs/nfsd/nfsproc.c                           |    2 -
 a/fs/nfsd/vfs.c                               |    8 +++---
 a/include/linux/nfsd/nfsfh.h                  |   11 +++++++-
 a/kernel/lockdep.c                            |   13 ++++++++++
 a/net/ipv6/tcp_ipv6.c                         |    2 -
 linux-2.6.17-mm6/include/net/sock.h           |   33 +++++++++++++++++++++++---
 linux-2.6.17.noarch/drivers/char/rtc.c        |    5 ++-
 linux-2.6.18-rc1/drivers/input/serio/libps2.c |    6 ++--
 linux-2.6.18-rc1/include/linux/libps2.h       |   12 ++++++++-
 linux-2.6.18-rc1/net/socket.c                 |    8 +++++-
 11 files changed, 99 insertions(+), 32 deletions(-)

Index: linux-2.6-lockdep-fixes.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-lockdep-fixes.patch,v
retrieving revision 1.25
retrieving revision 1.25.8.1
diff -u -r1.25 -r1.25.8.1
--- linux-2.6-lockdep-fixes.patch	5 Sep 2006 18:36:57 -0000	1.25
+++ linux-2.6-lockdep-fixes.patch	20 Sep 2006 17:45:35 -0000	1.25.8.1
@@ -605,3 +605,309 @@
  	if (IS_ERR(dchild)) {
  		nfserr = nfserrno(PTR_ERR(dchild));
 _
+
+BUG: warning at kernel/lockdep.c:1816/trace_hardirqs_on() (Not tainted)
+ [<c04051ee>] show_trace_log_lvl+0x58/0x171
+ [<c0405802>] show_trace+0xd/0x10
+ [<c040591b>] dump_stack+0x19/0x1b
+ [<c043abee>] trace_hardirqs_on+0xa2/0x11e
+ [<c06143c3>] _spin_unlock_irq+0x22/0x26
+ [<c0541540>] rtc_get_rtc_time+0x32/0x176
+ [<c0419ba4>] hpet_rtc_interrupt+0x92/0x14d
+ [<c0450f94>] handle_IRQ_event+0x20/0x4d
+ [<c0451055>] __do_IRQ+0x94/0xef
+ [<c040678d>] do_IRQ+0x9e/0xbd
+ [<c0404a49>] common_interrupt+0x25/0x2c
+DWARF2 unwinder stuck at common_interrupt+0x25/0x2c
+
+rtc_is_updating() is called form IRQ context, un-conditionally enabling 
+interrupts is not a good thing.
+
+Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
+---
+ drivers/char/rtc.c |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+Index: linux-2.6.17.noarch/drivers/char/rtc.c
+===================================================================
+--- linux-2.6.17.noarch.orig/drivers/char/rtc.c	2006-09-18 21:34:11.000000000 +0200
++++ linux-2.6.17.noarch/drivers/char/rtc.c	2006-09-18 21:35:03.000000000 +0200
+@@ -209,11 +209,12 @@ static const unsigned char days_in_mo[] 
+  */
+ static inline unsigned char rtc_is_updating(void)
+ {
++	unsigned long flags;
+ 	unsigned char uip;
+ 
+-	spin_lock_irq(&rtc_lock);
++	spin_lock_irqsave(&rtc_lock, flags);
+ 	uip = (CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP);
+-	spin_unlock_irq(&rtc_lock);
++	spin_unlock_irqrestore(&rtc_lock, flags);
+ 	return uip;
+ }
+ 
+From: Fabio Olive Leite <fleite at redhat.com>
+
+A while ago Ingo patched tcp_v4_rcv on net/ipv4/tcp_ipv4.c to use
+bh_lock_sock_nested and silence a lock validator warning. This fixed
+it for IPv4, but recently I saw a report of the same warning on IPv6.
+
+Cc: Herbert Xu <herbert at gondor.apana.org.au>
+Cc: "David S. Miller" <davem at davemloft.net>
+Signed-off-by: Andrew Morton <akpm at osdl.org>
+---
+
+ net/ipv6/tcp_ipv6.c |    2 +-
+ 1 files changed, 1 insertion(+), 1 deletion(-)
+
+diff -puN net/ipv6/tcp_ipv6.c~net-ipv6-bh_lock_sock_nested-on-tcp_v6_rcv net/ipv6/tcp_ipv6.c
+--- a/net/ipv6/tcp_ipv6.c~net-ipv6-bh_lock_sock_nested-on-tcp_v6_rcv
++++ a/net/ipv6/tcp_ipv6.c
+@@ -1228,7 +1228,7 @@ process:
+ 
+ 	skb->dev = NULL;
+ 
+-	bh_lock_sock(sk);
++	bh_lock_sock_nested(sk);
+ 	ret = 0;
+ 	if (!sock_owned_by_user(sk)) {
+ #ifdef CONFIG_NET_DMA
+_
+From davej  Tue Sep 19 14:16:57 2006
+Return-Path: <akpm at osdl.org>
+X-Spam-Checker-Version: SpamAssassin 3.1.4 (2006-07-25) on 
+	pressure.kernelslacker.org
+X-Spam-Level: 
+X-Spam-Status: No, score=-1.1 required=5.0 tests=AWL,BAYES_00,
+	FORGED_RCVD_HELO,NO_REAL_NAME,UNPARSEABLE_RELAY autolearn=no 
+	version=3.1.4
+Received: from pobox.devel.redhat.com [10.11.255.8]
+	by pressure.kernelslacker.org with IMAP (fetchmail-6.3.4)
+	for <davej at localhost> (single-drop); Tue, 19 Sep 2006 14:16:57 -0400 (EDT)
+Received: from pobox.devel.redhat.com ([unix socket])
+	 by pobox.devel.redhat.com (Cyrus v2.2.12-Invoca-RPM-2.2.12-3.RHEL4.1) with LMTPA;
+	 Tue, 19 Sep 2006 14:15:59 -0400
+X-Sieve: CMU Sieve 2.2
+Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254])
+	by pobox.devel.redhat.com (8.13.1/8.13.1) with ESMTP id k8JIFwbp015506
+	for <davej at pobox.devel.redhat.com>; Tue, 19 Sep 2006 14:15:58 -0400
+Received: from mx1.redhat.com (mx1.redhat.com [172.16.48.31])
+	by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k8JIFwpM022674
+	for <davej at redhat.com>; Tue, 19 Sep 2006 14:15:58 -0400
+Received: from smtp.osdl.org (smtp.osdl.org [65.172.181.4])
+	by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k8JIFvOb017091
+	for <davej at redhat.com>; Tue, 19 Sep 2006 14:15:58 -0400
+Received: from shell0.pdx.osdl.net (fw.osdl.org [65.172.181.6])
+	by smtp.osdl.org (8.12.8/8.12.8) with ESMTP id k8JIFXnW015308
+	(version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO);
+	Tue, 19 Sep 2006 11:15:33 -0700
+Received: from localhost.localdomain (shell0.pdx.osdl.net [10.9.0.31])
+	by shell0.pdx.osdl.net (8.13.1/8.11.6) with ESMTP id k8JIFWsG028826;
+	Tue, 19 Sep 2006 11:15:32 -0700
+Message-Id: <200609191815.k8JIFWsG028826 at shell0.pdx.osdl.net>
+Subject: + forcedeth-hardirq-lockdep-warning.patch added to -mm tree
+To: mm-commits at vger.kernel.org
+Cc: a.p.zijlstra at chello.nl, aabdulla at nvidia.com, arjan at linux.intel.com,
+        davej at redhat.com, jeff at garzik.org, mingo at elte.hu
+From: akpm at osdl.org
+Date: Tue, 19 Sep 2006 11:15:32 -0700
+X-MIMEDefang-Filter: osdl$Revision$
+X-Scanned-By: MIMEDefang 2.36
+X-RedHat-Spam-Score: 0.285 
+Status: RO
+Content-Length: 5878
+Lines: 191
+
+
+The patch titled
+
+     forcedeth: hardirq lockdep warning
+
+has been added to the -mm tree.  Its filename is
+
+     forcedeth-hardirq-lockdep-warning.patch
+
+See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find
+out what to do about this
+
+------------------------------------------------------
+Subject: forcedeth: hardirq lockdep warning
+From: Peter Zijlstra <a.p.zijlstra at chello.nl>
+
+BUG: warning at kernel/lockdep.c:1816/trace_hardirqs_on() (Not tainted)
+
+Call Trace:
+ show_trace
+ dump_stack
+ trace_hardirqs_on
+ :forcedeth:nv_nic_irq_other
+ handle_IRQ_event
+ __do_IRQ
+ do_IRQ
+ ret_from_intr
+DWARF2 barf
+ default_idle
+ cpu_idle
+ rest_init
+ start_kernel
+ _sinittext
+
+These 3 functions nv_nic_irq_tx(), nv_nic_irq_rx() and nv_nic_irq_other()
+are reachable from IRQ context and process context. Make use of the
+irq-save/restore spinlock variant.
+
+Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
+Cc: Jeff Garzik <jeff at garzik.org>
+Cc: Ingo Molnar <mingo at elte.hu>
+Cc: Arjan van de Ven <arjan at linux.intel.com>
+Cc: Dave Jones <davej at redhat.com>
+Cc: Ayaz Abdulla <aabdulla at nvidia.com>
+Signed-off-by: Andrew Morton <akpm at osdl.org>
+---
+
+ drivers/net/forcedeth.c |   31 +++++++++++++++++--------------
+ 1 files changed, 17 insertions(+), 14 deletions(-)
+
+diff -puN drivers/net/forcedeth.c~forcedeth-hardirq-lockdep-warning drivers/net/forcedeth.c
+--- a/drivers/net/forcedeth.c~forcedeth-hardirq-lockdep-warning
++++ a/drivers/net/forcedeth.c
+@@ -2497,6 +2497,7 @@ static irqreturn_t nv_nic_irq_tx(int foo
+ 	u8 __iomem *base = get_hwbase(dev);
+ 	u32 events;
+ 	int i;
++	unsigned long flags;
+ 
+ 	dprintk(KERN_DEBUG "%s: nv_nic_irq_tx\n", dev->name);
+ 
+@@ -2508,16 +2509,16 @@ static irqreturn_t nv_nic_irq_tx(int foo
+ 		if (!(events & np->irqmask))
+ 			break;
+ 
+-		spin_lock_irq(&np->lock);
++		spin_lock_irqsave(&np->lock, flags);
+ 		nv_tx_done(dev);
+-		spin_unlock_irq(&np->lock);
++		spin_unlock_irqrestore(&np->lock, flags);
+ 
+ 		if (events & (NVREG_IRQ_TX_ERR)) {
+ 			dprintk(KERN_DEBUG "%s: received irq with events 0x%x. Probably TX fail.\n",
+ 						dev->name, events);
+ 		}
+ 		if (i > max_interrupt_work) {
+-			spin_lock_irq(&np->lock);
++			spin_lock_irqsave(&np->lock, flags);
+ 			/* disable interrupts on the nic */
+ 			writel(NVREG_IRQ_TX_ALL, base + NvRegIrqMask);
+ 			pci_push(base);
+@@ -2527,7 +2528,7 @@ static irqreturn_t nv_nic_irq_tx(int foo
+ 				mod_timer(&np->nic_poll, jiffies + POLL_WAIT);
+ 			}
+ 			printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq_tx.\n", dev->name, i);
+-			spin_unlock_irq(&np->lock);
++			spin_unlock_irqrestore(&np->lock, flags);
+ 			break;
+ 		}
+ 
+@@ -2601,6 +2602,7 @@ static irqreturn_t nv_nic_irq_rx(int foo
+ 	u8 __iomem *base = get_hwbase(dev);
+ 	u32 events;
+ 	int i;
++	unsigned long flags;
+ 
+ 	dprintk(KERN_DEBUG "%s: nv_nic_irq_rx\n", dev->name);
+ 
+@@ -2614,14 +2616,14 @@ static irqreturn_t nv_nic_irq_rx(int foo
+ 
+ 		nv_rx_process(dev, dev->weight);
+ 		if (nv_alloc_rx(dev)) {
+-			spin_lock_irq(&np->lock);
++			spin_lock_irqsave(&np->lock, flags);
+ 			if (!np->in_shutdown)
+ 				mod_timer(&np->oom_kick, jiffies + OOM_REFILL);
+-			spin_unlock_irq(&np->lock);
++			spin_unlock_irqrestore(&np->lock, flags);
+ 		}
+ 
+ 		if (i > max_interrupt_work) {
+-			spin_lock_irq(&np->lock);
++			spin_lock_irqsave(&np->lock, flags);
+ 			/* disable interrupts on the nic */
+ 			writel(NVREG_IRQ_RX_ALL, base + NvRegIrqMask);
+ 			pci_push(base);
+@@ -2631,7 +2633,7 @@ static irqreturn_t nv_nic_irq_rx(int foo
+ 				mod_timer(&np->nic_poll, jiffies + POLL_WAIT);
+ 			}
+ 			printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq_rx.\n", dev->name, i);
+-			spin_unlock_irq(&np->lock);
++			spin_unlock_irqrestore(&np->lock, flags);
+ 			break;
+ 		}
+ 	}
+@@ -2648,6 +2650,7 @@ static irqreturn_t nv_nic_irq_other(int 
+ 	u8 __iomem *base = get_hwbase(dev);
+ 	u32 events;
+ 	int i;
++	unsigned long flags;
+ 
+ 	dprintk(KERN_DEBUG "%s: nv_nic_irq_other\n", dev->name);
+ 
+@@ -2660,14 +2663,14 @@ static irqreturn_t nv_nic_irq_other(int 
+ 			break;
+ 
+ 		if (events & NVREG_IRQ_LINK) {
+-			spin_lock_irq(&np->lock);
++			spin_lock_irqsave(&np->lock, flags);
+ 			nv_link_irq(dev);
+-			spin_unlock_irq(&np->lock);
++			spin_unlock_irqrestore(&np->lock, flags);
+ 		}
+ 		if (np->need_linktimer && time_after(jiffies, np->link_timeout)) {
+-			spin_lock_irq(&np->lock);
++			spin_lock_irqsave(&np->lock, flags);
+ 			nv_linkchange(dev);
+-			spin_unlock_irq(&np->lock);
++			spin_unlock_irqrestore(&np->lock, flags);
+ 			np->link_timeout = jiffies + LINK_TIMEOUT;
+ 		}
+ 		if (events & (NVREG_IRQ_UNKNOWN)) {
+@@ -2675,7 +2678,7 @@ static irqreturn_t nv_nic_irq_other(int 
+ 						dev->name, events);
+ 		}
+ 		if (i > max_interrupt_work) {
+-			spin_lock_irq(&np->lock);
++			spin_lock_irqsave(&np->lock, flags);
+ 			/* disable interrupts on the nic */
+ 			writel(NVREG_IRQ_OTHER, base + NvRegIrqMask);
+ 			pci_push(base);
+@@ -2685,7 +2688,7 @@ static irqreturn_t nv_nic_irq_other(int 
+ 				mod_timer(&np->nic_poll, jiffies + POLL_WAIT);
+ 			}
+ 			printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq_other.\n", dev->name, i);
+-			spin_unlock_irq(&np->lock);
++			spin_unlock_irqrestore(&np->lock, flags);
+ 			break;
+ 		}
+ 
+_
+
+Patches currently in -mm which might be from a.p.zijlstra at chello.nl are
+
+forcedeth-hardirq-lockdep-warning.patch
+mm-tracking-shared-dirty-pages.patch
+mm-tracking-shared-dirty-pages-nommu-fix-2.patch
+mm-balance-dirty-pages.patch
+mm-optimize-the-new-mprotect-code-a-bit.patch
+mm-small-cleanup-of-install_page.patch
+mm-fixup-do_wp_page.patch
+mm-msync-cleanup.patch
+mm-tracking-shared-dirty-pages-checks.patch
+mm-tracking-shared-dirty-pages-wimp.patch
+mm-swap-write-failure-fixup.patch
+mm-swap-write-failure-fixup-update.patch
+mm-swap-write-failure-fixup-fix.patch
+block_devc-mutex_lock_nested-fix.patch
+remove-the-old-bd_mutex-lockdep-annotation.patch
+new-bd_mutex-lockdep-annotation.patch
+nfsd-lockdep-annotation.patch
+

linux-2.6-net-netlabel-cipso.patch:
 linux-2.6.17.i686.w/Documentation/00-INDEX                                    |    2 
 linux-2.6.17.i686.w/Documentation/netlabel/00-INDEX                           |   10 
 linux-2.6.17.i686.w/Documentation/netlabel/cipso_ipv4.txt                     |   48 
 linux-2.6.17.i686.w/Documentation/netlabel/draft-ietf-cipso-ipsecurity-01.txt |  781 ++++
 linux-2.6.17.i686.w/Documentation/netlabel/introduction.txt                   |   46 
 linux-2.6.17.i686.w/Documentation/netlabel/lsm_interface.txt                  |   47 
 linux-2.6.17.i686.w/Documentation/networking/ip-sysctl.txt                    |   35 
 linux-2.6.17.i686.w/include/linux/ip.h                                        |    1 
 linux-2.6.17.i686.w/include/linux/security.h                                  |   25 
 linux-2.6.17.i686.w/include/linux/sysctl.h                                    |    4 
 linux-2.6.17.i686.w/include/linux/utsrelease.h                                |    1 
 linux-2.6.17.i686.w/include/net/cipso_ipv4.h                                  |  250 +
 linux-2.6.17.i686.w/include/net/inet_sock.h                                   |    2 
 linux-2.6.17.i686.w/include/net/netlabel.h                                    |  291 +
 linux-2.6.17.i686.w/net/Kconfig                                               |    2 
 linux-2.6.17.i686.w/net/Makefile                                              |    1 
 linux-2.6.17.i686.w/net/ipv4/Makefile                                         |    1 
 linux-2.6.17.i686.w/net/ipv4/ah4.c                                            |    2 
 linux-2.6.17.i686.w/net/ipv4/cipso_ipv4.c                                     | 1607 ++++++++++
 linux-2.6.17.i686.w/net/ipv4/ip_options.c                                     |   19 
 linux-2.6.17.i686.w/net/ipv4/sysctl_net_ipv4.c                                |   35 
 linux-2.6.17.i686.w/net/netlabel/Kconfig                                      |   14 
 linux-2.6.17.i686.w/net/netlabel/Makefile                                     |   16 
 linux-2.6.17.i686.w/net/netlabel/netlabel_cipso_v4.c                          |  542 +++
 linux-2.6.17.i686.w/net/netlabel/netlabel_cipso_v4.h                          |  217 +
 linux-2.6.17.i686.w/net/netlabel/netlabel_domainhash.c                        |  513 +++
 linux-2.6.17.i686.w/net/netlabel/netlabel_domainhash.h                        |   63 
 linux-2.6.17.i686.w/net/netlabel/netlabel_kapi.c                              |  231 +
 linux-2.6.17.i686.w/net/netlabel/netlabel_mgmt.c                              |  624 +++
 linux-2.6.17.i686.w/net/netlabel/netlabel_mgmt.h                              |  246 +
 linux-2.6.17.i686.w/net/netlabel/netlabel_unlabeled.c                         |  253 +
 linux-2.6.17.i686.w/net/netlabel/netlabel_unlabeled.h                         |   98 
 linux-2.6.17.i686.w/net/netlabel/netlabel_user.c                              |  158 
 linux-2.6.17.i686.w/net/netlabel/netlabel_user.h                              |  214 +
 linux-2.6.17.i686.w/net/socket.c                                              |   13 
 linux-2.6.17.i686.w/security/dummy.c                                          |    6 
 linux-2.6.17.i686.w/security/selinux/hooks.c                                  |   58 
 linux-2.6.17.i686.w/security/selinux/include/objsec.h                         |    8 
 linux-2.6.17.i686.w/security/selinux/include/selinux_netlabel.h               |  125 
 linux-2.6.17.i686.w/security/selinux/ss/ebitmap.c                             |  144 
 linux-2.6.17.i686.w/security/selinux/ss/ebitmap.h                             |    6 
 linux-2.6.17.i686.w/security/selinux/ss/mls.c                                 |  156 
 linux-2.6.17.i686.w/security/selinux/ss/mls.h                                 |   21 
 linux-2.6.17.i686.w/security/selinux/ss/services.c                            |  488 +++
 linux-2.6.17.x86_64.w/include/net/cipso_ipv4.h                                |    8 
 linux-2.6.17.x86_64.w/include/net/netlabel.h                                  |    1 
 linux-2.6.17.x86_64.w/net/netlabel/netlabel_domainhash.h                      |    4 
 linux-2.6.17.x86_64.w/net/netlabel/netlabel_user.h                            |    5 
 linux-2.6.17.x86_64.w/security/selinux/hooks.c                                |    6 
 linux-2.6.17.x86_64.w/security/selinux/include/selinux_netlabel.h             |   62 
 linux-2.6.17.x86_64.w/security/selinux/ss/ebitmap.c                           |   36 
 linux-2.6.17.x86_64.w/security/selinux/ss/services.c                          |   80 
 52 files changed, 7521 insertions(+), 105 deletions(-)

Index: linux-2.6-net-netlabel-cipso.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-net-netlabel-cipso.patch,v
retrieving revision 1.1
retrieving revision 1.1.16.1
diff -u -r1.1 -r1.1.16.1
--- linux-2.6-net-netlabel-cipso.patch	9 Aug 2006 21:52:38 -0000	1.1
+++ linux-2.6-net-netlabel-cipso.patch	20 Sep 2006 17:45:35 -0000	1.1.16.1
@@ -7988,3 +7988,429 @@
 +}
 +#endif /* CONFIG_NETLABEL */
 
+Date: Sat, 2 Sep 2006 10:59:31 -0400 (EDT)
+From: James Morris <jmorris at redhat.com>
+Subject: [RHEL5 PATCH] Netlabel fixes
+
+This is a backport of some Netlabel (CIPSO) patches posted in the 
+following thread:
+
+http://thread.gmane.org/gmane.linux.network/44202/focus=44202
+
+This is needed for RHEL5.
+
+Please apply.
+
+
+ Signed-off-by: Paul Moore <paul.moore at hp.com>
+ Signed-off-by: David S. Miller <davem at davemloft.net>
+ Signed-off-by: James Morris <jmorris at redhat.com>
+
+---
+
+ include/net/cipso_ipv4.h                    |    8 --
+ include/net/netlabel.h                      |    1 
+ net/netlabel/netlabel_domainhash.h          |    4 +
+ net/netlabel/netlabel_user.h                |    5 +
+ security/selinux/hooks.c                    |    6 ++
+ security/selinux/include/selinux_netlabel.h |   62 +++++++++------------
+ security/selinux/ss/ebitmap.c               |   36 +++++-------
+ security/selinux/ss/services.c              |   80 +++++++++++++++++++++++-----
+
+diff -purN -X dontdiff linux-2.6.17.x86_64/include/net/cipso_ipv4.h linux-2.6.17.x86_64.w/include/net/cipso_ipv4.h
+--- linux-2.6.17.x86_64/include/net/cipso_ipv4.h	2006-09-02 09:53:00.000000000 -0400
++++ linux-2.6.17.x86_64.w/include/net/cipso_ipv4.h	2006-09-02 09:59:17.000000000 -0400
+@@ -37,6 +37,8 @@
+ #include <linux/types.h>
+ #include <linux/rcupdate.h>
+ #include <linux/list.h>
++#include <linux/net.h>
++#include <linux/skbuff.h>
+ #include <net/netlabel.h>
+ 
+ /* known doi values */
+@@ -200,15 +202,9 @@ static inline int cipso_v4_cache_add(con
+ 
+ #ifdef CONFIG_NETLABEL
+ void cipso_v4_error(struct sk_buff *skb, int error, u32 gateway);
+-int cipso_v4_socket_setopt(struct socket *sock,
+-			   unsigned char *opt,
+-			   u32 opt_len);
+ int cipso_v4_socket_setattr(const struct socket *sock,
+ 			    const struct cipso_v4_doi *doi_def,
+ 			    const struct netlbl_lsm_secattr *secattr);
+-int cipso_v4_socket_getopt(const struct socket *sock,
+-			   unsigned char **opt,
+-			   u32 *opt_len);
+ int cipso_v4_socket_getattr(const struct socket *sock,
+ 			    struct netlbl_lsm_secattr *secattr);
+ int cipso_v4_skbuff_getattr(const struct sk_buff *skb,
+diff -purN -X dontdiff linux-2.6.17.x86_64/include/net/netlabel.h linux-2.6.17.x86_64.w/include/net/netlabel.h
+--- linux-2.6.17.x86_64/include/net/netlabel.h	2006-09-02 09:53:00.000000000 -0400
++++ linux-2.6.17.x86_64.w/include/net/netlabel.h	2006-09-02 09:59:17.000000000 -0400
+@@ -31,6 +31,7 @@
+ #define _NETLABEL_H
+ 
+ #include <linux/types.h>
++#include <linux/net.h>
+ #include <linux/skbuff.h>
+ #include <net/netlink.h>
+ 
+diff -purN -X dontdiff linux-2.6.17.x86_64/net/netlabel/netlabel_domainhash.h linux-2.6.17.x86_64.w/net/netlabel/netlabel_domainhash.h
+--- linux-2.6.17.x86_64/net/netlabel/netlabel_domainhash.h	2006-09-02 09:53:00.000000000 -0400
++++ linux-2.6.17.x86_64.w/net/netlabel/netlabel_domainhash.h	2006-09-02 09:59:17.000000000 -0400
+@@ -32,6 +32,10 @@
+ #ifndef _NETLABEL_DOMAINHASH_H
+ #define _NETLABEL_DOMAINHASH_H
+ 
++#include <linux/types.h>
++#include <linux/rcupdate.h>
++#include <linux/list.h>
++
+ /* Domain hash table size */
+ /* XXX - currently this number is an uneducated guess */
+ #define NETLBL_DOMHSH_BITSIZE       7
+diff -purN -X dontdiff linux-2.6.17.x86_64/net/netlabel/netlabel_user.h linux-2.6.17.x86_64.w/net/netlabel/netlabel_user.h
+--- linux-2.6.17.x86_64/net/netlabel/netlabel_user.h	2006-09-02 09:53:00.000000000 -0400
++++ linux-2.6.17.x86_64.w/net/netlabel/netlabel_user.h	2006-09-02 09:59:17.000000000 -0400
+@@ -31,11 +31,12 @@
+ #ifndef _NETLABEL_USER_H
+ #define _NETLABEL_USER_H
+ 
++#include <linux/types.h>
+ #include <linux/skbuff.h>
+ #include <linux/capability.h>
+-#include <linux/genetlink.h>
+-#include <net/netlabel.h>
++#include <net/netlink.h>
+ #include <net/genetlink.h>
++#include <net/netlabel.h>
+ 
+ /* NetLabel NETLINK helper functions */
+ 
+diff -purN -X dontdiff linux-2.6.17.x86_64/security/selinux/hooks.c linux-2.6.17.x86_64.w/security/selinux/hooks.c
+--- linux-2.6.17.x86_64/security/selinux/hooks.c	2006-09-02 09:53:00.000000000 -0400
++++ linux-2.6.17.x86_64.w/security/selinux/hooks.c	2006-09-02 09:58:55.000000000 -0400
+@@ -281,6 +281,8 @@ static int sk_alloc_security(struct sock
+ 	ssec->sid = SECINITSID_UNLABELED;
+ 	sk->sk_security = ssec;
+ 
++	selinux_netlbl_sk_security_init(ssec, family);
++
+ 	return 0;
+ }
+ 
+@@ -3582,6 +3584,8 @@ static void selinux_sk_clone_security(co
+ 
+ 	newssec->sid = ssec->sid;
+ 	newssec->peer_sid = ssec->peer_sid;
++
++	selinux_netlbl_sk_clone_security(ssec, newssec);
+ }
+ 
+ static void selinux_sk_getsecid(struct sock *sk, u32 *secid)
+@@ -3644,6 +3648,8 @@ void selinux_inet_csk_clone(struct sock 
+ 	   new socket in sync, but we don't have the isec available yet.
+ 	   So we will wait until sock_graft to do it, by which
+ 	   time it will have been created and available. */
++
++	selinux_netlbl_sk_security_init(newsksec, req->rsk_ops->family);
+ }
+ 
+ void selinux_req_classify_flow(const struct request_sock *req, struct flowi *fl)
+diff -purN -X dontdiff linux-2.6.17.x86_64/security/selinux/include/selinux_netlabel.h linux-2.6.17.x86_64.w/security/selinux/include/selinux_netlabel.h
+--- linux-2.6.17.x86_64/security/selinux/include/selinux_netlabel.h	2006-09-02 09:53:00.000000000 -0400
++++ linux-2.6.17.x86_64.w/security/selinux/include/selinux_netlabel.h	2006-09-02 09:59:17.000000000 -0400
+@@ -27,6 +27,15 @@
+ #ifndef _SELINUX_NETLABEL_H_
+ #define _SELINUX_NETLABEL_H_
+ 
++#include <linux/types.h>
++#include <linux/fs.h>
++#include <linux/net.h>
++#include <linux/skbuff.h>
++#include <net/sock.h>
++
++#include "avc.h"
++#include "objsec.h"
++
+ #ifdef CONFIG_NETLABEL
+ void selinux_netlbl_cache_invalidate(void);
+ int selinux_netlbl_socket_post_create(struct socket *sock,
+@@ -39,40 +48,11 @@ int selinux_netlbl_sock_rcv_skb(struct s
+ 				struct avc_audit_data *ad);
+ u32 selinux_netlbl_socket_getpeersec_stream(struct socket *sock);
+ u32 selinux_netlbl_socket_getpeersec_dgram(struct sk_buff *skb);
+-
+-int __selinux_netlbl_inode_permission(struct inode *inode, int mask);
+-/**
+- * selinux_netlbl_inode_permission - Verify the socket is NetLabel labeled
+- * @inode: the file descriptor's inode
+- * @mask: the permission mask
+- *
+- * Description:
+- * Looks at a file's inode and if it is marked as a socket protected by
+- * NetLabel then verify that the socket has been labeled, if not try to label
+- * the socket now with the inode's SID.  Returns zero on success, negative
+- * values on failure.
+- *
+- */
+-static inline int selinux_netlbl_inode_permission(struct inode *inode,
+-						  int mask)
+-{
+-	int rc = 0;
+-	struct inode_security_struct *isec;
+-	struct sk_security_struct *sksec;
+-
+-	if (!S_ISSOCK(inode->i_mode))
+-		return 0;
+-
+-	isec = inode->i_security;
+-	sksec = SOCKET_I(inode)->sk->sk_security;
+-	down(&isec->sem);
+-	if (unlikely(sksec->nlbl_state == NLBL_REQUIRE &&
+-		     (mask & (MAY_WRITE | MAY_APPEND))))
+-		rc = __selinux_netlbl_inode_permission(inode, mask);
+-	up(&isec->sem);
+-
+-	return rc;
+-}
++void selinux_netlbl_sk_security_init(struct sk_security_struct *ssec,
++				     int family);
++void selinux_netlbl_sk_clone_security(struct sk_security_struct *ssec,
++				      struct sk_security_struct *newssec);
++int selinux_netlbl_inode_permission(struct inode *inode, int mask);
+ #else
+ static inline void selinux_netlbl_cache_invalidate(void)
+ {
+@@ -115,6 +95,20 @@ static inline u32 selinux_netlbl_socket_
+ 	return SECSID_NULL;
+ }
+ 
++static inline void selinux_netlbl_sk_security_init(
++	                                       struct sk_security_struct *ssec,
++					       int family)
++{
++	return;
++}
++
++static inline void selinux_netlbl_sk_clone_security(
++	                                   struct sk_security_struct *ssec,
++					   struct sk_security_struct *newssec)
++{
++	return;
++}
++
+ static inline int selinux_netlbl_inode_permission(struct inode *inode,
+ 						  int mask)
+ {
+diff -purN -X dontdiff linux-2.6.17.x86_64/security/selinux/ss/ebitmap.c linux-2.6.17.x86_64.w/security/selinux/ss/ebitmap.c
+--- linux-2.6.17.x86_64/security/selinux/ss/ebitmap.c	2006-09-02 09:53:00.000000000 -0400
++++ linux-2.6.17.x86_64.w/security/selinux/ss/ebitmap.c	2006-09-02 09:59:09.000000000 -0400
+@@ -145,29 +145,28 @@ int ebitmap_import(const unsigned char *
+ 		   struct ebitmap *dst)
+ {
+ 	size_t src_off = 0;
++	size_t node_limit;
+ 	struct ebitmap_node *node_new;
+ 	struct ebitmap_node *node_last = NULL;
+-	size_t iter;
+-	size_t iter_bit;
+-	size_t iter_limit;
++	u32 i_byte;
++	u32 i_bit;
+ 	unsigned char src_byte;
+ 
+-	do {
+-		iter_limit = src_len - src_off;
+-		if (iter_limit >= sizeof(MAPTYPE)) {
++	while (src_off < src_len) {
++		if (src_len - src_off >= sizeof(MAPTYPE)) {
+ 			if (*(MAPTYPE *)&src[src_off] == 0) {
+ 				src_off += sizeof(MAPTYPE);
+ 				continue;
+ 			}
+-			iter_limit = sizeof(MAPTYPE);
++			node_limit = sizeof(MAPTYPE);
+ 		} else {
+-			iter = src_off;
+-			src_byte = 0;
+-			do {
+-				src_byte |= src[iter++];
+-			} while (iter < src_len && src_byte == 0);
++			for (src_byte = 0, i_byte = src_off;
++			     i_byte < src_len && src_byte == 0;
++			     i_byte++)
++				src_byte |= src[i_byte];
+ 			if (src_byte == 0)
+ 				break;
++			node_limit = src_len - src_off;
+ 		}
+ 
+ 		node_new = kzalloc(sizeof(*node_new), GFP_ATOMIC);
+@@ -176,24 +175,21 @@ int ebitmap_import(const unsigned char *
+ 			return -ENOMEM;
+ 		}
+ 		node_new->startbit = src_off * 8;
+-		iter = 0;
+-		do {
++		for (i_byte = 0; i_byte < node_limit; i_byte++) {
+ 			src_byte = src[src_off++];
+-			iter_bit = iter++ * 8;
+-			while (src_byte != 0) {
++			for (i_bit = i_byte * 8; src_byte != 0; i_bit++) {
+ 				if (src_byte & 0x80)
+-					node_new->map |= MAPBIT << iter_bit;
+-				iter_bit++;
++					node_new->map |= MAPBIT << i_bit;
+ 				src_byte <<= 1;
+ 			}
+-		} while (iter < iter_limit);
++		}
+ 
+ 		if (node_last != NULL)
+ 			node_last->next = node_new;
+ 		else
+ 			dst->node = node_new;
+ 		node_last = node_new;
+-	} while (src_off < src_len);
++	}
+ 
+ 	if (likely(node_last != NULL))
+ 		dst->highbit = node_last->startbit + MAPSIZE;
+diff -purN -X dontdiff linux-2.6.17.x86_64/security/selinux/ss/services.c linux-2.6.17.x86_64.w/security/selinux/ss/services.c
+--- linux-2.6.17.x86_64/security/selinux/ss/services.c	2006-09-02 09:53:00.000000000 -0400
++++ linux-2.6.17.x86_64.w/security/selinux/ss/services.c	2006-09-02 09:59:14.000000000 -0400
+@@ -2423,6 +2423,45 @@ netlbl_socket_setsid_return:
+ }
+ 
+ /**
++ * selinux_netlbl_sk_security_init - Setup the NetLabel fields
++ * @ssec: the sk_security_struct
++ * @family: the socket family
++ *
++ * Description:
++ * Called when a new sk_security_struct is allocated to initialize the NetLabel
++ * fields.
++ *
++ */
++void selinux_netlbl_sk_security_init(struct sk_security_struct *ssec,
++				     int family)
++{
++        if (family == PF_INET)
++		ssec->nlbl_state = NLBL_REQUIRE;
++	else
++		ssec->nlbl_state = NLBL_UNSET;
++}
++
++/**
++ * selinux_netlbl_sk_clone_security - Copy the NetLabel fields
++ * @ssec: the original sk_security_struct
++ * @newssec: the cloned sk_security_struct
++ *
++ * Description:
++ * Clone the NetLabel specific sk_security_struct fields from @ssec to
++ * @newssec.
++ *
++ */
++void selinux_netlbl_sk_clone_security(struct sk_security_struct *ssec,
++				      struct sk_security_struct *newssec)
++{
++	newssec->sclass = ssec->sclass;
++	if (ssec->nlbl_state != NLBL_UNSET)
++		newssec->nlbl_state = NLBL_REQUIRE;
++	else
++		newssec->nlbl_state = NLBL_UNSET;
++}
++
++/**
+  * selinux_netlbl_socket_post_create - Label a socket using NetLabel
+  * @sock: the socket to label
+  * @sock_family: the socket family
+@@ -2440,10 +2479,11 @@ int selinux_netlbl_socket_post_create(st
+ 	struct inode_security_struct *isec = SOCK_INODE(sock)->i_security;
+ 	struct sk_security_struct *sksec = sock->sk->sk_security;
+ 
++	sksec->sclass = isec->sclass;
++
+ 	if (sock_family != PF_INET)
+ 		return 0;
+ 
+-	sksec->sclass = isec->sclass;
+ 	sksec->nlbl_state = NLBL_REQUIRE;
+ 	return selinux_netlbl_socket_setsid(sock, sid);
+ }
+@@ -2463,12 +2503,13 @@ void selinux_netlbl_sock_graft(struct so
+ 	struct inode_security_struct *isec = SOCK_INODE(sock)->i_security;
+ 	struct sk_security_struct *sksec = sk->sk_security;
+ 
++	sksec->sclass = isec->sclass;
++
+ 	if (sk->sk_family != PF_INET)
+ 		return;
+ 
+ 	sksec->nlbl_state = NLBL_REQUIRE;
+ 	sksec->peer_sid = sksec->sid;
+-	sksec->sclass = isec->sclass;
+ 
+ 	/* Try to set the NetLabel on the socket to save time later, if we fail
+ 	 * here we will pick up the pieces in later calls to
+@@ -2503,24 +2544,39 @@ u32 selinux_netlbl_inet_conn_request(str
+ }
+ 
+ /**
+- * __selinux_netlbl_inode_permission - Label a socket using NetLabel
++ * selinux_netlbl_inode_permission - Verify the socket is NetLabel labeled
+  * @inode: the file descriptor's inode
+  * @mask: the permission mask
+  *
+  * Description:
+- * Try to label a socket with the inode's SID using NetLabel.  Returns zero on
+- * success, negative values on failure.
++ * Looks at a file's inode and if it is marked as a socket protected by
++ * NetLabel then verify that the socket has been labeled, if not try to label
++ * the socket now with the inode's SID.  Returns zero on success, negative
++ * values on failure.
+  *
+  */
+-int __selinux_netlbl_inode_permission(struct inode *inode, int mask)
++int selinux_netlbl_inode_permission(struct inode *inode, int mask)
+ {
+ 	int rc;
+-	struct socket *sock = SOCKET_I(inode);
+-	struct sk_security_struct *sksec = sock->sk->sk_security;
++	struct inode_security_struct *isec;
++	struct sk_security_struct *sksec;
++	struct socket *sock;
++
++	if (!S_ISSOCK(inode->i_mode))
++		return 0;
+ 
+-	lock_sock(sock->sk);
+-	rc = selinux_netlbl_socket_setsid(sock, sksec->sid);
+-	release_sock(sock->sk);
++	sock = SOCKET_I(inode);
++	isec = inode->i_security;
++	sksec = sock->sk->sk_security;
++	down(&isec->sem);
++	if (unlikely(sksec->nlbl_state == NLBL_REQUIRE &&
++		     (mask & (MAY_WRITE | MAY_APPEND)))) {
++		lock_sock(sock->sk);
++		rc = selinux_netlbl_socket_setsid(sock, sksec->sid);
++		release_sock(sock->sk);
++	} else
++		rc = 0;
++	up(&isec->sem);
+ 
+ 	return rc;
+ }
+@@ -2576,7 +2632,7 @@ int selinux_netlbl_sock_rcv_skb(struct s
+ }
+ 
+ /**
+- * selinux_netlbl_socket_peersid - Return the peer SID of a connected socket
++ * selinux_netlbl_socket_getpeersec_stream - Return the connected peer's SID
+  * @sock: the socket
+  *
+  * Description:
+

linux-2.6-x86-relocatable.patch:
 b/arch/i386/Kconfig                                              |   13 
 b/arch/i386/Makefile                                             |    2 
 b/arch/i386/boot/Makefile                                        |    2 
 b/arch/i386/boot/bootsect.S                                      |   97 +
 b/arch/i386/boot/compressed/Makefile                             |   22 
 b/arch/i386/boot/compressed/head.S                               |  184 ++-
 b/arch/i386/boot/compressed/misc.c                               |  513 ++++++---
 b/arch/i386/boot/compressed/relocs.c                             |  563 ++++++++++
 b/arch/i386/boot/compressed/vmlinux.lds                          |   40 
 b/arch/i386/boot/compressed/vmlinux.scr                          |    3 
 b/arch/i386/boot/setup.S                                         |   29 
 b/arch/i386/boot/tools/build.c                                   |  214 +++
 b/arch/i386/kernel/alternative.c                                 |    8 
 b/arch/i386/kernel/setup.c                                       |    4 
 b/arch/i386/kernel/vmlinux.lds.S                                 |  114 +-
 b/arch/i386/mm/init.c                                            |   15 
 b/arch/x86_64/Kconfig                                            |   19 
 b/arch/x86_64/boot/Makefile                                      |    2 
 b/arch/x86_64/boot/bootsect.S                                    |   93 +
 b/arch/x86_64/boot/compressed/Makefile                           |   13 
 b/arch/x86_64/boot/compressed/head.S                             |  301 +++--
 b/arch/x86_64/boot/compressed/misc.c                             |  500 ++++++--
 b/arch/x86_64/boot/compressed/vmlinux.lds                        |   44 
 b/arch/x86_64/boot/compressed/vmlinux.scr                        |    5 
 b/arch/x86_64/boot/tools/build.c                                 |  232 +++-
 b/arch/x86_64/defconfig                                          |    1 
 b/arch/x86_64/kernel/acpi/sleep.c                                |   19 
 b/arch/x86_64/kernel/acpi/wakeup.S                               |  325 ++---
 b/arch/x86_64/kernel/e820.c                                      |    4 
 b/arch/x86_64/kernel/early_printk.c                              |    3 
 b/arch/x86_64/kernel/head.S                                      |  326 ++---
 b/arch/x86_64/kernel/head64.c                                    |   35 
 b/arch/x86_64/kernel/setup.c                                     |   24 
 b/arch/x86_64/kernel/setup64.c                                   |    1 
 b/arch/x86_64/kernel/smp.c                                       |    2 
 b/arch/x86_64/kernel/suspend.c                                   |    3 
 b/arch/x86_64/kernel/trampoline.S                                |  168 ++
 b/arch/x86_64/kernel/vmlinux.lds.S                               |    2 
 b/arch/x86_64/kernel/vsyscall.c                                  |   10 
 b/arch/x86_64/mm/fault.c                                         |    4 
 b/arch/x86_64/mm/init.c                                          |  288 ++---
 b/arch/x86_64/mm/pageattr.c                                      |   20 
 b/include/asm-generic/vmlinux.lds.h                              |    2 
 b/include/asm-i386/page.h                                        |    4 
 b/include/asm-x86_64/const.h                                     |   20 
 b/include/asm-x86_64/page.h                                      |   44 
 b/include/asm-x86_64/pgtable.h                                   |   39 
 b/include/asm-x86_64/proto.h                                     |    2 
 b/include/asm-x86_64/segment.h                                   |    4 
 b/include/asm-x86_64/suspend.h                                   |   13 
 b/include/linux/elf.h                                            |   27 
 b/include/linux/elf_boot.h                                       |   19 
 b/include/linux/screen_info.h                                    |    3 
 b/scripts/kallsyms.c                                             |   30 
 linux-2.6.17.noarch/arch/x86_64/mm/init.c                        |    2 
 linux-2.6.17.noarch/include/asm-x86_64/Kbuild                    |    2 
 linux-2.6.17.x86_64-root/fs/proc/kcore.c                         |    8 
 linux-2.6.18-rc3-1M-root/arch/i386/Kconfig                       |   34 
 linux-2.6.18-rc3-1M-root/arch/i386/boot/bootsect.S               |    8 
 linux-2.6.18-rc3-1M-root/arch/i386/boot/compressed/head.S        |   28 
 linux-2.6.18-rc3-1M-root/arch/i386/boot/compressed/misc.c        |    7 
 linux-2.6.18-rc3-1M-root/arch/i386/boot/compressed/vmlinux.lds   |    3 
 linux-2.6.18-rc3-1M-root/arch/i386/kernel/vmlinux.lds.S          |    5 
 linux-2.6.18-rc3-1M-root/arch/powerpc/kernel/vmlinux.lds.S       |    1 
 linux-2.6.18-rc3-1M-root/arch/x86_64/boot/Makefile               |    3 
 linux-2.6.18-rc3-1M-root/arch/x86_64/boot/compressed/vmlinux.lds |    2 
 linux-2.6.18-rc3-1M-root/arch/x86_64/boot/tools/build.c          |  129 +-
 linux-2.6.18-rc3-1M-root/fs/proc/kcore.c                         |    4 
 linux-2.6.18-rc3-1M-root/include/asm-i386/boot.h                 |    6 
 69 files changed, 3400 insertions(+), 1316 deletions(-)

Index: linux-2.6-x86-relocatable.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-x86-relocatable.patch,v
retrieving revision 1.6
retrieving revision 1.6.4.1
diff -u -r1.6 -r1.6.4.1
--- linux-2.6-x86-relocatable.patch	14 Sep 2006 19:21:42 -0000	1.6
+++ linux-2.6-x86-relocatable.patch	20 Sep 2006 17:45:35 -0000	1.6.4.1
@@ -5996,7 +5996,7 @@
  
  #define PAGE_OFFSET		((unsigned long)__PAGE_OFFSET)
  #define VMALLOC_RESERVE		((unsigned long)__VMALLOC_RESERVE)
- #define MAXMEM			(__FIXADDR_TOP-__PAGE_OFFSET-__VMALLOC_RESERVE)
+ #define MAXMEM			(-__PAGE_OFFSET-__VMALLOC_RESERVE)
  #define __pa(x)			((unsigned long)(x)-PAGE_OFFSET)
 +#define __pa_symbol(x)		__pa(x)
  #define __va(x)			((void *)((unsigned long)(x)+PAGE_OFFSET))

linux-2.6-xen.patch:
 arch/i386/Kconfig                                   |   85 
 arch/i386/Kconfig.cpu                               |    4 
 arch/i386/Kconfig.debug                             |    1 
 arch/i386/Makefile                                  |   24 
 arch/i386/boot-xen/Makefile                         |   21 
 arch/i386/kernel/Makefile                           |   21 
 arch/i386/kernel/acpi/Makefile                      |    4 
 arch/i386/kernel/acpi/boot-xen.c                    | 1168 ++++++++
 arch/i386/kernel/alternative.c                      |    8 
 arch/i386/kernel/apic-xen.c                         |  160 +
 arch/i386/kernel/asm-offsets.c                      |    7 
 arch/i386/kernel/cpu/Makefile                       |    5 
 arch/i386/kernel/cpu/common-xen.c                   |  739 +++++
 arch/i386/kernel/cpu/mtrr/Makefile                  |    7 
 arch/i386/kernel/cpu/mtrr/main-xen.c                |  197 +
 arch/i386/kernel/early_printk-xen.c                 |    2 
 arch/i386/kernel/entry-xen.S                        | 1213 ++++++++
 arch/i386/kernel/entry.S                            |    6 
 arch/i386/kernel/fixup.c                            |   92 
 arch/i386/kernel/head-xen.S                         |  200 +
 arch/i386/kernel/init_task-xen.c                    |   51 
 arch/i386/kernel/io_apic-xen.c                      | 2771 ++++++++++++++++++++
 arch/i386/kernel/ioport-xen.c                       |  121 
 arch/i386/kernel/irq-xen.c                          |  324 ++
 arch/i386/kernel/ldt-xen.c                          |  270 +
 arch/i386/kernel/microcode-xen.c                    |  147 +
 arch/i386/kernel/mpparse-xen.c                      | 1185 ++++++++
 arch/i386/kernel/pci-dma-xen.c                      |  379 ++
 arch/i386/kernel/process-xen.c                      |  812 +++++
 arch/i386/kernel/quirks-xen.c                       |   47 
 arch/i386/kernel/setup-xen.c                        | 1830 +++++++++++++
 arch/i386/kernel/smp-xen.c                          |  624 ++++
 arch/i386/kernel/swiotlb.c                          |  672 ++++
 arch/i386/kernel/sysenter.c                         |   22 
 arch/i386/kernel/time-xen.c                         | 1101 +++++++
 arch/i386/kernel/traps-xen.c                        | 1184 ++++++++
 arch/i386/kernel/traps.c                            |    9 
 arch/i386/kernel/tsc.c                              |    2 
 arch/i386/kernel/vm86.c                             |   12 
 arch/i386/kernel/vmlinux.lds.S                      |   12 
 arch/i386/kernel/vsyscall-note-xen.S                |   32 
 arch/i386/lib/delay.c                               |    3 
 arch/i386/mach-xen/Makefile                         |    5 
 arch/i386/mach-xen/irqflags.c                       |   99 
 arch/i386/mach-xen/setup.c                          |  154 +
 arch/i386/mm/Makefile                               |    8 
 arch/i386/mm/fault-xen.c                            |  770 +++++
 arch/i386/mm/highmem-xen.c                          |  133 
 arch/i386/mm/hypervisor.c                           |  457 +++
 arch/i386/mm/init-xen.c                             |  851 ++++++
 arch/i386/mm/ioremap-xen.c                          |  439 +++
 arch/i386/mm/pageattr.c                             |    2 
 arch/i386/mm/pgtable-xen.c                          |  699 +++++
 arch/i386/oprofile/Makefile                         |    4 
 arch/i386/oprofile/xenoprof.c                       |  584 ++++
 arch/i386/pci/Makefile                              |    9 
 arch/i386/pci/irq-xen.c                             | 1206 ++++++++
 arch/i386/pci/pcifront.c                            |   55 
 arch/i386/power/Makefile                            |    4 
 arch/ia64/Kconfig                                   |   60 
 arch/ia64/Makefile                                  |   16 
 arch/ia64/dig/setup.c                               |   17 
 arch/ia64/hp/sim/Makefile                           |    2 
 arch/ia64/kernel/asm-offsets.c                      |   25 
 arch/ia64/kernel/entry.S                            |   32 
 arch/ia64/kernel/gate.S                             |  113 
 arch/ia64/kernel/gate.lds.S                         |   22 
 arch/ia64/kernel/head.S                             |    6 
 arch/ia64/kernel/iosapic.c                          |   65 
 arch/ia64/kernel/irq_ia64.c                         |  259 +
 arch/ia64/kernel/pal.S                              |    5 
 arch/ia64/kernel/patch.c                            |   71 
 arch/ia64/kernel/setup.c                            |  125 
 arch/ia64/mm/ioremap.c                              |    3 
 arch/ia64/xen/Makefile                              |    8 
 arch/ia64/xen/drivers/README                        |    2 
 arch/ia64/xen/hypercall.S                           |  413 ++
 arch/ia64/xen/hypervisor.c                          |  833 ++++++
 arch/ia64/xen/util.c                                |  115 
 arch/ia64/xen/xenentry.S                            |  867 ++++++
 arch/ia64/xen/xenhpski.c                            |   19 
 arch/ia64/xen/xenivt.S                              | 2169 +++++++++++++++
 arch/ia64/xen/xenminstate.h                         |  368 ++
 arch/ia64/xen/xenpal.S                              |   76 
 arch/ia64/xen/xensetup.S                            |   54 
 arch/um/kernel/physmem.c                            |    4 
 arch/x86_64/Kconfig                                 |   63 
 arch/x86_64/Makefile                                |   20 
 arch/x86_64/ia32/Makefile                           |   20 
 arch/x86_64/ia32/ia32entry-xen.S                    |  743 +++++
 arch/x86_64/ia32/syscall32-xen.c                    |  128 
 arch/x86_64/ia32/syscall32_syscall-xen.S            |   28 
 arch/x86_64/ia32/vsyscall-int80.S                   |   58 
 arch/x86_64/ia32/vsyscall-sigreturn.S               |    2 
 arch/x86_64/kernel/Makefile                         |   19 
 arch/x86_64/kernel/acpi/Makefile                    |    1 
 arch/x86_64/kernel/apic-xen.c                       |  197 +
 arch/x86_64/kernel/asm-offsets.c                    |    2 
 arch/x86_64/kernel/e820-xen.c                       |  757 +++++
 arch/x86_64/kernel/early_printk-xen.c               |  304 ++
 arch/x86_64/kernel/entry-xen.S                      | 1213 ++++++++
 arch/x86_64/kernel/genapic-xen.c                    |  143 +
 arch/x86_64/kernel/genapic_xen.c                    |  176 +
 arch/x86_64/kernel/head-xen.S                       |  191 +
 arch/x86_64/kernel/head64-xen.c                     |  161 +
 arch/x86_64/kernel/init_task.c                      |    3 
 arch/x86_64/kernel/io_apic-xen.c                    | 2263 ++++++++++++++++
 arch/x86_64/kernel/ioport-xen.c                     |   99 
 arch/x86_64/kernel/irq-xen.c                        |  198 +
 arch/x86_64/kernel/irqflags-xen.c                   |  100 
 arch/x86_64/kernel/ldt-xen.c                        |  282 ++
 arch/x86_64/kernel/mpparse-xen.c                    | 1011 +++++++
 arch/x86_64/kernel/pci-swiotlb-xen.c                |   54 
 arch/x86_64/kernel/process-xen.c                    |  794 +++++
 arch/x86_64/kernel/setup-xen.c                      | 1638 +++++++++++
 arch/x86_64/kernel/setup64-xen.c                    |  361 ++
 arch/x86_64/kernel/smp-xen.c                        |  600 ++++
 arch/x86_64/kernel/traps-xen.c                      | 1173 ++++++++
 arch/x86_64/kernel/vmlinux.lds.S                    |   31 
 arch/x86_64/kernel/vsyscall-xen.c                   |  239 +
 arch/x86_64/kernel/xen_entry.S                      |   40 
 arch/x86_64/mm/Makefile                             |   10 
 arch/x86_64/mm/fault-xen.c                          |  723 +++++
 arch/x86_64/mm/init-xen.c                           | 1200 ++++++++
 arch/x86_64/mm/pageattr-xen.c                       |  396 ++
 arch/x86_64/oprofile/Makefile                       |    5 
 arch/x86_64/pci/Makefile                            |   12 
 drivers/Makefile                                    |    1 
 drivers/acpi/Kconfig                                |    3 
 drivers/char/hangcheck-timer.c                      |    2 
 drivers/char/mem.c                                  |    6 
 drivers/char/tpm/Kconfig                            |   12 
 drivers/char/tpm/Makefile                           |    2 
 drivers/char/tpm/tpm.c                              |   55 
 drivers/char/tpm/tpm.h                              |    7 
 drivers/char/tpm/tpm_vtpm.c                         |  547 +++
 drivers/char/tpm/tpm_vtpm.h                         |   68 
 drivers/char/tpm/tpm_xen.c                          |  756 +++++
 drivers/char/tty_io.c                               |    7 
 drivers/firmware/Kconfig                            |    2 
 drivers/ide/ide-lib.c                               |    8 
 drivers/oprofile/buffer_sync.c                      |   66 
 drivers/oprofile/cpu_buffer.c                       |   51 
 drivers/oprofile/cpu_buffer.h                       |    9 
 drivers/oprofile/event_buffer.h                     |    7 
 drivers/oprofile/oprof.c                            |   32 
 drivers/oprofile/oprof.h                            |    3 
 drivers/oprofile/oprofile_files.c                   |  207 +
 drivers/pci/Kconfig                                 |    1 
 drivers/serial/Kconfig                              |    1 
 drivers/xen/Kconfig                                 |  260 +
 drivers/xen/Makefile                                |   17 
 drivers/xen/balloon/Makefile                        |    2 
 drivers/xen/balloon/balloon.c                       |  625 ++++
 drivers/xen/blkback/Makefile                        |    3 
 drivers/xen/blkback/blkback.c                       |  567 ++++
 drivers/xen/blkback/common.h                        |  133 
 drivers/xen/blkback/interface.c                     |  171 +
 drivers/xen/blkback/vbd.c                           |  119 
 drivers/xen/blkback/xenbus.c                        |  468 +++
 drivers/xen/blkfront/Kconfig                        |    6 
 drivers/xen/blkfront/Makefile                       |    5 
 drivers/xen/blkfront/blkfront.c                     |  842 ++++++
 drivers/xen/blkfront/block.h                        |  154 +
 drivers/xen/blkfront/vbd.c                          |  318 ++
 drivers/xen/blktap/Makefile                         |    3 
 drivers/xen/blktap/blktap.c                         | 1444 ++++++++++
 drivers/xen/blktap/common.h                         |  120 
 drivers/xen/blktap/interface.c                      |  164 +
 drivers/xen/blktap/xenbus.c                         |  367 ++
 drivers/xen/char/Makefile                           |    2 
 drivers/xen/char/mem.c                              |  180 +
 drivers/xen/console/Makefile                        |    2 
 drivers/xen/console/console.c                       |  688 ++++
 drivers/xen/console/xencons_ring.c                  |  143 +
 drivers/xen/core/Makefile                           |   13 
 drivers/xen/core/cpu_hotplug.c                      |  188 +
 drivers/xen/core/evtchn.c                           |  868 ++++++
 drivers/xen/core/features.c                         |   30 
 drivers/xen/core/gnttab.c                           |  483 +++
 drivers/xen/core/hypervisor_sysfs.c                 |   59 
 drivers/xen/core/reboot.c                           |  384 ++
 drivers/xen/core/skbuff.c                           |  139 +
 drivers/xen/core/smpboot.c                          |  429 +++
 drivers/xen/core/xen_proc.c                         |   18 
 drivers/xen/core/xen_sysfs.c                        |  378 ++
 drivers/xen/evtchn/Makefile                         |    2 
 drivers/xen/evtchn/evtchn.c                         |  456 +++
 drivers/xen/netback/Makefile                        |    5 
 drivers/xen/netback/common.h                        |  141 +
 drivers/xen/netback/interface.c                     |  339 ++
 drivers/xen/netback/loopback.c                      |  260 +
 drivers/xen/netback/netback.c                       | 1498 ++++++++++
 drivers/xen/netback/xenbus.c                        |  473 +++
 drivers/xen/netfront/Kconfig                        |    6 
 drivers/xen/netfront/Makefile                       |    4 
 drivers/xen/netfront/netfront.c                     | 2076 ++++++++++++++
 drivers/xen/pciback/Makefile                        |   15 
 drivers/xen/pciback/conf_space.c                    |  425 +++
 drivers/xen/pciback/conf_space.h                    |  126 
 drivers/xen/pciback/conf_space_capability.c         |   71 
 drivers/xen/pciback/conf_space_capability.h         |   23 
 drivers/xen/pciback/conf_space_capability_pm.c      |  113 
 drivers/xen/pciback/conf_space_capability_vpd.c     |   42 
 drivers/xen/pciback/conf_space_header.c             |  299 ++
 drivers/xen/pciback/conf_space_quirks.c             |  128 
 drivers/xen/pciback/conf_space_quirks.h             |   35 
 drivers/xen/pciback/passthrough.c                   |  157 +
 drivers/xen/pciback/pci_stub.c                      |  916 ++++++
 drivers/xen/pciback/pciback.h                       |   93 
 drivers/xen/pciback/pciback_ops.c                   |   95 
 drivers/xen/pciback/slot.c                          |  151 +
 drivers/xen/pciback/vpci.c                          |  204 +
 drivers/xen/pciback/xenbus.c                        |  458 +++
 drivers/xen/pcifront/Makefile                       |    7 
 drivers/xen/pcifront/pci.c                          |   46 
 drivers/xen/pcifront/pci_op.c                       |  273 +
 drivers/xen/pcifront/pcifront.h                     |   40 
 drivers/xen/pcifront/xenbus.c                       |  295 ++
 drivers/xen/privcmd/Makefile                        |    2 
 drivers/xen/privcmd/privcmd.c                       |  266 +
 drivers/xen/tpmback/Makefile                        |    4 
 drivers/xen/tpmback/common.h                        |   84 
 drivers/xen/tpmback/interface.c                     |  177 +
 drivers/xen/tpmback/tpmback.c                       |  944 ++++++
 drivers/xen/tpmback/xenbus.c                        |  287 ++
 drivers/xen/util.c                                  |   70 
 drivers/xen/xenbus/Makefile                         |   12 
 drivers/xen/xenbus/xenbus_backend_client.c          |  147 +
 drivers/xen/xenbus/xenbus_client.c                  |  299 ++
 drivers/xen/xenbus/xenbus_comms.c                   |  203 +
 drivers/xen/xenbus/xenbus_comms.h                   |   45 
 drivers/xen/xenbus/xenbus_dev.c                     |  356 ++
 drivers/xen/xenbus/xenbus_probe.c                   | 1176 ++++++++
 drivers/xen/xenbus/xenbus_xs.c                      |  853 ++++++
 fs/Kconfig                                          |    1 
 include/asm-generic/vmlinux.lds.h                   |    3 
 include/asm-i386/apic.h                             |    2 
 include/asm-i386/fixmap.h                           |    1 
 include/asm-i386/mach-default/mach_traps.h          |   12 
 include/asm-i386/mach-xen/asm/agp.h                 |   37 
 include/asm-i386/mach-xen/asm/desc.h                |  164 +
 include/asm-i386/mach-xen/asm/dma-mapping.h         |  151 +
 include/asm-i386/mach-xen/asm/fixmap.h              |  156 +
 include/asm-i386/mach-xen/asm/floppy.h              |  147 +
 include/asm-i386/mach-xen/asm/highmem.h             |   80 
 include/asm-i386/mach-xen/asm/hw_irq.h              |   72 
 include/asm-i386/mach-xen/asm/hypercall.h           |  389 ++
 include/asm-i386/mach-xen/asm/hypervisor.h          |  234 +
 include/asm-i386/mach-xen/asm/io.h                  |  389 ++
 include/asm-i386/mach-xen/asm/irqflags.h            |   80 
 include/asm-i386/mach-xen/asm/kmap_types.h          |   31 
 include/asm-i386/mach-xen/asm/maddr.h               |  160 +
 include/asm-i386/mach-xen/asm/mmu.h                 |   29 
 include/asm-i386/mach-xen/asm/mmu_context.h         |  108 
 include/asm-i386/mach-xen/asm/page.h                |  220 +
 include/asm-i386/mach-xen/asm/param.h               |   23 
 include/asm-i386/mach-xen/asm/pci.h                 |  153 +
 include/asm-i386/mach-xen/asm/pgalloc.h             |   63 
 include/asm-i386/mach-xen/asm/pgtable-2level-defs.h |   21 
 include/asm-i386/mach-xen/asm/pgtable-2level.h      |   87 
 include/asm-i386/mach-xen/asm/pgtable-3level-defs.h |   25 
 include/asm-i386/mach-xen/asm/pgtable-3level.h      |  185 +
 include/asm-i386/mach-xen/asm/pgtable.h             |  508 +++
 include/asm-i386/mach-xen/asm/processor.h           |  741 +++++
 include/asm-i386/mach-xen/asm/ptrace.h              |   90 
 include/asm-i386/mach-xen/asm/scatterlist.h         |   22 
 include/asm-i386/mach-xen/asm/segment.h             |  117 
 include/asm-i386/mach-xen/asm/setup.h               |   81 
 include/asm-i386/mach-xen/asm/smp.h                 |  103 
 include/asm-i386/mach-xen/asm/spinlock.h            |  202 +
 include/asm-i386/mach-xen/asm/swiotlb.h             |   41 
 include/asm-i386/mach-xen/asm/synch_bitops.h        |  141 +
 include/asm-i386/mach-xen/asm/system.h              |  491 +++
 include/asm-i386/mach-xen/asm/timer.h               |   70 
 include/asm-i386/mach-xen/asm/tlbflush.h            |  101 
 include/asm-i386/mach-xen/asm/vga.h                 |   20 
 include/asm-i386/mach-xen/irq_vectors.h             |  125 
 include/asm-i386/mach-xen/mach_traps.h              |   33 
 include/asm-i386/mach-xen/setup_arch.h              |    5 
 include/asm-i386/pgtable-2level-defs.h              |    2 
 include/asm-i386/pgtable-3level-defs.h              |    2 
 include/asm-ia64/agp.h                              |   44 
 include/asm-ia64/dma-mapping.h                      |  100 
 include/asm-ia64/fixmap.h                           |    2 
 include/asm-ia64/gcc_intrin.h                       |   60 
 include/asm-ia64/hw_irq.h                           |   10 
 include/asm-ia64/hypercall.h                        |  423 +++
 include/asm-ia64/hypervisor.h                       |  218 +
 include/asm-ia64/intel_intrin.h                     |   68 
 include/asm-ia64/io.h                               |   34 
 include/asm-ia64/iosapic.h                          |    2 
 include/asm-ia64/irq.h                              |   31 
 include/asm-ia64/machvec_dig.h                      |   15 
 include/asm-ia64/maddr.h                            |   92 
 include/asm-ia64/meminit.h                          |    5 
 include/asm-ia64/page.h                             |   50 
 include/asm-ia64/pal.h                              |    1 
 include/asm-ia64/pgalloc.h                          |    4 
 include/asm-ia64/privop.h                           |   59 
 include/asm-ia64/processor.h                        |    1 
 include/asm-ia64/synch_bitops.h                     |   61 
 include/asm-ia64/system.h                           |    4 
 include/asm-ia64/xen/privop.h                       |  304 ++
 include/asm-um/page.h                               |    2 
 include/asm-x86_64/apic.h                           |    2 
 include/asm-x86_64/ipi.h                            |    2 
 include/asm-x86_64/mach-xen/asm/arch_hooks.h        |   27 
 include/asm-x86_64/mach-xen/asm/bootsetup.h         |   42 
 include/asm-x86_64/mach-xen/asm/desc.h              |  263 +
 include/asm-x86_64/mach-xen/asm/dma-mapping.h       |  208 +
 include/asm-x86_64/mach-xen/asm/dmi.h               |   29 
 include/asm-x86_64/mach-xen/asm/e820.h              |   64 
 include/asm-x86_64/mach-xen/asm/fixmap.h            |  113 
 include/asm-x86_64/mach-xen/asm/floppy.h            |  206 +
 include/asm-x86_64/mach-xen/asm/hw_irq.h            |  136 
 include/asm-x86_64/mach-xen/asm/hypercall.h         |  389 ++
 include/asm-x86_64/mach-xen/asm/hypervisor.h        |    2 
 include/asm-x86_64/mach-xen/asm/io.h                |  327 ++
 include/asm-x86_64/mach-xen/asm/irq.h               |   38 
 include/asm-x86_64/mach-xen/asm/irqflags.h          |   65 
 include/asm-x86_64/mach-xen/asm/maddr.h             |  139 +
 include/asm-x86_64/mach-xen/asm/mmu.h               |   38 
 include/asm-x86_64/mach-xen/asm/mmu_context.h       |  135 
 include/asm-x86_64/mach-xen/asm/msr.h               |  399 ++
 include/asm-x86_64/mach-xen/asm/nmi.h               |   93 
 include/asm-x86_64/mach-xen/asm/page.h              |  208 +
 include/asm-x86_64/mach-xen/asm/param.h             |   22 
 include/asm-x86_64/mach-xen/asm/pci.h               |  173 +
 include/asm-x86_64/mach-xen/asm/pgalloc.h           |  226 +
 include/asm-x86_64/mach-xen/asm/pgtable.h           |  558 ++++
 include/asm-x86_64/mach-xen/asm/processor.h         |  504 +++
 include/asm-x86_64/mach-xen/asm/ptrace.h            |  125 
 include/asm-x86_64/mach-xen/asm/smp.h               |  150 +
 include/asm-x86_64/mach-xen/asm/synch_bitops.h      |    2 
 include/asm-x86_64/mach-xen/asm/system.h            |  264 +
 include/asm-x86_64/mach-xen/asm/timer.h             |   67 
 include/asm-x86_64/mach-xen/asm/tlbflush.h          |  103 
 include/asm-x86_64/mach-xen/asm/vga.h               |   20 
 include/asm-x86_64/mach-xen/asm/xor.h               |  328 ++
 include/asm-x86_64/mach-xen/irq_vectors.h           |  123 
 include/asm-x86_64/mach-xen/mach_time.h             |  111 
 include/asm-x86_64/mach-xen/mach_timer.h            |   48 
 include/asm-x86_64/mach-xen/setup_arch_post.h       |   58 
 include/asm-x86_64/mach-xen/setup_arch_pre.h        |    5 
 include/linux/elfnote.h                             |   90 
 include/linux/gfp.h                                 |    6 
 include/linux/highmem.h                             |    6 
 include/linux/interrupt.h                           |    6 
 include/linux/mm.h                                  |   10 
 include/linux/oprofile.h                            |   11 
 include/linux/skbuff.h                              |   15 
 include/xen/balloon.h                               |   67 
 include/xen/cpu_hotplug.h                           |   43 
 include/xen/driver_util.h                           |   15 
 include/xen/evtchn.h                                |  113 
 include/xen/features.h                              |   20 
 include/xen/foreign_page.h                          |   30 
 include/xen/gnttab.h                                |  150 +
 include/xen/hvm.h                                   |   24 
 include/xen/hypervisor_sysfs.h                      |   32 
 include/xen/interface/acm.h                         |  187 +
 include/xen/interface/acm_ops.h                     |  102 
 include/xen/interface/arch-ia64.h                   |  448 +++
 include/xen/interface/arch-powerpc.h                |  115 
 include/xen/interface/arch-x86_32.h                 |  255 +
 include/xen/interface/arch-x86_64.h                 |  322 ++
 include/xen/interface/callback.h                    |   74 
 include/xen/interface/dom0_ops.h                    |  102 
 include/xen/interface/domctl.h                      |  392 ++
 include/xen/interface/elfnote.h                     |  133 
 include/xen/interface/event_channel.h               |  233 +
 include/xen/interface/features.h                    |   53 
 include/xen/interface/grant_table.h                 |  362 ++
 include/xen/interface/hvm/e820.h                    |   32 
 include/xen/interface/hvm/hvm_info_table.h          |   22 
 include/xen/interface/hvm/ioreq.h                   |   99 
 include/xen/interface/hvm/params.h                  |   24 
 include/xen/interface/hvm/vmx_assist.h              |   98 
 include/xen/interface/io/blkif.h                    |   87 
 include/xen/interface/io/console.h                  |   33 
 include/xen/interface/io/netif.h                    |  166 +
 include/xen/interface/io/pciif.h                    |   55 
 include/xen/interface/io/ring.h                     |  273 +
 include/xen/interface/io/tpmif.h                    |   59 
 include/xen/interface/io/xenbus.h                   |   45 
 include/xen/interface/io/xs_wire.h                  |   97 
 include/xen/interface/memory.h                      |  243 +
 include/xen/interface/nmi.h                         |   60 
 include/xen/interface/physdev.h                     |  149 +
 include/xen/interface/platform.h                    |  125 
 include/xen/interface/sched.h                       |  103 
 include/xen/interface/sysctl.h                      |  151 +
 include/xen/interface/trace.h                       |   87 
 include/xen/interface/vcpu.h                        |  121 
 include/xen/interface/version.h                     |   73 
 include/xen/interface/xen-compat.h                  |   26 
 include/xen/interface/xen.h                         |  581 ++++
 include/xen/interface/xencomm.h                     |   37 
 include/xen/interface/xenoprof.h                    |  110 
 include/xen/pcifront.h                              |   76 
 include/xen/public/evtchn.h                         |   91 
 include/xen/public/privcmd.h                        |   79 
 include/xen/xen_proc.h                              |   12 
 include/xen/xenbus.h                                |  306 ++
 include/xen/xencons.h                               |   17 
 kernel/Kconfig.preempt                              |    1 
 kernel/fork.c                                       |    3 
 kernel/irq/manage.c                                 |    1 
 lib/Kconfig.debug                                   |    2 
 lib/Makefile                                        |    3 
 mm/Kconfig                                          |    3 
 mm/highmem.c                                        |   11 
 mm/memory.c                                         |  118 
 mm/mmap.c                                           |    4 
 mm/page_alloc.c                                     |    6 
 net/core/dev.c                                      |   63 
 net/core/skbuff.c                                   |   27 
 net/ipv4/netfilter/ip_nat_proto_tcp.c               |    7 
 net/ipv4/netfilter/ip_nat_proto_udp.c               |    7 
 net/ipv4/xfrm4_output.c                             |    6 
 net/ipv6/addrconf.c                                 |    2 
 scripts/Makefile.xen                                |   14 
 423 files changed, 88433 insertions(+), 220 deletions(-)

Index: linux-2.6-xen.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-xen.patch,v
retrieving revision 1.67
retrieving revision 1.67.2.1
diff -u -r1.67 -r1.67.2.1
--- linux-2.6-xen.patch	17 Sep 2006 21:28:08 -0000	1.67
+++ linux-2.6-xen.patch	20 Sep 2006 17:45:35 -0000	1.67.2.1
@@ -1,5 +1,5 @@
-- linux-2.6 changeset: 34228:ea3369ba1e2c
-- linux-2.6-xen-fedora changeset: 36107:47256dbb1583
+- linux-2.6 changeset: 34288:3fa5ab23fee7
+- linux-2.6-xen-fedora changeset: 36175:275f8c0b6342
 - linux-2.6-xen changeset: 22905:d8ae02f7df05
 - xen-unstable changeset: 11460:1ece34466781ec55f41fd29d53f6dafd208ba2fa
 diff -urNp --exclude='.hg*' --exclude='*.orig' --exclude='*~' linux-2.6/arch/i386/boot-xen/Makefile linux-2.6-xen-fedora/arch/i386/boot-xen/Makefile
@@ -2710,9 +2710,9 @@
 +
 +#include "../../x86_64/kernel/early_printk-xen.c"
 diff -urNp --exclude='.hg*' --exclude='*.orig' --exclude='*~' linux-2.6/arch/i386/kernel/entry.S linux-2.6-xen-fedora/arch/i386/kernel/entry.S
---- linux-2.6/arch/i386/kernel/entry.S	2006-08-28 13:44:28.000000000 +0200
-+++ linux-2.6-xen-fedora/arch/i386/kernel/entry.S	2006-08-30 00:03:17.000000000 +0200
-@@ -265,7 +265,7 @@ ENTRY(sysenter_entry)
+--- linux-2.6/arch/i386/kernel/entry.S	2006-09-19 14:26:26.000000000 +0200
++++ linux-2.6-xen-fedora/arch/i386/kernel/entry.S	2006-09-20 00:44:44.000000000 +0200
+@@ -269,7 +269,7 @@ ENTRY(sysenter_entry)
  	CFI_STARTPROC simple
  	CFI_DEF_CFA esp, 0
  	CFI_REGISTER esp, ebp
@@ -2721,7 +2721,7 @@
  sysenter_past_esp:
  	/*
  	 * No need to follow this irqs on/off section: the syscall
-@@ -685,7 +685,7 @@ device_not_available_emulate:
+@@ -689,7 +689,7 @@ device_not_available_emulate:
   * that sets up the real kernel stack. Check here, since we can't
   * allow the wrong stack to be used.
   *
@@ -2730,7 +2730,7 @@
   * already pushed 3 words if it hits on the sysenter instruction:
   * eflags, cs and eip.
   *
-@@ -697,7 +697,7 @@ device_not_available_emulate:
+@@ -701,7 +701,7 @@ device_not_available_emulate:
  	cmpw $__KERNEL_CS,4(%esp);		\
  	jne ok;					\
  label:						\
@@ -2741,8 +2741,8 @@
  	pushl $sysenter_past_esp
 diff -urNp --exclude='.hg*' --exclude='*.orig' --exclude='*~' linux-2.6/arch/i386/kernel/entry-xen.S linux-2.6-xen-fedora/arch/i386/kernel/entry-xen.S
 --- linux-2.6/arch/i386/kernel/entry-xen.S	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6-xen-fedora/arch/i386/kernel/entry-xen.S	2006-08-04 16:21:32.000000000 +0200
-@@ -0,0 +1,1209 @@
++++ linux-2.6-xen-fedora/arch/i386/kernel/entry-xen.S	2006-09-20 00:44:44.000000000 +0200
+@@ -0,0 +1,1213 @@
 +/*
 + *  linux/arch/i386/entry.S
 + *
@@ -2984,6 +2984,10 @@
 +	GET_THREAD_INFO(%ebp)
 +	popl %eax
 +	CFI_ADJUST_CFA_OFFSET -4
++	pushl $0x0202			# Reset kernel eflags
++	CFI_ADJUST_CFA_OFFSET 4
++	popfl
++	CFI_ADJUST_CFA_OFFSET -4
 +	jmp syscall_exit
 +	CFI_ENDPROC
 +
@@ -10447,8 +10451,8 @@
 +#endif
 diff -urNp --exclude='.hg*' --exclude='*.orig' --exclude='*~' linux-2.6/arch/i386/kernel/setup-xen.c linux-2.6-xen-fedora/arch/i386/kernel/setup-xen.c
 --- linux-2.6/arch/i386/kernel/setup-xen.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6-xen-fedora/arch/i386/kernel/setup-xen.c	2006-09-01 16:16:24.000000000 +0200
-@@ -0,0 +1,1815 @@
++++ linux-2.6-xen-fedora/arch/i386/kernel/setup-xen.c	2006-09-20 00:44:44.000000000 +0200
+@@ -0,0 +1,1830 @@
 +/*
 + *  linux/arch/i386/kernel/setup.c
 + *
@@ -10514,6 +10518,7 @@
 +#include <xen/interface/physdev.h>
 +#include <xen/interface/memory.h>
 +#include <xen/features.h>
++#include <xen/xencons.h>
 +#include "setup_arch.h"
 +#include <bios_ebda.h>
 +
@@ -11456,6 +11461,38 @@
 +	return 0;
 +}
 +
++ /*
++  * This function checks if the entire range <start,end> is mapped with type.
++  *
++  * Note: this function only works correct if the e820 table is sorted and
++  * not-overlapping, which is the case
++  */
++int __init
++e820_all_mapped(unsigned long s, unsigned long e, unsigned type)
++{
++	u64 start = s;
++	u64 end = e;
++	int i;
++	for (i = 0; i < e820.nr_map; i++) {
++		struct e820entry *ei = &e820.map[i];
++		if (type && ei->type != type)
++			continue;
++		/* is the region (part) in overlap with the current region ?*/
++		if (ei->addr >= end || ei->addr + ei->size <= start)
++			continue;
++		/* if the region is at the beginning of <start,end> we move
++		 * start to the end of the region since it's ok until there
++		 */
++		if (ei->addr <= start)
++			start = ei->addr + ei->size;
++		/* if start is now at or beyond end, we're done, full
++		 * coverage */
++		if (start >= end)
++			return 1; /* we're done */
++	}
++	return 0;
++}
++
 +/*
 + * Find the highest page frame number we have available
 + */
@@ -12019,33 +12056,15 @@
 +		screen_info.orig_video_cols = 80;
 +		screen_info.orig_video_ega_bx = 3;
 +		screen_info.orig_video_points = 16;
++		screen_info.orig_y = screen_info.orig_video_lines - 1;
 +		if (xen_start_info->console.dom0.info_size >=
 +		    sizeof(struct dom0_vga_console_info)) {
 +			const struct dom0_vga_console_info *info =
 +				(struct dom0_vga_console_info *)(
 +					(char *)xen_start_info +
 +					xen_start_info->console.dom0.info_off);
-+			screen_info.orig_video_mode = info->txt_mode;
-+			screen_info.orig_video_isVGA = info->video_type;
-+			screen_info.orig_video_lines = info->video_height;
-+			screen_info.orig_video_cols = info->video_width;
-+			screen_info.orig_video_points = info->txt_points;
-+			screen_info.lfb_width = info->video_width;
-+			screen_info.lfb_height = info->video_height;
-+			screen_info.lfb_depth = info->lfb_depth;
-+			screen_info.lfb_base = info->lfb_base;
-+			screen_info.lfb_size = info->lfb_size;
-+			screen_info.lfb_linelength = info->lfb_linelen;
-+			screen_info.red_size = info->red_size;
-+			screen_info.red_pos = info->red_pos;
-+			screen_info.green_size = info->green_size;
-+			screen_info.green_pos = info->green_pos;
-+			screen_info.blue_size = info->blue_size;
-+			screen_info.blue_pos = info->blue_pos;
-+			screen_info.rsvd_size = info->rsvd_size;
-+			screen_info.rsvd_pos = info->rsvd_pos;
++			dom0_init_screen_info(info);
 +		}
-+		screen_info.orig_y = screen_info.orig_video_lines - 1;
 +		xen_start_info->console.domU.mfn = 0;
 +		xen_start_info->console.domU.evtchn = 0;
 +	} else
@@ -16233,8 +16252,8 @@
 +obj-y				:= setup.o irqflags.o
 diff -urNp --exclude='.hg*' --exclude='*.orig' --exclude='*~' linux-2.6/arch/i386/mach-xen/setup.c linux-2.6-xen-fedora/arch/i386/mach-xen/setup.c
 --- linux-2.6/arch/i386/mach-xen/setup.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6-xen-fedora/arch/i386/mach-xen/setup.c	2006-08-13 01:28:21.000000000 +0200
-@@ -0,0 +1,153 @@
++++ linux-2.6-xen-fedora/arch/i386/mach-xen/setup.c	2006-09-19 14:16:07.000000000 +0200
+@@ -0,0 +1,154 @@
 +/*
 + *	Machine specific setup for generic
 + */
@@ -16247,6 +16266,7 @@
 +#include <asm/arch_hooks.h>
 +#include <asm/e820.h>
 +#include <asm/setup.h>
++#include <asm/fixmap.h>
 +
 +#include <xen/interface/callback.h>
 +#include <xen/interface/memory.h>
@@ -21753,8 +21773,17 @@
  obj-$(CONFIG_SOFTWARE_SUSPEND)	+= swsusp.o
 diff -urNp --exclude='.hg*' --exclude='*.orig' --exclude='*~' linux-2.6/arch/ia64/dig/setup.c linux-2.6-xen-fedora/arch/ia64/dig/setup.c
 --- linux-2.6/arch/ia64/dig/setup.c	2006-07-13 00:51:19.000000000 +0200
-+++ linux-2.6-xen-fedora/arch/ia64/dig/setup.c	2006-09-01 00:17:33.000000000 +0200
-@@ -67,4 +67,38 @@ dig_setup (char **cmdline_p)
++++ linux-2.6-xen-fedora/arch/ia64/dig/setup.c	2006-09-20 00:44:44.000000000 +0200
+@@ -24,6 +24,8 @@
+ #include <asm/machvec.h>
+ #include <asm/system.h>
+ 
++#include <xen/xencons.h>
++
+ void __init
+ dig_setup (char **cmdline_p)
+ {
+@@ -67,4 +69,19 @@ dig_setup (char **cmdline_p)
  	screen_info.orig_video_mode = 3;	/* XXX fake */
  	screen_info.orig_video_isVGA = 1;	/* XXX fake */
  	screen_info.orig_video_ega_bx = 3;	/* XXX fake */
@@ -21768,27 +21797,8 @@
 +		        (struct dom0_vga_console_info *)(
 +		                (char *)xen_start_info +
 +		                xen_start_info->console.dom0.info_off);
-+		screen_info.orig_video_mode = info->txt_mode;
-+		screen_info.orig_video_isVGA = info->video_type;
-+		screen_info.orig_video_lines = info->video_height;
-+		screen_info.orig_video_cols = info->video_width;
-+		screen_info.orig_video_points = info->txt_points;
-+		screen_info.lfb_width = info->video_width;
-+		screen_info.lfb_height = info->video_height;
-+		screen_info.lfb_depth = info->lfb_depth;
-+		screen_info.lfb_base = info->lfb_base;
-+		screen_info.lfb_size = info->lfb_size;
-+		screen_info.lfb_linelength = info->lfb_linelen;
-+		screen_info.red_size = info->red_size;
-+		screen_info.red_pos = info->red_pos;
-+		screen_info.green_size = info->green_size;
-+		screen_info.green_pos = info->green_pos;
-+		screen_info.blue_size = info->blue_size;
-+		screen_info.blue_pos = info->blue_pos;
-+		screen_info.rsvd_size = info->rsvd_size;
-+		screen_info.rsvd_pos = info->rsvd_pos;
++		dom0_init_screen_info(info);
 +	}
-+	screen_info.orig_y = screen_info.orig_video_lines - 1;
 +	xen_start_info->console.domU.mfn = 0;
 +	xen_start_info->console.domU.evtchn = 0;
 +#endif
@@ -29452,8 +29462,8 @@
  	return 0;
 diff -urNp --exclude='.hg*' --exclude='*.orig' --exclude='*~' linux-2.6/arch/x86_64/kernel/e820-xen.c linux-2.6-xen-fedora/arch/x86_64/kernel/e820-xen.c
 --- linux-2.6/arch/x86_64/kernel/e820-xen.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6-xen-fedora/arch/x86_64/kernel/e820-xen.c	2006-09-01 16:16:25.000000000 +0200
-@@ -0,0 +1,728 @@
++++ linux-2.6-xen-fedora/arch/x86_64/kernel/e820-xen.c	2006-09-20 00:44:45.000000000 +0200
+@@ -0,0 +1,757 @@
 +/* 
 + * Handle the memory map.
 + * The functions here do the job until bootmem takes over.
@@ -29572,6 +29582,35 @@
 +	return 0;
 +}
 +
++/*
++ * This function checks if the entire range <start,end> is mapped with type.
++ *
++ * Note: this function only works correct if the e820 table is sorted and
++ * not-overlapping, which is the case
++ */
++int __init e820_all_mapped(unsigned long start, unsigned long end, unsigned type)
++{
++	int i;
++	for (i = 0; i < e820.nr_map; i++) {
++		struct e820entry *ei = &e820.map[i];
++		if (type && ei->type != type)
++			continue;
++		/* is the region (part) in overlap with the current region ?*/
++		if (ei->addr >= end || ei->addr + ei->size <= start)
++			continue;
++
++		/* if the region is at the beginning of <start,end> we move
++		 * start to the end of the region since it's ok until there
++		 */
++		if (ei->addr <= start)
++			start = ei->addr + ei->size;
++		/* if start is now at or beyond end, we're done, full coverage */
++		if (start >= end)
++			return 1; /* we're done */
++	}
++	return 0;
++}
++
 +/* 
 + * Find a free area in a specific range. 
 + */ 
@@ -37651,8 +37690,8 @@
 +}
 diff -urNp --exclude='.hg*' --exclude='*.orig' --exclude='*~' linux-2.6/arch/x86_64/kernel/setup-xen.c linux-2.6-xen-fedora/arch/x86_64/kernel/setup-xen.c
 --- linux-2.6/arch/x86_64/kernel/setup-xen.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6-xen-fedora/arch/x86_64/kernel/setup-xen.c	2006-09-01 16:16:25.000000000 +0200
-@@ -0,0 +1,1655 @@
++++ linux-2.6-xen-fedora/arch/x86_64/kernel/setup-xen.c	2006-09-20 00:44:45.000000000 +0200
+@@ -0,0 +1,1638 @@
 +/*
 + *  linux/arch/x86-64/kernel/setup.c
 + *
@@ -37726,6 +37765,7 @@
 +#include <asm/hypervisor.h>
 +#include <xen/interface/nmi.h>
 +#include <xen/features.h>
++#include <xen/xencons.h>
 +#define PFN_UP(x)       (((x) + PAGE_SIZE-1) >> PAGE_SHIFT)
 +#define PFN_PHYS(x)     ((x) << PAGE_SHIFT)
 +#include <asm/mach-xen/setup_arch_post.h>
@@ -38250,33 +38290,15 @@
 +		screen_info.orig_video_cols = 80;
 +		screen_info.orig_video_ega_bx = 3;
 +		screen_info.orig_video_points = 16;
++		screen_info.orig_y = screen_info.orig_video_lines - 1;
 +		if (xen_start_info->console.dom0.info_size >=
 +		    sizeof(struct dom0_vga_console_info)) {
 +			const struct dom0_vga_console_info *info =
 +				(struct dom0_vga_console_info *)(
 +					(char *)xen_start_info +
 +					xen_start_info->console.dom0.info_off);
-+			screen_info.orig_video_mode = info->txt_mode;
-+			screen_info.orig_video_isVGA = info->video_type;
-+			screen_info.orig_video_lines = info->video_height;
-+			screen_info.orig_video_cols = info->video_width;
-+			screen_info.orig_video_points = info->txt_points;
-+			screen_info.lfb_width = info->video_width;
-+			screen_info.lfb_height = info->video_height;
-+			screen_info.lfb_depth = info->lfb_depth;
-+			screen_info.lfb_base = info->lfb_base;
-+			screen_info.lfb_size = info->lfb_size;
-+			screen_info.lfb_linelength = info->lfb_linelen;
-+			screen_info.red_size = info->red_size;
-+			screen_info.red_pos = info->red_pos;
-+			screen_info.green_size = info->green_size;
-+			screen_info.green_pos = info->green_pos;
-+			screen_info.blue_size = info->blue_size;
-+			screen_info.blue_pos = info->blue_pos;
-+			screen_info.rsvd_size = info->rsvd_size;
-+			screen_info.rsvd_pos = info->rsvd_pos;
++			dom0_init_screen_info(info);
 +		}
-+		screen_info.orig_y = screen_info.orig_video_lines - 1;
 +		xen_start_info->console.domU.mfn = 0;
 +		xen_start_info->console.domU.evtchn = 0;
 +	} else
@@ -52003,8 +52025,8 @@
 +};
 diff -urNp --exclude='.hg*' --exclude='*.orig' --exclude='*~' linux-2.6/drivers/xen/console/console.c linux-2.6-xen-fedora/drivers/xen/console/console.c
 --- linux-2.6/drivers/xen/console/console.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6-xen-fedora/drivers/xen/console/console.c	2006-09-16 01:08:18.000000000 +0200
-@@ -0,0 +1,652 @@
++++ linux-2.6-xen-fedora/drivers/xen/console/console.c	2006-09-20 00:44:45.000000000 +0200
+@@ -0,0 +1,688 @@
 +/******************************************************************************
 + * console.c
 + * 
@@ -52056,6 +52078,7 @@
 +#include <linux/console.h>
 +#include <linux/bootmem.h>
 +#include <linux/sysrq.h>
++#include <linux/screen_info.h>
 +#include <asm/io.h>
 +#include <asm/irq.h>
 +#include <asm/uaccess.h>
@@ -52273,6 +52296,41 @@
 +}
 +
 +
++void dom0_init_screen_info(const struct dom0_vga_console_info *info)
++{
++	switch (info->video_type) {
++	case XEN_VGATYPE_TEXT_MODE_3:
++		screen_info.orig_video_mode = 3;
++		screen_info.orig_video_ega_bx = 3;
++		screen_info.orig_video_isVGA = 1;
++		screen_info.orig_video_lines = info->u.text_mode_3.rows;
++		screen_info.orig_video_cols = info->u.text_mode_3.columns;
++		screen_info.orig_x = info->u.text_mode_3.cursor_x;
++		screen_info.orig_y = info->u.text_mode_3.cursor_y;
++		screen_info.orig_video_points =
++			info->u.text_mode_3.font_height;
++		break;
++	case XEN_VGATYPE_VESA_LFB:
++		screen_info.orig_video_isVGA = VIDEO_TYPE_VLFB;
++		screen_info.lfb_width = info->u.vesa_lfb.width;
++		screen_info.lfb_height = info->u.vesa_lfb.height;
++		screen_info.lfb_depth = info->u.vesa_lfb.bits_per_pixel;
++		screen_info.lfb_base = info->u.vesa_lfb.lfb_base;
++		screen_info.lfb_size = info->u.vesa_lfb.lfb_size;
++		screen_info.lfb_linelength = info->u.vesa_lfb.bytes_per_line;
++		screen_info.red_size = info->u.vesa_lfb.red_size;
++		screen_info.red_pos = info->u.vesa_lfb.red_pos;
++		screen_info.green_size = info->u.vesa_lfb.green_size;
++		screen_info.green_pos = info->u.vesa_lfb.green_pos;
++		screen_info.blue_size = info->u.vesa_lfb.blue_size;
++		screen_info.blue_pos = info->u.vesa_lfb.blue_pos;
++		screen_info.rsvd_size = info->u.vesa_lfb.rsvd_size;
++		screen_info.rsvd_pos = info->u.vesa_lfb.rsvd_pos;
++		break;
++	}
++}
++
++
 +/******************** User-space console driver (/dev/console) ************/
 +
 +#define DRV(_d)         (_d)
@@ -75775,8 +75833,8 @@
 +#endif /* __XEN_SYNCH_BITOPS_H__ */
 diff -urNp --exclude='.hg*' --exclude='*.orig' --exclude='*~' linux-2.6/include/asm-i386/mach-xen/asm/system.h linux-2.6-xen-fedora/include/asm-i386/mach-xen/asm/system.h
 --- linux-2.6/include/asm-i386/mach-xen/asm/system.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6-xen-fedora/include/asm-i386/mach-xen/asm/system.h	2006-08-30 17:53:05.000000000 +0200
-@@ -0,0 +1,489 @@
++++ linux-2.6-xen-fedora/include/asm-i386/mach-xen/asm/system.h	2006-09-20 00:44:45.000000000 +0200
+@@ -0,0 +1,491 @@
 +#ifndef __ASM_SYSTEM_H
 +#define __ASM_SYSTEM_H
 +
@@ -75800,7 +75858,8 @@
 +
 +#define switch_to(prev,next,last) do {					\
 +	unsigned long esi,edi;						\
-+	asm volatile("pushl %%ebp\n\t"					\
++	asm volatile("pushfl\n\t"		/* Save flags */	\
++		     "pushl %%ebp\n\t"					\
 +		     "movl %%esp,%0\n\t"	/* save ESP */		\
 +		     "movl %5,%%esp\n\t"	/* restore ESP */	\
 +		     "movl $1f,%1\n\t"		/* save EIP */		\
@@ -75808,6 +75867,7 @@
 +		     "jmp __switch_to\n"				\
 +		     "1:\t"						\
 +		     "popl %%ebp\n\t"					\
++		     "popfl"						\
 +		     :"=m" (prev->thread.esp),"=m" (prev->thread.eip),	\
 +		      "=a" (last),"=S" (esi),"=D" (edi)			\
 +		     :"m" (next->thread.esp),"m" (next->thread.eip),	\
@@ -78697,6 +78757,24 @@
  
  #endif /* CONFIG_X86_LOCAL_APIC */
  
+diff -urNp --exclude='.hg*' --exclude='*.orig' --exclude='*~' linux-2.6/include/asm-x86_64/ipi.h linux-2.6-xen-fedora/include/asm-x86_64/ipi.h
+--- linux-2.6/include/asm-x86_64/ipi.h	2006-07-13 00:51:39.000000000 +0200
++++ linux-2.6-xen-fedora/include/asm-x86_64/ipi.h	2006-09-19 14:16:07.000000000 +0200
+@@ -49,6 +49,7 @@ static inline int __prepare_ICR2 (unsign
+ 	return SET_APIC_DEST_FIELD(mask);
+ }
+ 
++#ifndef CONFIG_XEN_UNPRIVILEGED_GUEST
+ static inline void __send_IPI_shortcut(unsigned int shortcut, int vector, unsigned int dest)
+ {
+ 	/*
+@@ -113,5 +114,6 @@ static inline void send_IPI_mask_sequenc
+ 	}
+ 	local_irq_restore(flags);
+ }
++#endif /* CONFIG_XEN_UNPRIVILEGED_GUEST */
+ 
+ #endif /* __ASM_IPI_H */
 diff -urNp --exclude='.hg*' --exclude='*.orig' --exclude='*~' linux-2.6/include/asm-x86_64/mach-xen/asm/arch_hooks.h linux-2.6-xen-fedora/include/asm-x86_64/mach-xen/asm/arch_hooks.h
 --- linux-2.6/include/asm-x86_64/mach-xen/asm/arch_hooks.h	1970-01-01 01:00:00.000000000 +0100
 +++ linux-2.6-xen-fedora/include/asm-x86_64/mach-xen/asm/arch_hooks.h	2006-07-26 16:46:35.000000000 +0200
@@ -90642,8 +90720,8 @@
 +#endif /* __XEN_PUBLIC_XEN_COMPAT_H__ */
 diff -urNp --exclude='.hg*' --exclude='*.orig' --exclude='*~' linux-2.6/include/xen/interface/xen.h linux-2.6-xen-fedora/include/xen/interface/xen.h
 --- linux-2.6/include/xen/interface/xen.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6-xen-fedora/include/xen/interface/xen.h	2006-09-01 00:17:34.000000000 +0200
-@@ -0,0 +1,569 @@
++++ linux-2.6-xen-fedora/include/xen/interface/xen.h	2006-09-20 00:44:45.000000000 +0200
+@@ -0,0 +1,581 @@
 +/******************************************************************************
 + * xen.h
 + * 
@@ -91163,25 +91241,37 @@
 +#define SIF_INITDOMAIN    (1<<1)  /* Is this the initial control domain? */
 +
 +typedef struct dom0_vga_console_info {
-+    uint8_t video_type;
-+    uint8_t txt_points;
-+    uint16_t txt_mode;
-+    uint16_t txt_x;
-+    uint16_t txt_y;
-+    uint16_t video_width;
-+    uint16_t video_height;
-+    uint16_t lfb_linelen;
-+    uint16_t lfb_depth;
-+    unsigned long lfb_base;
-+    unsigned long lfb_size;
-+    uint8_t red_pos;
-+    uint8_t red_size;
-+    uint8_t green_pos;
-+    uint8_t green_size;
-+    uint8_t blue_pos;
-+    uint8_t blue_size;
-+    uint8_t rsvd_pos;
-+    uint8_t rsvd_size;
++    uint8_t video_type; /* DOM0_VGA_CONSOLE_??? */
++#define XEN_VGATYPE_TEXT_MODE_3 0x03
++#define XEN_VGATYPE_VESA_LFB    0x23
++
++    union {
++        struct {
++            /* Font height, in pixels. */
++            uint16_t font_height;
++            /* Cursor location (column, row). */
++            uint16_t cursor_x, cursor_y;
++            /* Number of rows and columns (dimensions in characters). */
++            uint16_t rows, columns;
++        } text_mode_3;
++
++        struct {
++            /* Width and height, in pixels. */
++            uint16_t width, height;
++            /* Bytes per scan line. */
++            uint16_t bytes_per_line;
++            /* Bits per pixel. */
++            uint16_t bits_per_pixel;
++            /* LFB physical address, and size (in units of 64kB). */
++            uint32_t lfb_base;
++            uint32_t lfb_size;
++            /* RGB mask offsets and sizes, as defined by VBE 1.2+ */
++            uint8_t  red_pos, red_size;
++            uint8_t  green_pos, green_size;
++            uint8_t  blue_pos, blue_size;
++            uint8_t  rsvd_pos, rsvd_size;
++        } vesa_lfb;
++    } u;
 +} dom0_vga_console_info_t;
 +
 +typedef uint8_t xen_domain_handle_t[16];
@@ -91897,11 +91987,14 @@
 +#endif /* _XEN_XENBUS_H */
 diff -urNp --exclude='.hg*' --exclude='*.orig' --exclude='*~' linux-2.6/include/xen/xencons.h linux-2.6-xen-fedora/include/xen/xencons.h
 --- linux-2.6/include/xen/xencons.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6-xen-fedora/include/xen/xencons.h	2006-07-26 16:46:37.000000000 +0200
-@@ -0,0 +1,14 @@
++++ linux-2.6-xen-fedora/include/xen/xencons.h	2006-09-20 00:44:46.000000000 +0200
+@@ -0,0 +1,17 @@
 +#ifndef __ASM_XENCONS_H__
 +#define __ASM_XENCONS_H__
 +
++struct dom0_vga_console_info;
++void dom0_init_screen_info(const struct dom0_vga_console_info *info);
++
 +void xencons_force_flush(void);
 +void xencons_resume(void);
 +


Index: sources
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/sources,v
retrieving revision 1.491
retrieving revision 1.491.2.1
diff -u -r1.491 -r1.491.2.1
--- sources	18 Sep 2006 14:43:53 -0000	1.491
+++ sources	20 Sep 2006 17:45:35 -0000	1.491.2.1
@@ -1,4 +1,2 @@
-37ddefe96625502161f075b9d907f21e  linux-2.6.17.tar.bz2
-f563d6f644447a5adcf3e3e02a119fb0  patch-2.6.18-rc7.bz2
-c24a3f548eb39e77b4af41c1a798642c  patch-2.6.18-rc7-git2.bz2
 df88f1f6fffb516d977a3e338ec5e02d  xen-11470.tar.bz2
+296a6d150d260144639c3664d127d174  linux-2.6.18.tar.bz2


Index: upstream
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/upstream,v
retrieving revision 1.425
retrieving revision 1.425.2.1
diff -u -r1.425 -r1.425.2.1
--- upstream	17 Sep 2006 15:36:19 -0000	1.425
+++ upstream	20 Sep 2006 17:45:35 -0000	1.425.2.1
@@ -1,3 +1 @@
-linux-2.6.17.tar.bz2
-patch-2.6.18-rc7.bz2
-patch-2.6.18-rc7-git2.bz2
+linux-2.6.18.tar.bz2




More information about the fedora-cvs-commits mailing list