[linux] 02/02: aufs: Make fcntl(F_SETFL, ...) work (Closes: #627782)
debian-kernel at lists.debian.org
debian-kernel at lists.debian.org
Sun May 8 23:23:07 UTC 2016
This is an automated email from the git hooks/post-receive script.
benh pushed a commit to branch jessie
in repository linux.
commit 705e7692d5f709c19316fc0aac26429eb89d1bcc
Author: Ben Hutchings <ben at decadent.org.uk>
Date: Sun May 8 18:07:55 2016 +0100
aufs: Make fcntl(F_SETFL, ...) work (Closes: #627782)
- for aufs: new f_op->setfl() to support fcntl(F_SETFL)
- aufs: implement new f_op->setfl()
- fs: Fix ABI change for aufs F_SETFL fix
---
debian/changelog | 4 ++
.../fs-fix-abi-change-for-aufs-f_setfl-fix.patch | 71 +++++++++++++++++++
.../all/aufs3/aufs-implement-new-f_op-setfl.patch | 60 ++++++++++++++++
debian/patches/features/all/aufs3/aufs3-base.patch | 63 ++++++++++++-----
.../features/all/aufs3/aufs3-standalone.patch | 82 ++++++++++------------
debian/patches/series | 2 +
6 files changed, 220 insertions(+), 62 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index 0a74fd3..addf7cb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -319,6 +319,10 @@ linux (3.16.35-1) UNRELEASED; urgency=medium
* stable-update: Rewrite stable-update.sh in Python
* [s390x] PCI: Ignore zpci ABI changes; these functions are not used by
modules
+ * aufs: Make fcntl(F_SETFL, ...) work (Closes: #627782):
+ - for aufs: new f_op->setfl() to support fcntl(F_SETFL)
+ - aufs: implement new f_op->setfl()
+ - fs: Fix ABI change for aufs F_SETFL fix
-- Ben Hutchings <ben at decadent.org.uk> Sat, 30 Apr 2016 22:07:22 +0200
diff --git a/debian/patches/debian/fs-fix-abi-change-for-aufs-f_setfl-fix.patch b/debian/patches/debian/fs-fix-abi-change-for-aufs-f_setfl-fix.patch
new file mode 100644
index 0000000..257ad25
--- /dev/null
+++ b/debian/patches/debian/fs-fix-abi-change-for-aufs-f_setfl-fix.patch
@@ -0,0 +1,71 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Sun, 08 May 2016 17:54:21 +0100
+Subject: fs: Fix ABI change for aufs F_SETFL fix
+Forwarded: not-needed
+Bug-Debian: https://bugs.debian.org/627782
+
+struct file_operations is not embedded in any larger structures so it
+is safe to extend it. Move setfl to the end and hide it from
+genksyms.
+
+setfl() still needs to be able to tell whether the
+file_operations::setfl pointer is valid, though. My first thought was
+to look at the file's superblock, but that won't work because
+e.g. dentries for character devices point to the superblock of the
+filesystem where the device node was found! Instead, add a keyword to
+the version string of aufs and make do_setfl() check the name and
+version of the module that implements the file_operations.
+
+---
+--- a/fs/fcntl.c
++++ b/fs/fcntl.c
+@@ -59,7 +59,16 @@ int setfl(int fd, struct file * filp, un
+
+ if (filp->f_op->check_flags)
+ error = filp->f_op->check_flags(arg);
+- if (!error && filp->f_op->setfl)
++
++ /*
++ * bwh: setfl() is an extension to file_operations. For ABI
++ * compatibility, we can't assume the pointer is even valid.
++ * Since only aufs will implement it, check that the file ops
++ * are implemented by a version of aufs that does. (Ugh.)
++ */
++ if (!error && filp->f_op->owner &&
++ !strcmp(filp->f_op->owner->name, "aufs") &&
++ strstr(filp->f_op->owner->version, "+setfl"))
+ error = filp->f_op->setfl(filp, arg);
+ if (error)
+ return error;
+--- a/include/linux/fs.h
++++ b/include/linux/fs.h
+@@ -1503,7 +1503,6 @@ struct file_operations {
+ ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);
+ unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
+ int (*check_flags)(int);
+- int (*setfl)(struct file *, unsigned long);
+ int (*flock) (struct file *, int, struct file_lock *);
+ ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
+ ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
+@@ -1511,6 +1510,10 @@ struct file_operations {
+ long (*fallocate)(struct file *file, int mode, loff_t offset,
+ loff_t len);
+ int (*show_fdinfo)(struct seq_file *m, struct file *f);
++#ifndef __GENKSYMS__
++ /* bwh: For aufs only */
++ int (*setfl)(struct file *, unsigned long);
++#endif
+ };
+
+ struct inode_operations {
+--- a/include/uapi/linux/aufs_type.h
++++ b/include/uapi/linux/aufs_type.h
+@@ -39,7 +39,7 @@
+
+ #include <linux/limits.h>
+
+-#define AUFS_VERSION "3.16-20140908"
++#define AUFS_VERSION "3.16-20140908+setfl"
+
+ /* todo? move this to linux-2.6.19/include/magic.h */
+ #define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's')
diff --git a/debian/patches/features/all/aufs3/aufs-implement-new-f_op-setfl.patch b/debian/patches/features/all/aufs3/aufs-implement-new-f_op-setfl.patch
new file mode 100644
index 0000000..8f68c06
--- /dev/null
+++ b/debian/patches/features/all/aufs3/aufs-implement-new-f_op-setfl.patch
@@ -0,0 +1,60 @@
+From: "J. R. Okajima" <hooanon05g at gmail.com>
+Date: Sun, 28 Feb 2016 07:08:26 +0900
+Subject: aufs: implement new f_op->setfl()
+Origin: https://github.com/sfjro/aufs3-linux/commit/e3fb13540a9cc40f106a13bfe89460f251b1ca30
+Bug-Debian: https://bugs.debian.org/627782
+
+Propagate the file flags from the virtual aufs's file object to the real
+fs's file object. The exception is FASYNC/O_ASYNC since f_op already has
+->fasync().
+
+Reported-by: Akihiro Suda <suda.kyoto at gmail.com>
+Signed-off-by: J. R. Okajima <hooanon05g at gmail.com>
+[bwh: Backported to aufs-3.16-20140908: open-code au_read_pre()]
+---
+ fs/aufs/f_op.c | 24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+--- a/fs/aufs/f_op.c
++++ b/fs/aufs/f_op.c
+@@ -766,6 +766,32 @@ out:
+ return err;
+ }
+
++static int aufs_setfl(struct file *file, unsigned long arg)
++{
++ int err;
++ struct file *h_file;
++ struct super_block *sb;
++
++ sb = file->f_dentry->d_sb;
++ si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW);
++ err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/0);
++ if (err)
++ goto out;
++
++ di_read_unlock(file->f_dentry, AuLock_IR);
++ h_file = au_hf_top(file);
++ get_file(h_file);
++ fi_read_unlock(file);
++
++ arg |= vfsub_file_flags(file) & FASYNC; /* stop calling h_file->fasync */
++ err = setfl(/*unused fd*/-1, h_file, arg);
++ fput(h_file); /* instead of au_read_post() */
++
++out:
++ si_read_unlock(sb);
++ return err;
++}
++
+ /* ---------------------------------------------------------------------- */
+
+ /* no one supports this operation, currently */
+@@ -803,6 +829,7 @@ const struct file_operations aufs_file_f
+ /* .aio_fsync = aufs_aio_fsync_nondir, */
+ .fasync = aufs_fasync,
+ /* .sendpage = aufs_sendpage, */
++ .setfl = aufs_setfl,
+ .splice_write = aufs_splice_write,
+ .splice_read = aufs_splice_read,
+ #if 0
diff --git a/debian/patches/features/all/aufs3/aufs3-base.patch b/debian/patches/features/all/aufs3/aufs3-base.patch
index 333a088..9a7ac0e 100644
--- a/debian/patches/features/all/aufs3/aufs3-base.patch
+++ b/debian/patches/features/all/aufs3/aufs3-base.patch
@@ -8,8 +8,9 @@ Patch headers added by debian/patches/features/all/aufs3/gen-patch
aufs3.16 base patch
-diff --git a/MAINTAINERS b/MAINTAINERS
-index c2066f4..f07a989 100644
+[bwh: Fold in changes from commit 565ce4aa6196 "for aufs: new f_op->setfl() to
+ support fcntl(F_SETFL)"]
+---
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1698,6 +1698,20 @@ F: include/linux/audit.h
@@ -33,11 +34,9 @@ index c2066f4..f07a989 100644
AUXILIARY DISPLAY DRIVERS
M: Miguel Ojeda Sandonis <miguel.ojeda.sandonis at gmail.com>
W: http://miguelojeda.es/auxdisplay.htm
-diff --git a/drivers/block/loop.c b/drivers/block/loop.c
-index 6cb1beb..30efd68 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
-@@ -692,6 +692,24 @@ static inline int is_loop_device(struct file *file)
+@@ -692,6 +692,24 @@ static inline int is_loop_device(struct
return i && S_ISBLK(i->i_mode) && MAJOR(i->i_rdev) == LOOP_MAJOR;
}
@@ -62,11 +61,29 @@ index 6cb1beb..30efd68 100644
/* loop sysfs attributes */
static ssize_t loop_attr_show(struct device *dev, char *page,
-diff --git a/fs/inode.c b/fs/inode.c
-index 6eecb7f..b225c0f 100644
+--- a/fs/fcntl.c
++++ b/fs/fcntl.c
+@@ -28,7 +28,7 @@
+
+ #define SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT | O_NOATIME)
+
+-static int setfl(int fd, struct file * filp, unsigned long arg)
++int setfl(int fd, struct file * filp, unsigned long arg)
+ {
+ struct inode * inode = file_inode(filp);
+ int error = 0;
+@@ -58,6 +58,8 @@ static int setfl(int fd, struct file * f
+
+ if (filp->f_op->check_flags)
+ error = filp->f_op->check_flags(arg);
++ if (!error && filp->f_op->setfl)
++ error = filp->f_op->setfl(filp, arg);
+ if (error)
+ return error;
+
--- a/fs/inode.c
+++ b/fs/inode.c
-@@ -1496,7 +1496,7 @@ static int relatime_need_update(struct vfsmount *mnt, struct inode *inode,
+@@ -1496,7 +1496,7 @@ static int relatime_need_update(struct v
* This does the actual work of updating an inodes time or version. Must have
* had called mnt_want_write() before calling this.
*/
@@ -75,11 +92,9 @@ index 6eecb7f..b225c0f 100644
{
if (inode->i_op->update_time)
return inode->i_op->update_time(inode, time, flags);
-diff --git a/fs/splice.c b/fs/splice.c
-index f5cb9ba..9ba380c 100644
--- a/fs/splice.c
+++ b/fs/splice.c
-@@ -1114,8 +1114,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
+@@ -1125,8 +1125,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
/*
* Attempt to initiate a splice from pipe to file.
*/
@@ -90,7 +105,7 @@ index f5cb9ba..9ba380c 100644
{
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *,
loff_t *, size_t, unsigned int);
-@@ -1131,9 +1131,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
+@@ -1142,9 +1142,9 @@ static long do_splice_from(struct pipe_i
/*
* Attempt to initiate a splice from a file to a pipe.
*/
@@ -103,11 +118,25 @@ index f5cb9ba..9ba380c 100644
{
ssize_t (*splice_read)(struct file *, loff_t *,
struct pipe_inode_info *, size_t, unsigned int);
-diff --git a/include/linux/fs.h b/include/linux/fs.h
-index e11d60c..2f32b35 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
-@@ -2618,6 +2618,7 @@ extern int inode_change_ok(const struct inode *, struct iattr *);
+@@ -1126,6 +1126,7 @@ extern void fasync_free(struct fasync_st
+ /* can be called from interrupts */
+ extern void kill_fasync(struct fasync_struct **, int, int);
+
++extern int setfl(int fd, struct file * filp, unsigned long arg);
+ extern int __f_setown(struct file *filp, struct pid *, enum pid_type, int force);
+ extern int f_setown(struct file *filp, unsigned long arg, int force);
+ extern void f_delown(struct file *filp);
+@@ -1477,6 +1478,7 @@ struct file_operations {
+ ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);
+ unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
+ int (*check_flags)(int);
++ int (*setfl)(struct file *, unsigned long);
+ int (*flock) (struct file *, int, struct file_lock *);
+ ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
+ ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
+@@ -2620,6 +2622,7 @@ extern int inode_change_ok(const struct
extern int inode_newsize_ok(const struct inode *, loff_t offset);
extern void setattr_copy(struct inode *inode, const struct iattr *attr);
@@ -115,11 +144,9 @@ index e11d60c..2f32b35 100644
extern int file_update_time(struct file *file);
extern int generic_show_options(struct seq_file *m, struct dentry *root);
-diff --git a/include/linux/splice.h b/include/linux/splice.h
-index da2751d..2e0fca6 100644
--- a/include/linux/splice.h
+++ b/include/linux/splice.h
-@@ -83,4 +83,10 @@ extern void splice_shrink_spd(struct splice_pipe_desc *);
+@@ -83,4 +83,10 @@ extern void splice_shrink_spd(struct spl
extern void spd_release_page(struct splice_pipe_desc *, unsigned int);
extern const struct pipe_buf_operations page_cache_pipe_buf_ops;
diff --git a/debian/patches/features/all/aufs3/aufs3-standalone.patch b/debian/patches/features/all/aufs3/aufs3-standalone.patch
index c8ef3d0..9310c0a 100644
--- a/debian/patches/features/all/aufs3/aufs3-standalone.patch
+++ b/debian/patches/features/all/aufs3/aufs3-standalone.patch
@@ -8,11 +8,21 @@ Patch headers added by debian/patches/features/all/aufs3/gen-patch
aufs3.16 standalone patch
-diff --git a/fs/inode.c b/fs/inode.c
-index b225c0f..73259c8 100644
+[bwh: Add export of setfl() to support "aufs: implement new f_op->setfl()"]
+---
+--- a/fs/fcntl.c
++++ b/fs/fcntl.c
+@@ -80,6 +80,7 @@ int setfl(int fd, struct file * filp, un
+ out:
+ return error;
+ }
++EXPORT_SYMBOL_GPL(setfl);
+
+ static void f_modown(struct file *filp, struct pid *pid, enum pid_type type,
+ int force)
--- a/fs/inode.c
+++ b/fs/inode.c
-@@ -57,6 +57,7 @@ static struct hlist_head *inode_hashtable __read_mostly;
+@@ -57,6 +57,7 @@ static struct hlist_head *inode_hashtabl
static __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_hash_lock);
__cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_sb_list_lock);
@@ -20,7 +30,7 @@ index b225c0f..73259c8 100644
/*
* Empty aops. Can be used for the cases where the user does not
-@@ -1512,6 +1513,7 @@ int update_time(struct inode *inode, struct timespec *time, int flags)
+@@ -1512,6 +1513,7 @@ int update_time(struct inode *inode, str
mark_inode_dirty_sync(inode);
return 0;
}
@@ -28,11 +38,9 @@ index b225c0f..73259c8 100644
/**
* touch_atime - update the access time
-diff --git a/fs/namespace.c b/fs/namespace.c
-index 182bc41..c88e101 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
-@@ -453,6 +453,7 @@ void __mnt_drop_write(struct vfsmount *mnt)
+@@ -453,6 +453,7 @@ void __mnt_drop_write(struct vfsmount *m
mnt_dec_writers(real_mount(mnt));
preempt_enable();
}
@@ -40,7 +48,7 @@ index 182bc41..c88e101 100644
/**
* mnt_drop_write - give up write access to a mount
-@@ -1564,6 +1565,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
+@@ -1613,6 +1614,7 @@ int iterate_mounts(int (*f)(struct vfsmo
}
return 0;
}
@@ -48,8 +56,6 @@ index 182bc41..c88e101 100644
static void cleanup_group_ids(struct mount *mnt, struct mount *end)
{
-diff --git a/fs/notify/group.c b/fs/notify/group.c
-index ad19959..adf290d 100644
--- a/fs/notify/group.c
+++ b/fs/notify/group.c
@@ -22,6 +22,7 @@
@@ -60,7 +66,7 @@ index ad19959..adf290d 100644
#include <linux/fsnotify_backend.h>
#include "fsnotify.h"
-@@ -72,6 +73,7 @@ void fsnotify_get_group(struct fsnotify_group *group)
+@@ -72,6 +73,7 @@ void fsnotify_get_group(struct fsnotify_
{
atomic_inc(&group->refcnt);
}
@@ -68,7 +74,7 @@ index ad19959..adf290d 100644
/*
* Drop a reference to a group. Free it if it's through.
-@@ -81,6 +83,7 @@ void fsnotify_put_group(struct fsnotify_group *group)
+@@ -81,6 +83,7 @@ void fsnotify_put_group(struct fsnotify_
if (atomic_dec_and_test(&group->refcnt))
fsnotify_final_destroy_group(group);
}
@@ -76,7 +82,7 @@ index ad19959..adf290d 100644
/*
* Create a new fsnotify_group and hold a reference for the group returned.
-@@ -109,6 +112,7 @@ struct fsnotify_group *fsnotify_alloc_group(const struct fsnotify_ops *ops)
+@@ -109,6 +112,7 @@ struct fsnotify_group *fsnotify_alloc_gr
return group;
}
@@ -84,11 +90,9 @@ index ad19959..adf290d 100644
int fsnotify_fasync(int fd, struct file *file, int on)
{
-diff --git a/fs/notify/mark.c b/fs/notify/mark.c
-index d90deaa..60b4239 100644
--- a/fs/notify/mark.c
+++ b/fs/notify/mark.c
-@@ -109,6 +109,7 @@ void fsnotify_put_mark(struct fsnotify_mark *mark)
+@@ -109,6 +109,7 @@ void fsnotify_put_mark(struct fsnotify_m
mark->free_mark(mark);
}
}
@@ -96,7 +100,7 @@ index d90deaa..60b4239 100644
/*
* Any time a mark is getting freed we end up here.
-@@ -191,6 +192,7 @@ void fsnotify_destroy_mark(struct fsnotify_mark *mark,
+@@ -191,6 +192,7 @@ void fsnotify_destroy_mark(struct fsnoti
fsnotify_destroy_mark_locked(mark, group);
mutex_unlock(&group->mark_mutex);
}
@@ -112,7 +116,7 @@ index d90deaa..60b4239 100644
int fsnotify_add_mark(struct fsnotify_mark *mark, struct fsnotify_group *group,
struct inode *inode, struct vfsmount *mnt, int allow_dups)
-@@ -336,6 +339,7 @@ void fsnotify_init_mark(struct fsnotify_mark *mark,
+@@ -356,6 +359,7 @@ void fsnotify_init_mark(struct fsnotify_
atomic_set(&mark->refcnt, 1);
mark->free_mark = free_mark;
}
@@ -120,11 +124,9 @@ index d90deaa..60b4239 100644
static int fsnotify_mark_destroy(void *ignored)
{
-diff --git a/fs/open.c b/fs/open.c
-index d6fd3ac..5e99d8b 100644
--- a/fs/open.c
+++ b/fs/open.c
-@@ -62,6 +62,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
+@@ -62,6 +62,7 @@ int do_truncate(struct dentry *dentry, l
mutex_unlock(&dentry->d_inode->i_mutex);
return ret;
}
@@ -132,7 +134,7 @@ index d6fd3ac..5e99d8b 100644
long vfs_truncate(struct path *path, loff_t length)
{
-@@ -298,6 +299,7 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len)
+@@ -298,6 +299,7 @@ int do_fallocate(struct file *file, int
sb_end_write(inode->i_sb);
return ret;
}
@@ -140,11 +142,9 @@ index d6fd3ac..5e99d8b 100644
SYSCALL_DEFINE4(fallocate, int, fd, int, mode, loff_t, offset, loff_t, len)
{
-diff --git a/fs/splice.c b/fs/splice.c
-index 9ba380c..3419932 100644
--- a/fs/splice.c
+++ b/fs/splice.c
-@@ -1127,6 +1127,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
+@@ -1138,6 +1138,7 @@ long do_splice_from(struct pipe_inode_in
return splice_write(pipe, out, ppos, len, flags);
}
@@ -152,7 +152,7 @@ index 9ba380c..3419932 100644
/*
* Attempt to initiate a splice from a file to a pipe.
-@@ -1153,6 +1154,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
+@@ -1164,6 +1165,7 @@ long do_splice_to(struct file *in, loff_
return splice_read(in, ppos, pipe, len, flags);
}
@@ -160,11 +160,9 @@ index 9ba380c..3419932 100644
/**
* splice_direct_to_actor - splices data directly between two non-pipes
-diff --git a/security/commoncap.c b/security/commoncap.c
-index b9d613e..ba3b618 100644
--- a/security/commoncap.c
+++ b/security/commoncap.c
-@@ -988,9 +988,11 @@ int cap_mmap_addr(unsigned long addr)
+@@ -991,9 +991,11 @@ int cap_mmap_addr(unsigned long addr)
}
return ret;
}
@@ -176,8 +174,6 @@ index b9d613e..ba3b618 100644
return 0;
}
+EXPORT_SYMBOL_GPL(cap_mmap_file);
-diff --git a/security/device_cgroup.c b/security/device_cgroup.c
-index d9d69e6..3f6f471 100644
--- a/security/device_cgroup.c
+++ b/security/device_cgroup.c
@@ -7,6 +7,7 @@
@@ -188,7 +184,7 @@ index d9d69e6..3f6f471 100644
#include <linux/list.h>
#include <linux/uaccess.h>
#include <linux/seq_file.h>
-@@ -849,6 +850,7 @@ int __devcgroup_inode_permission(struct inode *inode, int mask)
+@@ -849,6 +850,7 @@ int __devcgroup_inode_permission(struct
return __devcgroup_check_permission(type, imajor(inode), iminor(inode),
access);
}
@@ -196,11 +192,9 @@ index d9d69e6..3f6f471 100644
int devcgroup_inode_mknod(int mode, dev_t dev)
{
-diff --git a/security/security.c b/security/security.c
-index 31614e9..b223a66 100644
--- a/security/security.c
+++ b/security/security.c
-@@ -407,6 +407,7 @@ int security_path_rmdir(struct path *dir, struct dentry *dentry)
+@@ -407,6 +407,7 @@ int security_path_rmdir(struct path *dir
return 0;
return security_ops->path_rmdir(dir, dentry);
}
@@ -208,7 +202,7 @@ index 31614e9..b223a66 100644
int security_path_unlink(struct path *dir, struct dentry *dentry)
{
-@@ -423,6 +424,7 @@ int security_path_symlink(struct path *dir, struct dentry *dentry,
+@@ -423,6 +424,7 @@ int security_path_symlink(struct path *d
return 0;
return security_ops->path_symlink(dir, dentry, old_name);
}
@@ -216,7 +210,7 @@ index 31614e9..b223a66 100644
int security_path_link(struct dentry *old_dentry, struct path *new_dir,
struct dentry *new_dentry)
-@@ -431,6 +433,7 @@ int security_path_link(struct dentry *old_dentry, struct path *new_dir,
+@@ -431,6 +433,7 @@ int security_path_link(struct dentry *ol
return 0;
return security_ops->path_link(old_dentry, new_dir, new_dentry);
}
@@ -224,7 +218,7 @@ index 31614e9..b223a66 100644
int security_path_rename(struct path *old_dir, struct dentry *old_dentry,
struct path *new_dir, struct dentry *new_dentry,
-@@ -458,6 +461,7 @@ int security_path_truncate(struct path *path)
+@@ -458,6 +461,7 @@ int security_path_truncate(struct path *
return 0;
return security_ops->path_truncate(path);
}
@@ -232,7 +226,7 @@ index 31614e9..b223a66 100644
int security_path_chmod(struct path *path, umode_t mode)
{
-@@ -465,6 +469,7 @@ int security_path_chmod(struct path *path, umode_t mode)
+@@ -465,6 +469,7 @@ int security_path_chmod(struct path *pat
return 0;
return security_ops->path_chmod(path, mode);
}
@@ -240,7 +234,7 @@ index 31614e9..b223a66 100644
int security_path_chown(struct path *path, kuid_t uid, kgid_t gid)
{
-@@ -472,6 +477,7 @@ int security_path_chown(struct path *path, kuid_t uid, kgid_t gid)
+@@ -472,6 +477,7 @@ int security_path_chown(struct path *pat
return 0;
return security_ops->path_chown(path, uid, gid);
}
@@ -248,7 +242,7 @@ index 31614e9..b223a66 100644
int security_path_chroot(struct path *path)
{
-@@ -557,6 +563,7 @@ int security_inode_readlink(struct dentry *dentry)
+@@ -557,6 +563,7 @@ int security_inode_readlink(struct dentr
return 0;
return security_ops->inode_readlink(dentry);
}
@@ -256,7 +250,7 @@ index 31614e9..b223a66 100644
int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd)
{
-@@ -571,6 +578,7 @@ int security_inode_permission(struct inode *inode, int mask)
+@@ -571,6 +578,7 @@ int security_inode_permission(struct ino
return 0;
return security_ops->inode_permission(inode, mask);
}
@@ -264,7 +258,7 @@ index 31614e9..b223a66 100644
int security_inode_setattr(struct dentry *dentry, struct iattr *attr)
{
-@@ -693,6 +701,7 @@ int security_file_permission(struct file *file, int mask)
+@@ -693,6 +701,7 @@ int security_file_permission(struct file
return fsnotify_perm(file, mask);
}
@@ -272,7 +266,7 @@ index 31614e9..b223a66 100644
int security_file_alloc(struct file *file)
{
-@@ -753,6 +762,7 @@ int security_mmap_file(struct file *file, unsigned long prot,
+@@ -753,6 +762,7 @@ int security_mmap_file(struct file *file
return ret;
return ima_file_mmap(file, prot);
}
diff --git a/debian/patches/series b/debian/patches/series
index 2cbf52a..066271e 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -24,6 +24,7 @@ features/all/aufs3/aufs3-mmap.patch
features/all/aufs3/aufs3-mmap-fix-races.patch
features/all/aufs3/aufs3-standalone.patch
features/all/aufs3/aufs3-add.patch
+features/all/aufs3/aufs-implement-new-f_op-setfl.patch
# Debian-specific changes
debian/aufs3-mark-as-staging.patch
@@ -661,3 +662,4 @@ debian/fs-fix-abi-change-in-3.16.35.patch
bugfix/all/revert-ax25-add-link-layer-header-validation-functio.patch
bugfix/all/revert-net-validate-variable-length-ll-headers.patch
debian/bpf-fix-abi-change-in-3.16.35.patch
+debian/fs-fix-abi-change-for-aufs-f_setfl-fix.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/kernel/linux.git
More information about the Kernel-svn-changes
mailing list