[kernel] r15767 - in dists/sid/linux-2.6/debian: . patches/bugfix/all patches/series

Ben Hutchings benh at alioth.debian.org
Tue May 25 23:05:06 UTC 2010


Author: benh
Date: Tue May 25 23:05:00 2010
New Revision: 15767

Log:
ext4: Fix compat EXT4_IOC_ADD_GROUP

Added:
   dists/sid/linux-2.6/debian/patches/bugfix/all/ext4-Conditionally-define-compat-ioctl-numbers.patch
   dists/sid/linux-2.6/debian/patches/bugfix/all/ext4-Fix-compat-EXT4_IOC_ADD_GROUP.patch
Modified:
   dists/sid/linux-2.6/debian/changelog
   dists/sid/linux-2.6/debian/patches/series/14

Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog	Tue May 25 22:46:33 2010	(r15766)
+++ dists/sid/linux-2.6/debian/changelog	Tue May 25 23:05:00 2010	(r15767)
@@ -18,6 +18,7 @@
     instead on some VIA C7 systems. (Closes: #566208)
   * nouveau: Fix fbcon corruption with font width not divisible by 8
     (Closes: #583162)
+  * [amd64] ext4: Fix compat EXT4_IOC_ADD_GROUP (used by online resize)
 
   [ Bastian Blank ]
   * Update Xen patch.

Added: dists/sid/linux-2.6/debian/patches/bugfix/all/ext4-Conditionally-define-compat-ioctl-numbers.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/ext4-Conditionally-define-compat-ioctl-numbers.patch	Tue May 25 23:05:00 2010	(r15767)
@@ -0,0 +1,39 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Mon, 17 May 2010 09:00:00 -0400
+Subject: [PATCH 1/2] ext4: Conditionally define compat ioctl numbers
+
+commit 3ad0fa9c3af24b787158aa7d1bca18e401082e33 upstream.
+
+It is unnecessary, and in general impossible, to define the compat
+ioctl numbers except when building the filesystem with CONFIG_COMPAT
+defined.
+
+Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
+---
+ fs/ext4/ext4.h |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
+index 4a825c1..c6d2ad0 100644
+--- a/fs/ext4/ext4.h
++++ b/fs/ext4/ext4.h
+@@ -397,6 +397,7 @@ struct ext4_new_group_data {
+ #define EXT4_IOC_ALLOC_DA_BLKS		_IO('f', 12)
+ #define EXT4_IOC_MOVE_EXT		_IOWR('f', 15, struct move_extent)
+ 
++#if defined(__KERNEL__) && defined(CONFIG_COMPAT)
+ /*
+  * ioctl commands in 32 bit emulation
+  */
+@@ -412,6 +413,7 @@ struct ext4_new_group_data {
+ #endif
+ #define EXT4_IOC32_GETVERSION_OLD	FS_IOC32_GETVERSION
+ #define EXT4_IOC32_SETVERSION_OLD	FS_IOC32_SETVERSION
++#endif
+ 
+ 
+ /*
+-- 
+1.7.1
+

Added: dists/sid/linux-2.6/debian/patches/bugfix/all/ext4-Fix-compat-EXT4_IOC_ADD_GROUP.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/ext4-Fix-compat-EXT4_IOC_ADD_GROUP.patch	Tue May 25 23:05:00 2010	(r15767)
@@ -0,0 +1,97 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Mon, 17 May 2010 10:00:00 -0400
+Subject: [PATCH 2/2] ext4: Fix compat EXT4_IOC_ADD_GROUP
+
+commit 53819d0448e4e89d62ed974709565d8623445afb upstream.
+
+struct ext4_new_group_input needs to be converted because u64 has
+only 32-bit alignment on some 32-bit architectures, notably i386.
+
+Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
+[bwh: Adjust context for 2.6.32]
+---
+ fs/ext4/ext4.h  |   16 ++++++++++++++++
+ fs/ext4/ioctl.c |   25 +++++++++++++++++++++++--
+ 2 files changed, 39 insertions(+), 2 deletions(-)
+
+diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
+index c6d2ad0..c59cade 100644
+--- a/fs/ext4/ext4.h
++++ b/fs/ext4/ext4.h
+@@ -29,6 +29,9 @@
+ #include <linux/wait.h>
+ #include <linux/blockgroup_lock.h>
+ #include <linux/percpu_counter.h>
++#ifdef __KERNEL__
++#include <linux/compat.h>
++#endif
+ 
+ /*
+  * The fourth extended filesystem constants/structures
+@@ -335,6 +338,18 @@ struct ext4_new_group_input {
+ 	__u16 unused;
+ };
+ 
++#if defined(__KERNEL__) && defined(CONFIG_COMPAT)
++struct compat_ext4_new_group_input {
++	u32 group;
++	compat_u64 block_bitmap;
++	compat_u64 inode_bitmap;
++	compat_u64 inode_table;
++	u32 blocks_count;
++	u16 reserved_blocks;
++	u16 unused;
++};
++#endif
++
+ /* The struct ext4_new_group_input in kernel space, with free_blocks_count */
+ struct ext4_new_group_data {
+ 	__u32 group;
+@@ -408,6 +423,7 @@ struct ext4_new_group_data {
+ #define EXT4_IOC32_GETRSVSZ		_IOR('f', 5, int)
+ #define EXT4_IOC32_SETRSVSZ		_IOW('f', 6, int)
+ #define EXT4_IOC32_GROUP_EXTEND		_IOW('f', 7, unsigned int)
++#define EXT4_IOC32_GROUP_ADD		_IOW('f', 8, struct compat_ext4_new_group_input)
+ #ifdef CONFIG_JBD2_DEBUG
+ #define EXT4_IOC32_WAIT_FOR_READONLY	_IOR('f', 99, int)
+ #endif
+diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c
+index b63d193..42e6809 100644
+--- a/fs/ext4/ioctl.c
++++ b/fs/ext4/ioctl.c
+@@ -363,8 +363,29 @@ long ext4_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
+ 	case EXT4_IOC32_SETRSVSZ:
+ 		cmd = EXT4_IOC_SETRSVSZ;
+ 		break;
+-	case EXT4_IOC_GROUP_ADD:
+-		break;
++	case EXT4_IOC32_GROUP_ADD: {
++		struct compat_ext4_new_group_input __user *uinput;
++		struct ext4_new_group_input input;
++		mm_segment_t old_fs;
++		int err;
++
++		uinput = compat_ptr(arg);
++		err = get_user(input.group, &uinput->group);
++		err |= get_user(input.block_bitmap, &uinput->block_bitmap);
++		err |= get_user(input.inode_bitmap, &uinput->inode_bitmap);
++		err |= get_user(input.inode_table, &uinput->inode_table);
++		err |= get_user(input.blocks_count, &uinput->blocks_count);
++		err |= get_user(input.reserved_blocks,
++				&uinput->reserved_blocks);
++		if (err)
++			return -EFAULT;
++		old_fs = get_fs();
++		set_fs(KERNEL_DS);
++		err = ext4_ioctl(file, EXT4_IOC_GROUP_ADD,
++				 (unsigned long) &input);
++		set_fs(old_fs);
++		return err;
++	}
+ 	default:
+ 		return -ENOIOCTLCMD;
+ 	}
+-- 
+1.7.1
+

Modified: dists/sid/linux-2.6/debian/patches/series/14
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/14	Tue May 25 22:46:33 2010	(r15766)
+++ dists/sid/linux-2.6/debian/patches/series/14	Tue May 25 23:05:00 2010	(r15767)
@@ -16,3 +16,5 @@
 + bugfix/all/drm-i915-disable-fbc-on-915gm-and-945gm.patch
 + bugfix/all/drm-nouveau-use-ALIGN-instead-of-open-coding-it.patch
 + bugfix/all/drm-nouveau-Fix-fbcon-corruption-with-font-width-not.patch
++ bugfix/all/ext4-Conditionally-define-compat-ioctl-numbers.patch
++ bugfix/all/ext4-Fix-compat-EXT4_IOC_ADD_GROUP.patch



More information about the Kernel-svn-changes mailing list