Jeff Mahoney
2008-Feb-06 14:15 UTC
[Btrfs-devel] [PATCH 1/4] btrfs: Add workaround for AppArmor changing remove_suid() prototype
-----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@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-----
Christoph Hellwig
2008-Feb-06 20:49 UTC
[Btrfs-devel] [PATCH 1/4] btrfs: Add workaround for AppArmor changing remove_suid() prototype
On Wed, Feb 06, 2008 at 05:14:44PM -0500, Jeff Mahoney wrote:> -----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.Please don't put junk like this into the tree. What about SuSE killing that crap instead?