From: Ben Schweikert Date: Wed, 9 Sep 2009 15:30:18 +0000 (+0200) Subject: Added missing Xen Kernel Patches which where ignored because of X-Git-Url: http://git.ipfire.org/?p=people%2Fteissler%2Fipfire-2.x.git;a=commitdiff_plain;h=bfc57cde3239229de7ec2cf8a05f4cf4416f6aa8 Added missing Xen Kernel Patches which where ignored because of the .diff ending. --- diff --git a/src/patches/suse-2.6.27.31/patches.apparmor/vfs-unlink.diff b/src/patches/suse-2.6.27.31/patches.apparmor/vfs-unlink.diff new file mode 100644 index 000000000..cbf092a2f --- /dev/null +++ b/src/patches/suse-2.6.27.31/patches.apparmor/vfs-unlink.diff @@ -0,0 +1,99 @@ +From: Tony Jones +Subject: Add a struct vfsmount parameter to vfs_unlink() + +The vfsmount will be passed down to the LSM hook so that LSMs can compute +pathnames. + +Signed-off-by: Tony Jones +Signed-off-by: Andreas Gruenbacher +Signed-off-by: John Johansen + +--- + fs/ecryptfs/inode.c | 3 ++- + fs/namei.c | 4 ++-- + fs/nfsd/nfs4recover.c | 2 +- + fs/nfsd/vfs.c | 2 +- + include/linux/fs.h | 2 +- + ipc/mqueue.c | 2 +- + 6 files changed, 8 insertions(+), 7 deletions(-) + +--- a/fs/ecryptfs/inode.c ++++ b/fs/ecryptfs/inode.c +@@ -445,11 +445,12 @@ static int ecryptfs_unlink(struct inode + { + int rc = 0; + struct dentry *lower_dentry = ecryptfs_dentry_to_lower(dentry); ++ struct vfsmount *lower_mnt = ecryptfs_dentry_to_lower_mnt(dentry); + struct inode *lower_dir_inode = ecryptfs_inode_to_lower(dir); + struct dentry *lower_dir_dentry; + + lower_dir_dentry = lock_parent(lower_dentry); +- rc = vfs_unlink(lower_dir_inode, lower_dentry); ++ rc = vfs_unlink(lower_dir_inode, lower_dentry, lower_mnt); + if (rc) { + printk(KERN_ERR "Error in vfs_unlink; rc = [%d]\n", rc); + goto out_unlock; +--- a/fs/namei.c ++++ b/fs/namei.c +@@ -2248,7 +2248,7 @@ SYSCALL_DEFINE1(rmdir, const char __user + return do_rmdir(AT_FDCWD, pathname); + } + +-int vfs_unlink(struct inode *dir, struct dentry *dentry) ++int vfs_unlink(struct inode *dir, struct dentry *dentry, struct vfsmount *mnt) + { + int error = may_delete(dir, dentry, 0); + +@@ -2313,7 +2313,7 @@ static long do_unlinkat(int dfd, const c + error = mnt_want_write(nd.path.mnt); + if (error) + goto exit2; +- error = vfs_unlink(nd.path.dentry->d_inode, dentry); ++ error = vfs_unlink(nd.path.dentry->d_inode, dentry, nd.path.mnt); + mnt_drop_write(nd.path.mnt); + exit2: + dput(dentry); +--- a/fs/nfsd/nfs4recover.c ++++ b/fs/nfsd/nfs4recover.c +@@ -264,7 +264,7 @@ nfsd4_remove_clid_file(struct dentry *di + return -EINVAL; + } + mutex_lock_nested(&dir->d_inode->i_mutex, I_MUTEX_PARENT); +- status = vfs_unlink(dir->d_inode, dentry); ++ status = vfs_unlink(dir->d_inode, dentry, rec_dir.path.mnt); + mutex_unlock(&dir->d_inode->i_mutex); + return status; + } +--- a/fs/nfsd/vfs.c ++++ b/fs/nfsd/vfs.c +@@ -1832,7 +1832,7 @@ nfsd_unlink(struct svc_rqst *rqstp, stru + host_err = -EPERM; + } else + #endif +- host_err = vfs_unlink(dirp, rdentry); ++ host_err = vfs_unlink(dirp, rdentry, exp->ex_path.mnt); + } else { /* It's RMDIR */ + host_err = vfs_rmdir(dirp, rdentry, exp->ex_path.mnt); + } +--- a/include/linux/fs.h ++++ b/include/linux/fs.h +@@ -1183,7 +1183,7 @@ extern int vfs_mknod(struct inode *, str + extern int vfs_symlink(struct inode *, struct dentry *, struct vfsmount *, const char *); + extern int vfs_link(struct dentry *, struct vfsmount *, struct inode *, struct dentry *, struct vfsmount *); + extern int vfs_rmdir(struct inode *, struct dentry *, struct vfsmount *); +-extern int vfs_unlink(struct inode *, struct dentry *); ++extern int vfs_unlink(struct inode *, struct dentry *, struct vfsmount *); + extern int vfs_rename(struct inode *, struct dentry *, struct inode *, struct dentry *); + + /* +--- a/ipc/mqueue.c ++++ b/ipc/mqueue.c +@@ -746,7 +746,7 @@ SYSCALL_DEFINE1(mq_unlink, const char __ + err = mnt_want_write(mqueue_mnt); + if (err) + goto out_err; +- err = vfs_unlink(dentry->d_parent->d_inode, dentry); ++ err = vfs_unlink(dentry->d_parent->d_inode, dentry, mqueue_mnt); + mnt_drop_write(mqueue_mnt); + out_err: + dput(dentry);