[Btrfs-devel] [PATCH 1/4] btrfs: Add workaround for AppArmor changing remove_suid() prototype

Jeff Mahoney jeffm at suse.com
Wed Feb 6 14:14:44 PST 2008


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

 In openSUSE 10.3, AppArmor modifies remove_suid to take a struct path
 rather than just a dentry. This patch tests that the kernel is openSUSE
 10.3 or newer and adjusts the call accordingly.

 Debian/Ubuntu with AppArmor applied will also need a similar patch.
 Maintainers of btrfs under those distributions should build on this
 patch or, alternatively, alter their package descriptions to add
 -DREMOVE_SUID_PATH to the compiler command line.

Signed-off-by: Jeff Mahoney <jeffm at suse.com>
- ---
 compat.h |   15 +++++++++++++++
 file.c   |    5 +++++
 2 files changed, 20 insertions(+)

- --- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ b/compat.h	2008-02-06 16:46:13.000000000 -0500
@@ -0,0 +1,15 @@
+#ifndef _COMPAT_H_
+#define _COMPAT_H_
+
+
+/*
+ * Even if AppArmor isn't enabled, it still has different prototypes.
+ * Add more distro/version pairs here to declare which has AppArmor applied.
+ */
+#if defined(CONFIG_SUSE_KERNEL)
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
+# define REMOVE_SUID_PATH 1
+# endif
+#endif
+
+#endif /* _COMPAT_H_ */
- --- a/file.c	2008-02-06 11:37:39.000000000 -0500
+++ b/file.c	2008-02-06 16:46:23.000000000 -0500
@@ -37,6 +37,7 @@
 #include "ordered-data.h"
 #include "ioctl.h"
 #include "print-tree.h"
+#include "compat.h"
 
 
 static int btrfs_copy_from_user(loff_t pos, int num_pages, int write_bytes,
@@ -790,7 +791,11 @@ static ssize_t btrfs_file_write(struct f
 		goto out_nolock;
 	if (count == 0)
 		goto out_nolock;
+#ifdef REMOVE_SUID_PATH
+	err = remove_suid(&file->f_path);
+#else
 	err = remove_suid(fdentry(file));
+#endif
 	if (err)
 		goto out_nolock;
 	file_update_time(file);

- -- 
Jeff Mahoney
SUSE Labs
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.4-svn0 (GNU/Linux)
Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org

iD8DBQFHqjFULPWxlyuTD7IRAjYNAJ9uu2XWE53iko+eo+ypr2wGX4yC7wCgojK5
tJLnHFkKZEe70yv1Zl9R7UA=
=rE/4
-----END PGP SIGNATURE-----



More information about the Btrfs-devel mailing list