kernel-4.14.14
This commit is contained in:
parent
24b72c7113
commit
27d87877dd
|
@ -2,5 +2,5 @@
|
||||||
if [ -f /boot/grub/grub.cfg ];then
|
if [ -f /boot/grub/grub.cfg ];then
|
||||||
mv /boot/grub/grub.cfg /boot/grub/grub.cfg.eski
|
mv /boot/grub/grub.cfg /boot/grub/grub.cfg.eski
|
||||||
fi
|
fi
|
||||||
[ ! -f /boot/grub/grub.cfg.new ] && mv /etc/default/grub/grub.cfg /boot/grub/grub.cfg.new
|
[ ! -f /boot/grub/grub.cfg.new ] && cp /etc/default/grub/grub.cfg /boot/grub/grub.cfg.new
|
||||||
grub-mkconfig -o /boot/grub/grub.cfg
|
grub-mkconfig -o /boot/grub/grub.cfg
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
aufs4.13 base patch
|
SPDX-License-Identifier: GPL-2.0
|
||||||
|
aufs4.14 base patch
|
||||||
|
|
||||||
diff --git a/MAINTAINERS b/MAINTAINERS
|
diff --git a/MAINTAINERS b/MAINTAINERS
|
||||||
index 1c3feff..1a12137 100644
|
index 2811a21..02b6deb 100644
|
||||||
--- a/MAINTAINERS
|
--- a/MAINTAINERS
|
||||||
+++ b/MAINTAINERS
|
+++ b/MAINTAINERS
|
||||||
@@ -2392,6 +2392,19 @@ F: include/linux/audit.h
|
@@ -2465,6 +2465,19 @@ F: include/linux/audit.h
|
||||||
F: include/uapi/linux/audit.h
|
F: include/uapi/linux/audit.h
|
||||||
F: kernel/audit*
|
F: kernel/audit*
|
||||||
|
|
||||||
|
@ -25,10 +26,10 @@ index 1c3feff..1a12137 100644
|
||||||
M: Miguel Ojeda Sandonis <miguel.ojeda.sandonis@gmail.com>
|
M: Miguel Ojeda Sandonis <miguel.ojeda.sandonis@gmail.com>
|
||||||
W: http://miguelojeda.es/auxdisplay.htm
|
W: http://miguelojeda.es/auxdisplay.htm
|
||||||
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
|
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
|
||||||
index f321b96..10707c3 100644
|
index 85de673..d44de9d 100644
|
||||||
--- a/drivers/block/loop.c
|
--- a/drivers/block/loop.c
|
||||||
+++ b/drivers/block/loop.c
|
+++ b/drivers/block/loop.c
|
||||||
@@ -700,6 +700,24 @@ static inline int is_loop_device(struct file *file)
|
@@ -686,6 +686,24 @@ static inline int is_loop_device(struct file *file)
|
||||||
return i && S_ISBLK(i->i_mode) && MAJOR(i->i_rdev) == LOOP_MAJOR;
|
return i && S_ISBLK(i->i_mode) && MAJOR(i->i_rdev) == LOOP_MAJOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,10 +68,10 @@ index f901413..e3719a5 100644
|
||||||
void (*finish)(void *))
|
void (*finish)(void *))
|
||||||
{
|
{
|
||||||
diff --git a/fs/fcntl.c b/fs/fcntl.c
|
diff --git a/fs/fcntl.c b/fs/fcntl.c
|
||||||
index 3b01b64..659760e 100644
|
index 8d78ffd..cffefab 100644
|
||||||
--- a/fs/fcntl.c
|
--- a/fs/fcntl.c
|
||||||
+++ b/fs/fcntl.c
|
+++ b/fs/fcntl.c
|
||||||
@@ -31,7 +31,7 @@
|
@@ -32,7 +32,7 @@
|
||||||
|
|
||||||
#define SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT | O_NOATIME)
|
#define SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT | O_NOATIME)
|
||||||
|
|
||||||
|
@ -79,7 +80,7 @@ index 3b01b64..659760e 100644
|
||||||
{
|
{
|
||||||
struct inode * inode = file_inode(filp);
|
struct inode * inode = file_inode(filp);
|
||||||
int error = 0;
|
int error = 0;
|
||||||
@@ -62,6 +62,8 @@ static int setfl(int fd, struct file * filp, unsigned long arg)
|
@@ -63,6 +63,8 @@ static int setfl(int fd, struct file * filp, unsigned long arg)
|
||||||
|
|
||||||
if (filp->f_op->check_flags)
|
if (filp->f_op->check_flags)
|
||||||
error = filp->f_op->check_flags(arg);
|
error = filp->f_op->check_flags(arg);
|
||||||
|
@ -89,10 +90,10 @@ index 3b01b64..659760e 100644
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
diff --git a/fs/inode.c b/fs/inode.c
|
diff --git a/fs/inode.c b/fs/inode.c
|
||||||
index 5037059..73820bf 100644
|
index d1e35b5..f7800d6 100644
|
||||||
--- a/fs/inode.c
|
--- a/fs/inode.c
|
||||||
+++ b/fs/inode.c
|
+++ b/fs/inode.c
|
||||||
@@ -1641,7 +1641,7 @@ EXPORT_SYMBOL(generic_update_time);
|
@@ -1655,7 +1655,7 @@ EXPORT_SYMBOL(generic_update_time);
|
||||||
* This does the actual work of updating an inodes time or version. Must have
|
* This does the actual work of updating an inodes time or version. Must have
|
||||||
* had called mnt_want_write() before calling this.
|
* had called mnt_want_write() before calling this.
|
||||||
*/
|
*/
|
||||||
|
@ -102,10 +103,10 @@ index 5037059..73820bf 100644
|
||||||
int (*update_time)(struct inode *, struct timespec *, int);
|
int (*update_time)(struct inode *, struct timespec *, int);
|
||||||
|
|
||||||
diff --git a/fs/namespace.c b/fs/namespace.c
|
diff --git a/fs/namespace.c b/fs/namespace.c
|
||||||
index f8893dc..8601f8d 100644
|
index d18deb4..e5a4a7f 100644
|
||||||
--- a/fs/namespace.c
|
--- a/fs/namespace.c
|
||||||
+++ b/fs/namespace.c
|
+++ b/fs/namespace.c
|
||||||
@@ -786,6 +786,12 @@ static inline int check_mnt(struct mount *mnt)
|
@@ -846,6 +846,12 @@ static inline int check_mnt(struct mount *mnt)
|
||||||
return mnt->mnt_ns == current->nsproxy->mnt_ns;
|
return mnt->mnt_ns == current->nsproxy->mnt_ns;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,12 +120,12 @@ index f8893dc..8601f8d 100644
|
||||||
* vfsmount lock must be held for write
|
* vfsmount lock must be held for write
|
||||||
*/
|
*/
|
||||||
diff --git a/fs/read_write.c b/fs/read_write.c
|
diff --git a/fs/read_write.c b/fs/read_write.c
|
||||||
index 0cc7033..6e542f0 100644
|
index 0046d72..2388284 100644
|
||||||
--- a/fs/read_write.c
|
--- a/fs/read_write.c
|
||||||
+++ b/fs/read_write.c
|
+++ b/fs/read_write.c
|
||||||
@@ -473,6 +473,28 @@ ssize_t __vfs_write(struct file *file, const char __user *p, size_t count,
|
@@ -484,6 +484,28 @@ ssize_t __vfs_write(struct file *file, const char __user *p, size_t count,
|
||||||
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__vfs_write);
|
|
||||||
|
|
||||||
+vfs_readf_t vfs_readf(struct file *file)
|
+vfs_readf_t vfs_readf(struct file *file)
|
||||||
+{
|
+{
|
||||||
|
@ -148,14 +149,14 @@ index 0cc7033..6e542f0 100644
|
||||||
+ return ERR_PTR(-ENOSYS);
|
+ return ERR_PTR(-ENOSYS);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t *pos)
|
ssize_t __kernel_write(struct file *file, const void *buf, size_t count, loff_t *pos)
|
||||||
{
|
{
|
||||||
mm_segment_t old_fs;
|
mm_segment_t old_fs;
|
||||||
diff --git a/fs/splice.c b/fs/splice.c
|
diff --git a/fs/splice.c b/fs/splice.c
|
||||||
index ae41201..9753304 100644
|
index f3084cc..eb888c6 100644
|
||||||
--- a/fs/splice.c
|
--- a/fs/splice.c
|
||||||
+++ b/fs/splice.c
|
+++ b/fs/splice.c
|
||||||
@@ -853,8 +853,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
|
@@ -837,8 +837,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
|
||||||
/*
|
/*
|
||||||
* Attempt to initiate a splice from pipe to file.
|
* Attempt to initiate a splice from pipe to file.
|
||||||
*/
|
*/
|
||||||
|
@ -166,7 +167,7 @@ index ae41201..9753304 100644
|
||||||
{
|
{
|
||||||
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *,
|
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *,
|
||||||
loff_t *, size_t, unsigned int);
|
loff_t *, size_t, unsigned int);
|
||||||
@@ -870,9 +870,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
@@ -854,9 +854,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
||||||
/*
|
/*
|
||||||
* Attempt to initiate a splice from a file to a pipe.
|
* Attempt to initiate a splice from a file to a pipe.
|
||||||
*/
|
*/
|
||||||
|
@ -180,10 +181,10 @@ index ae41201..9753304 100644
|
||||||
ssize_t (*splice_read)(struct file *, loff_t *,
|
ssize_t (*splice_read)(struct file *, loff_t *,
|
||||||
struct pipe_inode_info *, size_t, unsigned int);
|
struct pipe_inode_info *, size_t, unsigned int);
|
||||||
diff --git a/fs/sync.c b/fs/sync.c
|
diff --git a/fs/sync.c b/fs/sync.c
|
||||||
index 2a54c1f..7a5fa3f 100644
|
index 83ac79a..fe15900 100644
|
||||||
--- a/fs/sync.c
|
--- a/fs/sync.c
|
||||||
+++ b/fs/sync.c
|
+++ b/fs/sync.c
|
||||||
@@ -27,7 +27,7 @@
|
@@ -28,7 +28,7 @@
|
||||||
* wait == 1 case since in that case write_inode() functions do
|
* wait == 1 case since in that case write_inode() functions do
|
||||||
* sync_dirty_buffer() and thus effectively write one block at a time.
|
* sync_dirty_buffer() and thus effectively write one block at a time.
|
||||||
*/
|
*/
|
||||||
|
@ -193,10 +194,10 @@ index 2a54c1f..7a5fa3f 100644
|
||||||
if (wait)
|
if (wait)
|
||||||
sync_inodes_sb(sb);
|
sync_inodes_sb(sb);
|
||||||
diff --git a/include/linux/file.h b/include/linux/file.h
|
diff --git a/include/linux/file.h b/include/linux/file.h
|
||||||
index 61eb82c..e700888 100644
|
index 279720d..76e38ea 100644
|
||||||
--- a/include/linux/file.h
|
--- a/include/linux/file.h
|
||||||
+++ b/include/linux/file.h
|
+++ b/include/linux/file.h
|
||||||
@@ -19,6 +19,7 @@ struct dentry;
|
@@ -20,6 +20,7 @@ struct dentry;
|
||||||
struct path;
|
struct path;
|
||||||
extern struct file *alloc_file(const struct path *, fmode_t mode,
|
extern struct file *alloc_file(const struct path *, fmode_t mode,
|
||||||
const struct file_operations *fop);
|
const struct file_operations *fop);
|
||||||
|
@ -205,10 +206,10 @@ index 61eb82c..e700888 100644
|
||||||
static inline void fput_light(struct file *file, int fput_needed)
|
static inline void fput_light(struct file *file, int fput_needed)
|
||||||
{
|
{
|
||||||
diff --git a/include/linux/fs.h b/include/linux/fs.h
|
diff --git a/include/linux/fs.h b/include/linux/fs.h
|
||||||
index cbfe127..9b21bb5 100644
|
index 885266a..e489e42 100644
|
||||||
--- a/include/linux/fs.h
|
--- a/include/linux/fs.h
|
||||||
+++ b/include/linux/fs.h
|
+++ b/include/linux/fs.h
|
||||||
@@ -1262,6 +1262,7 @@ extern void fasync_free(struct fasync_struct *);
|
@@ -1265,6 +1265,7 @@ extern void fasync_free(struct fasync_struct *);
|
||||||
/* can be called from interrupts */
|
/* can be called from interrupts */
|
||||||
extern void kill_fasync(struct fasync_struct **, int, int);
|
extern void kill_fasync(struct fasync_struct **, int, int);
|
||||||
|
|
||||||
|
@ -216,7 +217,7 @@ index cbfe127..9b21bb5 100644
|
||||||
extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force);
|
extern void __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 int f_setown(struct file *filp, unsigned long arg, int force);
|
||||||
extern void f_delown(struct file *filp);
|
extern void f_delown(struct file *filp);
|
||||||
@@ -1683,6 +1684,7 @@ struct file_operations {
|
@@ -1711,6 +1712,7 @@ struct file_operations {
|
||||||
ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);
|
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);
|
unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
|
||||||
int (*check_flags)(int);
|
int (*check_flags)(int);
|
||||||
|
@ -224,7 +225,7 @@ index cbfe127..9b21bb5 100644
|
||||||
int (*flock) (struct file *, int, struct file_lock *);
|
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_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);
|
ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
|
||||||
@@ -1753,6 +1755,12 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
|
@@ -1781,6 +1783,12 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
|
||||||
struct iovec *fast_pointer,
|
struct iovec *fast_pointer,
|
||||||
struct iovec **ret_pointer);
|
struct iovec **ret_pointer);
|
||||||
|
|
||||||
|
@ -235,9 +236,9 @@ index cbfe127..9b21bb5 100644
|
||||||
+vfs_writef_t vfs_writef(struct file *file);
|
+vfs_writef_t vfs_writef(struct file *file);
|
||||||
+
|
+
|
||||||
extern ssize_t __vfs_read(struct file *, char __user *, size_t, loff_t *);
|
extern ssize_t __vfs_read(struct file *, char __user *, size_t, loff_t *);
|
||||||
extern ssize_t __vfs_write(struct file *, const char __user *, size_t, loff_t *);
|
|
||||||
extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *);
|
extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *);
|
||||||
@@ -2157,6 +2165,7 @@ extern int current_umask(void);
|
extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *);
|
||||||
|
@@ -2183,6 +2191,7 @@ extern int current_umask(void);
|
||||||
extern void ihold(struct inode * inode);
|
extern void ihold(struct inode * inode);
|
||||||
extern void iput(struct inode *);
|
extern void iput(struct inode *);
|
||||||
extern int generic_update_time(struct inode *, struct timespec *, int);
|
extern int generic_update_time(struct inode *, struct timespec *, int);
|
||||||
|
@ -245,7 +246,7 @@ index cbfe127..9b21bb5 100644
|
||||||
|
|
||||||
/* /sys/fs */
|
/* /sys/fs */
|
||||||
extern struct kobject *fs_kobj;
|
extern struct kobject *fs_kobj;
|
||||||
@@ -2437,6 +2446,7 @@ static inline bool sb_is_blkdev_sb(struct super_block *sb)
|
@@ -2463,6 +2472,7 @@ static inline bool sb_is_blkdev_sb(struct super_block *sb)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -254,10 +255,10 @@ index cbfe127..9b21bb5 100644
|
||||||
extern const struct file_operations def_blk_fops;
|
extern const struct file_operations def_blk_fops;
|
||||||
extern const struct file_operations def_chr_fops;
|
extern const struct file_operations def_chr_fops;
|
||||||
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h
|
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h
|
||||||
index fffe49f..f753750 100644
|
index f301d31..c26f5b4 100644
|
||||||
--- a/include/linux/lockdep.h
|
--- a/include/linux/lockdep.h
|
||||||
+++ b/include/linux/lockdep.h
|
+++ b/include/linux/lockdep.h
|
||||||
@@ -317,6 +317,8 @@ static inline int lockdep_match_key(struct lockdep_map *lock,
|
@@ -406,6 +406,8 @@ static inline int lockdep_match_key(struct lockdep_map *lock,
|
||||||
return lock->key == key;
|
return lock->key == key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -266,7 +267,7 @@ index fffe49f..f753750 100644
|
||||||
/*
|
/*
|
||||||
* Acquire a lock.
|
* Acquire a lock.
|
||||||
*
|
*
|
||||||
@@ -448,6 +450,7 @@ struct lock_class_key { };
|
@@ -530,6 +532,7 @@ struct lock_class_key { };
|
||||||
|
|
||||||
#define lockdep_depth(tsk) (0)
|
#define lockdep_depth(tsk) (0)
|
||||||
|
|
||||||
|
@ -275,10 +276,10 @@ index fffe49f..f753750 100644
|
||||||
|
|
||||||
#define lockdep_assert_held(l) do { (void)(l); } while (0)
|
#define lockdep_assert_held(l) do { (void)(l); } while (0)
|
||||||
diff --git a/include/linux/mnt_namespace.h b/include/linux/mnt_namespace.h
|
diff --git a/include/linux/mnt_namespace.h b/include/linux/mnt_namespace.h
|
||||||
index 12b2ab5..8b810d1 100644
|
index 3594208..24f5fd1 100644
|
||||||
--- a/include/linux/mnt_namespace.h
|
--- a/include/linux/mnt_namespace.h
|
||||||
+++ b/include/linux/mnt_namespace.h
|
+++ b/include/linux/mnt_namespace.h
|
||||||
@@ -5,11 +5,14 @@
|
@@ -6,11 +6,14 @@
|
||||||
struct mnt_namespace;
|
struct mnt_namespace;
|
||||||
struct fs_struct;
|
struct fs_struct;
|
||||||
struct user_namespace;
|
struct user_namespace;
|
||||||
|
@ -294,10 +295,10 @@ index 12b2ab5..8b810d1 100644
|
||||||
extern const struct file_operations proc_mountinfo_operations;
|
extern const struct file_operations proc_mountinfo_operations;
|
||||||
extern const struct file_operations proc_mountstats_operations;
|
extern const struct file_operations proc_mountstats_operations;
|
||||||
diff --git a/include/linux/splice.h b/include/linux/splice.h
|
diff --git a/include/linux/splice.h b/include/linux/splice.h
|
||||||
index db42746..12f3a5a 100644
|
index 74b4911..19789fb 100644
|
||||||
--- a/include/linux/splice.h
|
--- a/include/linux/splice.h
|
||||||
+++ b/include/linux/splice.h
|
+++ b/include/linux/splice.h
|
||||||
@@ -86,4 +86,10 @@ extern void splice_shrink_spd(struct splice_pipe_desc *);
|
@@ -87,4 +87,10 @@ extern void splice_shrink_spd(struct splice_pipe_desc *);
|
||||||
|
|
||||||
extern const struct pipe_buf_operations page_cache_pipe_buf_ops;
|
extern const struct pipe_buf_operations page_cache_pipe_buf_ops;
|
||||||
extern const struct pipe_buf_operations default_pipe_buf_ops;
|
extern const struct pipe_buf_operations default_pipe_buf_ops;
|
||||||
|
@ -309,10 +310,10 @@ index db42746..12f3a5a 100644
|
||||||
+ unsigned int flags);
|
+ unsigned int flags);
|
||||||
#endif
|
#endif
|
||||||
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
|
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
|
||||||
index 7d2499b..b072240 100644
|
index e36e652..bc97a97 100644
|
||||||
--- a/kernel/locking/lockdep.c
|
--- a/kernel/locking/lockdep.c
|
||||||
+++ b/kernel/locking/lockdep.c
|
+++ b/kernel/locking/lockdep.c
|
||||||
@@ -140,7 +140,7 @@ static struct lock_list list_entries[MAX_LOCKDEP_ENTRIES];
|
@@ -144,7 +144,7 @@ static struct lock_list list_entries[MAX_LOCKDEP_ENTRIES];
|
||||||
unsigned long nr_lock_classes;
|
unsigned long nr_lock_classes;
|
||||||
static struct lock_class lock_classes[MAX_LOCKDEP_KEYS];
|
static struct lock_class lock_classes[MAX_LOCKDEP_KEYS];
|
||||||
|
|
||||||
|
@ -321,7 +322,7 @@ index 7d2499b..b072240 100644
|
||||||
{
|
{
|
||||||
if (!hlock->class_idx) {
|
if (!hlock->class_idx) {
|
||||||
/*
|
/*
|
||||||
@@ -151,6 +151,7 @@ static inline struct lock_class *hlock_class(struct held_lock *hlock)
|
@@ -155,6 +155,7 @@ static inline struct lock_class *hlock_class(struct held_lock *hlock)
|
||||||
}
|
}
|
||||||
return lock_classes + hlock->class_idx - 1;
|
return lock_classes + hlock->class_idx - 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
aufs4.13 kbuild patch
|
SPDX-License-Identifier: GPL-2.0
|
||||||
|
aufs4.14 kbuild patch
|
||||||
|
|
||||||
diff --git a/fs/Kconfig b/fs/Kconfig
|
diff --git a/fs/Kconfig b/fs/Kconfig
|
||||||
index 7aee6d6..ec92031 100644
|
index 7aee6d6..ec92031 100644
|
||||||
|
@ -13,10 +14,10 @@ index 7aee6d6..ec92031 100644
|
||||||
endif # MISC_FILESYSTEMS
|
endif # MISC_FILESYSTEMS
|
||||||
|
|
||||||
diff --git a/fs/Makefile b/fs/Makefile
|
diff --git a/fs/Makefile b/fs/Makefile
|
||||||
index 7bbaca9..a026491 100644
|
index ef772f1..51779e68c 100644
|
||||||
--- a/fs/Makefile
|
--- a/fs/Makefile
|
||||||
+++ b/fs/Makefile
|
+++ b/fs/Makefile
|
||||||
@@ -128,3 +128,4 @@ obj-y += exofs/ # Multiple modules
|
@@ -129,3 +129,4 @@ obj-y += exofs/ # Multiple modules
|
||||||
obj-$(CONFIG_CEPH_FS) += ceph/
|
obj-$(CONFIG_CEPH_FS) += ceph/
|
||||||
obj-$(CONFIG_PSTORE) += pstore/
|
obj-$(CONFIG_PSTORE) += pstore/
|
||||||
obj-$(CONFIG_EFIVAR_FS) += efivarfs/
|
obj-$(CONFIG_EFIVAR_FS) += efivarfs/
|
||||||
|
|
|
@ -1,49 +1,14 @@
|
||||||
aufs4.13 loopback patch
|
SPDX-License-Identifier: GPL-2.0
|
||||||
|
aufs4.14 loopback patch
|
||||||
|
|
||||||
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
|
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
|
||||||
index 10707c3..af32e47 100644
|
index d44de9d..095672b 100644
|
||||||
--- a/drivers/block/loop.c
|
--- a/drivers/block/loop.c
|
||||||
+++ b/drivers/block/loop.c
|
+++ b/drivers/block/loop.c
|
||||||
@@ -547,7 +547,7 @@ static int do_req_filebacked(struct loop_device *lo, struct request *rq)
|
@@ -595,6 +595,15 @@ static inline void loop_update_dio(struct loop_device *lo)
|
||||||
|
lo->use_dio);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct switch_request {
|
|
||||||
- struct file *file;
|
|
||||||
+ struct file *file, *virt_file;
|
|
||||||
struct completion wait;
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -573,6 +573,7 @@ static void do_loop_switch(struct loop_device *lo, struct switch_request *p)
|
|
||||||
mapping = file->f_mapping;
|
|
||||||
mapping_set_gfp_mask(old_file->f_mapping, lo->old_gfp_mask);
|
|
||||||
lo->lo_backing_file = file;
|
|
||||||
+ lo->lo_backing_virt_file = p->virt_file;
|
|
||||||
lo->lo_blocksize = S_ISBLK(mapping->host->i_mode) ?
|
|
||||||
mapping->host->i_bdev->bd_block_size : PAGE_SIZE;
|
|
||||||
lo->old_gfp_mask = mapping_gfp_mask(mapping);
|
|
||||||
@@ -585,11 +586,13 @@ static void do_loop_switch(struct loop_device *lo, struct switch_request *p)
|
|
||||||
* First it needs to flush existing IO, it does this by sending a magic
|
|
||||||
* BIO down the pipe. The completion of this BIO does the actual switch.
|
|
||||||
*/
|
|
||||||
-static int loop_switch(struct loop_device *lo, struct file *file)
|
|
||||||
+static int loop_switch(struct loop_device *lo, struct file *file,
|
|
||||||
+ struct file *virt_file)
|
|
||||||
{
|
|
||||||
struct switch_request w;
|
|
||||||
|
|
||||||
w.file = file;
|
|
||||||
+ w.virt_file = virt_file;
|
|
||||||
|
|
||||||
/* freeze queue and wait for completion of scheduled requests */
|
|
||||||
blk_mq_freeze_queue(lo->lo_queue);
|
|
||||||
@@ -611,7 +614,16 @@ static int loop_flush(struct loop_device *lo)
|
|
||||||
/* loop not yet configured, no running thread, nothing to flush */
|
|
||||||
if (lo->lo_state != Lo_bound)
|
|
||||||
return 0;
|
|
||||||
- return loop_switch(lo, NULL);
|
|
||||||
+ return loop_switch(lo, NULL, NULL);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static struct file *loop_real_file(struct file *file)
|
+static struct file *loop_real_file(struct file *file)
|
||||||
+{
|
+{
|
||||||
+ struct file *f = NULL;
|
+ struct file *f = NULL;
|
||||||
|
@ -51,10 +16,12 @@ index 10707c3..af32e47 100644
|
||||||
+ if (file->f_path.dentry->d_sb->s_op->real_loop)
|
+ if (file->f_path.dentry->d_sb->s_op->real_loop)
|
||||||
+ f = file->f_path.dentry->d_sb->s_op->real_loop(file);
|
+ f = file->f_path.dentry->d_sb->s_op->real_loop(file);
|
||||||
+ return f;
|
+ return f;
|
||||||
}
|
+}
|
||||||
|
+
|
||||||
static void loop_reread_partitions(struct loop_device *lo,
|
static void loop_reread_partitions(struct loop_device *lo,
|
||||||
@@ -648,6 +660,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
|
struct block_device *bdev)
|
||||||
|
{
|
||||||
|
@@ -629,6 +638,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
|
||||||
unsigned int arg)
|
unsigned int arg)
|
||||||
{
|
{
|
||||||
struct file *file, *old_file;
|
struct file *file, *old_file;
|
||||||
|
@ -62,7 +29,7 @@ index 10707c3..af32e47 100644
|
||||||
struct inode *inode;
|
struct inode *inode;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
@@ -664,9 +677,16 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
|
@@ -645,9 +655,16 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
|
||||||
file = fget(arg);
|
file = fget(arg);
|
||||||
if (!file)
|
if (!file)
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -79,14 +46,16 @@ index 10707c3..af32e47 100644
|
||||||
|
|
||||||
error = -EINVAL;
|
error = -EINVAL;
|
||||||
|
|
||||||
@@ -678,17 +698,21 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
|
@@ -662,6 +679,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
|
||||||
goto out_putf;
|
blk_mq_freeze_queue(lo->lo_queue);
|
||||||
|
mapping_set_gfp_mask(old_file->f_mapping, lo->old_gfp_mask);
|
||||||
/* and ... switch */
|
lo->lo_backing_file = file;
|
||||||
- error = loop_switch(lo, file);
|
+ lo->lo_backing_virt_file = virt_file;
|
||||||
+ error = loop_switch(lo, file, virt_file);
|
lo->old_gfp_mask = mapping_gfp_mask(file->f_mapping);
|
||||||
if (error)
|
mapping_set_gfp_mask(file->f_mapping,
|
||||||
goto out_putf;
|
lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS));
|
||||||
|
@@ -669,12 +687,16 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
|
||||||
|
blk_mq_unfreeze_queue(lo->lo_queue);
|
||||||
|
|
||||||
fput(old_file);
|
fput(old_file);
|
||||||
+ if (old_virt_file)
|
+ if (old_virt_file)
|
||||||
|
@ -102,7 +71,7 @@ index 10707c3..af32e47 100644
|
||||||
out:
|
out:
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
@@ -882,7 +906,7 @@ static int loop_prepare_queue(struct loop_device *lo)
|
@@ -868,7 +890,7 @@ static int loop_prepare_queue(struct loop_device *lo)
|
||||||
static int loop_set_fd(struct loop_device *lo, fmode_t mode,
|
static int loop_set_fd(struct loop_device *lo, fmode_t mode,
|
||||||
struct block_device *bdev, unsigned int arg)
|
struct block_device *bdev, unsigned int arg)
|
||||||
{
|
{
|
||||||
|
@ -110,8 +79,8 @@ index 10707c3..af32e47 100644
|
||||||
+ struct file *file, *f, *virt_file = NULL;
|
+ struct file *file, *f, *virt_file = NULL;
|
||||||
struct inode *inode;
|
struct inode *inode;
|
||||||
struct address_space *mapping;
|
struct address_space *mapping;
|
||||||
unsigned lo_blocksize;
|
int lo_flags = 0;
|
||||||
@@ -897,6 +921,12 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode,
|
@@ -882,6 +904,12 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode,
|
||||||
file = fget(arg);
|
file = fget(arg);
|
||||||
if (!file)
|
if (!file)
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -124,7 +93,7 @@ index 10707c3..af32e47 100644
|
||||||
|
|
||||||
error = -EBUSY;
|
error = -EBUSY;
|
||||||
if (lo->lo_state != Lo_unbound)
|
if (lo->lo_state != Lo_unbound)
|
||||||
@@ -949,6 +979,7 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode,
|
@@ -930,6 +958,7 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode,
|
||||||
lo->lo_device = bdev;
|
lo->lo_device = bdev;
|
||||||
lo->lo_flags = lo_flags;
|
lo->lo_flags = lo_flags;
|
||||||
lo->lo_backing_file = file;
|
lo->lo_backing_file = file;
|
||||||
|
@ -132,7 +101,7 @@ index 10707c3..af32e47 100644
|
||||||
lo->transfer = NULL;
|
lo->transfer = NULL;
|
||||||
lo->ioctl = NULL;
|
lo->ioctl = NULL;
|
||||||
lo->lo_sizelimit = 0;
|
lo->lo_sizelimit = 0;
|
||||||
@@ -981,6 +1012,8 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode,
|
@@ -963,6 +992,8 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode,
|
||||||
|
|
||||||
out_putf:
|
out_putf:
|
||||||
fput(file);
|
fput(file);
|
||||||
|
@ -141,7 +110,7 @@ index 10707c3..af32e47 100644
|
||||||
out:
|
out:
|
||||||
/* This is safe: open() is still holding a reference. */
|
/* This is safe: open() is still holding a reference. */
|
||||||
module_put(THIS_MODULE);
|
module_put(THIS_MODULE);
|
||||||
@@ -1027,6 +1060,7 @@ loop_init_xfer(struct loop_device *lo, struct loop_func_table *xfer,
|
@@ -1009,6 +1040,7 @@ loop_init_xfer(struct loop_device *lo, struct loop_func_table *xfer,
|
||||||
static int loop_clr_fd(struct loop_device *lo)
|
static int loop_clr_fd(struct loop_device *lo)
|
||||||
{
|
{
|
||||||
struct file *filp = lo->lo_backing_file;
|
struct file *filp = lo->lo_backing_file;
|
||||||
|
@ -149,7 +118,7 @@ index 10707c3..af32e47 100644
|
||||||
gfp_t gfp = lo->old_gfp_mask;
|
gfp_t gfp = lo->old_gfp_mask;
|
||||||
struct block_device *bdev = lo->lo_device;
|
struct block_device *bdev = lo->lo_device;
|
||||||
|
|
||||||
@@ -1058,6 +1092,7 @@ static int loop_clr_fd(struct loop_device *lo)
|
@@ -1040,6 +1072,7 @@ static int loop_clr_fd(struct loop_device *lo)
|
||||||
spin_lock_irq(&lo->lo_lock);
|
spin_lock_irq(&lo->lo_lock);
|
||||||
lo->lo_state = Lo_rundown;
|
lo->lo_state = Lo_rundown;
|
||||||
lo->lo_backing_file = NULL;
|
lo->lo_backing_file = NULL;
|
||||||
|
@ -157,7 +126,7 @@ index 10707c3..af32e47 100644
|
||||||
spin_unlock_irq(&lo->lo_lock);
|
spin_unlock_irq(&lo->lo_lock);
|
||||||
|
|
||||||
loop_release_xfer(lo);
|
loop_release_xfer(lo);
|
||||||
@@ -1102,6 +1137,8 @@ static int loop_clr_fd(struct loop_device *lo)
|
@@ -1087,6 +1120,8 @@ static int loop_clr_fd(struct loop_device *lo)
|
||||||
* bd_mutex which is usually taken before lo_ctl_mutex.
|
* bd_mutex which is usually taken before lo_ctl_mutex.
|
||||||
*/
|
*/
|
||||||
fput(filp);
|
fput(filp);
|
||||||
|
@ -167,7 +136,7 @@ index 10707c3..af32e47 100644
|
||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/drivers/block/loop.h b/drivers/block/loop.h
|
diff --git a/drivers/block/loop.h b/drivers/block/loop.h
|
||||||
index fecd3f9..6b3a7c9 100644
|
index 1f39567..128b137 100644
|
||||||
--- a/drivers/block/loop.h
|
--- a/drivers/block/loop.h
|
||||||
+++ b/drivers/block/loop.h
|
+++ b/drivers/block/loop.h
|
||||||
@@ -46,7 +46,7 @@ struct loop_device {
|
@@ -46,7 +46,7 @@ struct loop_device {
|
||||||
|
@ -177,13 +146,13 @@ index fecd3f9..6b3a7c9 100644
|
||||||
- struct file * lo_backing_file;
|
- struct file * lo_backing_file;
|
||||||
+ struct file * lo_backing_file, *lo_backing_virt_file;
|
+ struct file * lo_backing_file, *lo_backing_virt_file;
|
||||||
struct block_device *lo_device;
|
struct block_device *lo_device;
|
||||||
unsigned lo_blocksize;
|
|
||||||
void *key_data;
|
void *key_data;
|
||||||
|
|
||||||
diff --git a/fs/aufs/f_op.c b/fs/aufs/f_op.c
|
diff --git a/fs/aufs/f_op.c b/fs/aufs/f_op.c
|
||||||
index 8aff060..e853272 100644
|
index 0d4ea929..af293c2 100644
|
||||||
--- a/fs/aufs/f_op.c
|
--- a/fs/aufs/f_op.c
|
||||||
+++ b/fs/aufs/f_op.c
|
+++ b/fs/aufs/f_op.c
|
||||||
@@ -357,7 +357,7 @@ static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter)
|
@@ -358,7 +358,7 @@ static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter)
|
||||||
if (IS_ERR(h_file))
|
if (IS_ERR(h_file))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
@ -193,10 +162,10 @@ index 8aff060..e853272 100644
|
||||||
if (file->f_mapping != h_file->f_mapping) {
|
if (file->f_mapping != h_file->f_mapping) {
|
||||||
file->f_mapping = h_file->f_mapping;
|
file->f_mapping = h_file->f_mapping;
|
||||||
diff --git a/fs/aufs/loop.c b/fs/aufs/loop.c
|
diff --git a/fs/aufs/loop.c b/fs/aufs/loop.c
|
||||||
index e35f015..b37f1ae 100644
|
index 3b217c2..0f5ab22 100644
|
||||||
--- a/fs/aufs/loop.c
|
--- a/fs/aufs/loop.c
|
||||||
+++ b/fs/aufs/loop.c
|
+++ b/fs/aufs/loop.c
|
||||||
@@ -132,3 +132,19 @@ void au_loopback_fin(void)
|
@@ -133,3 +133,19 @@ void au_loopback_fin(void)
|
||||||
symbol_put(loop_backing_file);
|
symbol_put(loop_backing_file);
|
||||||
kfree(au_warn_loopback_array);
|
kfree(au_warn_loopback_array);
|
||||||
}
|
}
|
||||||
|
@ -217,10 +186,10 @@ index e35f015..b37f1ae 100644
|
||||||
+ return f;
|
+ return f;
|
||||||
+}
|
+}
|
||||||
diff --git a/fs/aufs/loop.h b/fs/aufs/loop.h
|
diff --git a/fs/aufs/loop.h b/fs/aufs/loop.h
|
||||||
index e2df495..36e5052 100644
|
index 7d7bf34..ba7c188 100644
|
||||||
--- a/fs/aufs/loop.h
|
--- a/fs/aufs/loop.h
|
||||||
+++ b/fs/aufs/loop.h
|
+++ b/fs/aufs/loop.h
|
||||||
@@ -25,7 +25,11 @@ void au_warn_loopback(struct super_block *h_sb);
|
@@ -26,7 +26,11 @@ void au_warn_loopback(struct super_block *h_sb);
|
||||||
|
|
||||||
int au_loopback_init(void);
|
int au_loopback_init(void);
|
||||||
void au_loopback_fin(void);
|
void au_loopback_fin(void);
|
||||||
|
@ -232,7 +201,7 @@ index e2df495..36e5052 100644
|
||||||
AuStubInt0(au_test_loopback_overlap, struct super_block *sb,
|
AuStubInt0(au_test_loopback_overlap, struct super_block *sb,
|
||||||
struct dentry *h_adding)
|
struct dentry *h_adding)
|
||||||
AuStubInt0(au_test_loopback_kthread, void)
|
AuStubInt0(au_test_loopback_kthread, void)
|
||||||
@@ -33,6 +37,8 @@ AuStubVoid(au_warn_loopback, struct super_block *h_sb)
|
@@ -34,6 +38,8 @@ AuStubVoid(au_warn_loopback, struct super_block *h_sb)
|
||||||
|
|
||||||
AuStubInt0(au_loopback_init, void)
|
AuStubInt0(au_loopback_init, void)
|
||||||
AuStubVoid(au_loopback_fin, void)
|
AuStubVoid(au_loopback_fin, void)
|
||||||
|
@ -242,10 +211,10 @@ index e2df495..36e5052 100644
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
diff --git a/fs/aufs/super.c b/fs/aufs/super.c
|
diff --git a/fs/aufs/super.c b/fs/aufs/super.c
|
||||||
index 3c300125..128d790 100644
|
index 75c2e17..ebb1cca 100644
|
||||||
--- a/fs/aufs/super.c
|
--- a/fs/aufs/super.c
|
||||||
+++ b/fs/aufs/super.c
|
+++ b/fs/aufs/super.c
|
||||||
@@ -838,7 +838,10 @@ static const struct super_operations aufs_sop = {
|
@@ -839,7 +839,10 @@ static const struct super_operations aufs_sop = {
|
||||||
.statfs = aufs_statfs,
|
.statfs = aufs_statfs,
|
||||||
.put_super = aufs_put_super,
|
.put_super = aufs_put_super,
|
||||||
.sync_fs = aufs_sync_fs,
|
.sync_fs = aufs_sync_fs,
|
||||||
|
@ -258,10 +227,10 @@ index 3c300125..128d790 100644
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
diff --git a/include/linux/fs.h b/include/linux/fs.h
|
diff --git a/include/linux/fs.h b/include/linux/fs.h
|
||||||
index 9b21bb5..f7124fa 100644
|
index e489e42..002cda0 100644
|
||||||
--- a/include/linux/fs.h
|
--- a/include/linux/fs.h
|
||||||
+++ b/include/linux/fs.h
|
+++ b/include/linux/fs.h
|
||||||
@@ -1814,6 +1814,10 @@ struct super_operations {
|
@@ -1839,6 +1839,10 @@ struct super_operations {
|
||||||
struct shrink_control *);
|
struct shrink_control *);
|
||||||
long (*free_cached_objects)(struct super_block *,
|
long (*free_cached_objects)(struct super_block *,
|
||||||
struct shrink_control *);
|
struct shrink_control *);
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
aufs4.13 mmap patch
|
SPDX-License-Identifier: GPL-2.0
|
||||||
|
aufs4.14 mmap patch
|
||||||
|
|
||||||
diff --git a/fs/proc/base.c b/fs/proc/base.c
|
diff --git a/fs/proc/base.c b/fs/proc/base.c
|
||||||
index 719c2e9..a1b7968 100644
|
index 9d357b2..11f4f23 100644
|
||||||
--- a/fs/proc/base.c
|
--- a/fs/proc/base.c
|
||||||
+++ b/fs/proc/base.c
|
+++ b/fs/proc/base.c
|
||||||
@@ -1986,7 +1986,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path)
|
@@ -1988,7 +1988,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path)
|
||||||
down_read(&mm->mmap_sem);
|
down_read(&mm->mmap_sem);
|
||||||
vma = find_exact_vma(mm, vm_start, vm_end);
|
vma = find_exact_vma(mm, vm_start, vm_end);
|
||||||
if (vma && vma->vm_file) {
|
if (vma && vma->vm_file) {
|
||||||
|
@ -30,10 +31,10 @@ index 7563437..7c0dc0f 100644
|
||||||
ino = inode->i_ino;
|
ino = inode->i_ino;
|
||||||
}
|
}
|
||||||
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
|
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
|
||||||
index fe8f326..b2f7f1a 100644
|
index 6744bd7..6d4dea3 100644
|
||||||
--- a/fs/proc/task_mmu.c
|
--- a/fs/proc/task_mmu.c
|
||||||
+++ b/fs/proc/task_mmu.c
|
+++ b/fs/proc/task_mmu.c
|
||||||
@@ -293,7 +293,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
|
@@ -310,7 +310,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
|
||||||
const char *name = NULL;
|
const char *name = NULL;
|
||||||
|
|
||||||
if (file) {
|
if (file) {
|
||||||
|
@ -45,7 +46,7 @@ index fe8f326..b2f7f1a 100644
|
||||||
dev = inode->i_sb->s_dev;
|
dev = inode->i_sb->s_dev;
|
||||||
ino = inode->i_ino;
|
ino = inode->i_ino;
|
||||||
pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
|
pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
|
||||||
@@ -1640,7 +1643,7 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
|
@@ -1739,7 +1742,7 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
|
||||||
struct proc_maps_private *proc_priv = &numa_priv->proc_maps;
|
struct proc_maps_private *proc_priv = &numa_priv->proc_maps;
|
||||||
struct vm_area_struct *vma = v;
|
struct vm_area_struct *vma = v;
|
||||||
struct numa_maps *md = &numa_priv->md;
|
struct numa_maps *md = &numa_priv->md;
|
||||||
|
@ -55,10 +56,10 @@ index fe8f326..b2f7f1a 100644
|
||||||
struct mm_walk walk = {
|
struct mm_walk walk = {
|
||||||
.hugetlb_entry = gather_hugetlb_stats,
|
.hugetlb_entry = gather_hugetlb_stats,
|
||||||
diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c
|
diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c
|
||||||
index 23266694..58e59b6 100644
|
index 5b62f57..dfb4a3b 100644
|
||||||
--- a/fs/proc/task_nommu.c
|
--- a/fs/proc/task_nommu.c
|
||||||
+++ b/fs/proc/task_nommu.c
|
+++ b/fs/proc/task_nommu.c
|
||||||
@@ -157,7 +157,10 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma,
|
@@ -156,7 +156,10 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma,
|
||||||
file = vma->vm_file;
|
file = vma->vm_file;
|
||||||
|
|
||||||
if (file) {
|
if (file) {
|
||||||
|
@ -71,10 +72,10 @@ index 23266694..58e59b6 100644
|
||||||
ino = inode->i_ino;
|
ino = inode->i_ino;
|
||||||
pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT;
|
pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT;
|
||||||
diff --git a/include/linux/mm.h b/include/linux/mm.h
|
diff --git a/include/linux/mm.h b/include/linux/mm.h
|
||||||
index c1f6c95..2d660a5 100644
|
index 43edf65..3f9acd9 100644
|
||||||
--- a/include/linux/mm.h
|
--- a/include/linux/mm.h
|
||||||
+++ b/include/linux/mm.h
|
+++ b/include/linux/mm.h
|
||||||
@@ -1307,6 +1307,28 @@ static inline int fixup_user_fault(struct task_struct *tsk,
|
@@ -1349,6 +1349,28 @@ static inline int fixup_user_fault(struct task_struct *tsk,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -104,10 +105,10 @@ index c1f6c95..2d660a5 100644
|
||||||
unsigned int gup_flags);
|
unsigned int gup_flags);
|
||||||
extern int access_remote_vm(struct mm_struct *mm, unsigned long addr,
|
extern int access_remote_vm(struct mm_struct *mm, unsigned long addr,
|
||||||
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
|
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
|
||||||
index 3cadee0..d0142c1 100644
|
index c85f11d..a63875a 100644
|
||||||
--- a/include/linux/mm_types.h
|
--- a/include/linux/mm_types.h
|
||||||
+++ b/include/linux/mm_types.h
|
+++ b/include/linux/mm_types.h
|
||||||
@@ -259,6 +259,7 @@ struct vm_region {
|
@@ -261,6 +261,7 @@ struct vm_region {
|
||||||
unsigned long vm_top; /* region allocated to here */
|
unsigned long vm_top; /* region allocated to here */
|
||||||
unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */
|
unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */
|
||||||
struct file *vm_file; /* the backing file or NULL */
|
struct file *vm_file; /* the backing file or NULL */
|
||||||
|
@ -115,19 +116,19 @@ index 3cadee0..d0142c1 100644
|
||||||
|
|
||||||
int vm_usage; /* region usage count (access under nommu_region_sem) */
|
int vm_usage; /* region usage count (access under nommu_region_sem) */
|
||||||
bool vm_icache_flushed : 1; /* true if the icache has been flushed for
|
bool vm_icache_flushed : 1; /* true if the icache has been flushed for
|
||||||
@@ -333,6 +334,7 @@ struct vm_area_struct {
|
@@ -335,6 +336,7 @@ struct vm_area_struct {
|
||||||
unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE
|
unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE
|
||||||
units */
|
units */
|
||||||
struct file * vm_file; /* File we map to (can be NULL). */
|
struct file * vm_file; /* File we map to (can be NULL). */
|
||||||
+ struct file *vm_prfile; /* shadow of vm_file */
|
+ struct file *vm_prfile; /* shadow of vm_file */
|
||||||
void * vm_private_data; /* was vm_pte (shared mem) */
|
void * vm_private_data; /* was vm_pte (shared mem) */
|
||||||
|
|
||||||
#ifndef CONFIG_MMU
|
atomic_long_t swap_readahead_info;
|
||||||
diff --git a/kernel/fork.c b/kernel/fork.c
|
diff --git a/kernel/fork.c b/kernel/fork.c
|
||||||
index b7e9e57..e731a9a 100644
|
index 07cc743..b1d2b43 100644
|
||||||
--- a/kernel/fork.c
|
--- a/kernel/fork.c
|
||||||
+++ b/kernel/fork.c
|
+++ b/kernel/fork.c
|
||||||
@@ -663,7 +663,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,
|
@@ -676,7 +676,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,
|
||||||
struct inode *inode = file_inode(file);
|
struct inode *inode = file_inode(file);
|
||||||
struct address_space *mapping = file->f_mapping;
|
struct address_space *mapping = file->f_mapping;
|
||||||
|
|
||||||
|
@ -137,10 +138,10 @@ index b7e9e57..e731a9a 100644
|
||||||
atomic_dec(&inode->i_writecount);
|
atomic_dec(&inode->i_writecount);
|
||||||
i_mmap_lock_write(mapping);
|
i_mmap_lock_write(mapping);
|
||||||
diff --git a/mm/Makefile b/mm/Makefile
|
diff --git a/mm/Makefile b/mm/Makefile
|
||||||
index 411bd24..e7de927 100644
|
index 4659b93..84488841 100644
|
||||||
--- a/mm/Makefile
|
--- a/mm/Makefile
|
||||||
+++ b/mm/Makefile
|
+++ b/mm/Makefile
|
||||||
@@ -39,7 +39,7 @@ obj-y := filemap.o mempool.o oom_kill.o \
|
@@ -40,7 +40,7 @@ obj-y := filemap.o mempool.o oom_kill.o \
|
||||||
mm_init.o mmu_context.o percpu.o slab_common.o \
|
mm_init.o mmu_context.o percpu.o slab_common.o \
|
||||||
compaction.o vmacache.o swap_slots.o \
|
compaction.o vmacache.o swap_slots.o \
|
||||||
interval_tree.o list_lru.o workingset.o \
|
interval_tree.o list_lru.o workingset.o \
|
||||||
|
@ -150,10 +151,10 @@ index 411bd24..e7de927 100644
|
||||||
obj-y += init-mm.o
|
obj-y += init-mm.o
|
||||||
|
|
||||||
diff --git a/mm/filemap.c b/mm/filemap.c
|
diff --git a/mm/filemap.c b/mm/filemap.c
|
||||||
index 65b4b6e..12f4c94 100644
|
index 594d73f..7183aef 100644
|
||||||
--- a/mm/filemap.c
|
--- a/mm/filemap.c
|
||||||
+++ b/mm/filemap.c
|
+++ b/mm/filemap.c
|
||||||
@@ -2543,7 +2543,7 @@ int filemap_page_mkwrite(struct vm_fault *vmf)
|
@@ -2590,7 +2590,7 @@ int filemap_page_mkwrite(struct vm_fault *vmf)
|
||||||
int ret = VM_FAULT_LOCKED;
|
int ret = VM_FAULT_LOCKED;
|
||||||
|
|
||||||
sb_start_pagefault(inode->i_sb);
|
sb_start_pagefault(inode->i_sb);
|
||||||
|
@ -163,10 +164,10 @@ index 65b4b6e..12f4c94 100644
|
||||||
if (page->mapping != inode->i_mapping) {
|
if (page->mapping != inode->i_mapping) {
|
||||||
unlock_page(page);
|
unlock_page(page);
|
||||||
diff --git a/mm/mmap.c b/mm/mmap.c
|
diff --git a/mm/mmap.c b/mm/mmap.c
|
||||||
index f19efcf..7fdd59e 100644
|
index 680506f..081406a 100644
|
||||||
--- a/mm/mmap.c
|
--- a/mm/mmap.c
|
||||||
+++ b/mm/mmap.c
|
+++ b/mm/mmap.c
|
||||||
@@ -170,7 +170,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
|
@@ -171,7 +171,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
|
||||||
if (vma->vm_ops && vma->vm_ops->close)
|
if (vma->vm_ops && vma->vm_ops->close)
|
||||||
vma->vm_ops->close(vma);
|
vma->vm_ops->close(vma);
|
||||||
if (vma->vm_file)
|
if (vma->vm_file)
|
||||||
|
@ -175,7 +176,7 @@ index f19efcf..7fdd59e 100644
|
||||||
mpol_put(vma_policy(vma));
|
mpol_put(vma_policy(vma));
|
||||||
kmem_cache_free(vm_area_cachep, vma);
|
kmem_cache_free(vm_area_cachep, vma);
|
||||||
return next;
|
return next;
|
||||||
@@ -895,7 +895,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
|
@@ -896,7 +896,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
|
||||||
if (remove_next) {
|
if (remove_next) {
|
||||||
if (file) {
|
if (file) {
|
||||||
uprobe_munmap(next, next->vm_start, next->vm_end);
|
uprobe_munmap(next, next->vm_start, next->vm_end);
|
||||||
|
@ -184,7 +185,7 @@ index f19efcf..7fdd59e 100644
|
||||||
}
|
}
|
||||||
if (next->anon_vma)
|
if (next->anon_vma)
|
||||||
anon_vma_merge(vma, next);
|
anon_vma_merge(vma, next);
|
||||||
@@ -1745,8 +1745,8 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
|
@@ -1746,8 +1746,8 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
|
||||||
return addr;
|
return addr;
|
||||||
|
|
||||||
unmap_and_free_vma:
|
unmap_and_free_vma:
|
||||||
|
@ -194,7 +195,7 @@ index f19efcf..7fdd59e 100644
|
||||||
|
|
||||||
/* Undo any partial mapping done by a device driver. */
|
/* Undo any partial mapping done by a device driver. */
|
||||||
unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end);
|
unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end);
|
||||||
@@ -2568,7 +2568,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
|
@@ -2569,7 +2569,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||||
goto out_free_mpol;
|
goto out_free_mpol;
|
||||||
|
|
||||||
if (new->vm_file)
|
if (new->vm_file)
|
||||||
|
@ -203,7 +204,7 @@ index f19efcf..7fdd59e 100644
|
||||||
|
|
||||||
if (new->vm_ops && new->vm_ops->open)
|
if (new->vm_ops && new->vm_ops->open)
|
||||||
new->vm_ops->open(new);
|
new->vm_ops->open(new);
|
||||||
@@ -2587,7 +2587,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
|
@@ -2588,7 +2588,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||||
if (new->vm_ops && new->vm_ops->close)
|
if (new->vm_ops && new->vm_ops->close)
|
||||||
new->vm_ops->close(new);
|
new->vm_ops->close(new);
|
||||||
if (new->vm_file)
|
if (new->vm_file)
|
||||||
|
@ -212,7 +213,7 @@ index f19efcf..7fdd59e 100644
|
||||||
unlink_anon_vmas(new);
|
unlink_anon_vmas(new);
|
||||||
out_free_mpol:
|
out_free_mpol:
|
||||||
mpol_put(vma_policy(new));
|
mpol_put(vma_policy(new));
|
||||||
@@ -2741,7 +2741,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
|
@@ -2750,7 +2750,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
|
||||||
struct vm_area_struct *vma;
|
struct vm_area_struct *vma;
|
||||||
unsigned long populate = 0;
|
unsigned long populate = 0;
|
||||||
unsigned long ret = -EINVAL;
|
unsigned long ret = -EINVAL;
|
||||||
|
@ -221,7 +222,7 @@ index f19efcf..7fdd59e 100644
|
||||||
|
|
||||||
pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.txt.\n",
|
pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.txt.\n",
|
||||||
current->comm, current->pid);
|
current->comm, current->pid);
|
||||||
@@ -2816,10 +2816,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
|
@@ -2825,10 +2825,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,7 +251,7 @@ index f19efcf..7fdd59e 100644
|
||||||
out:
|
out:
|
||||||
up_write(&mm->mmap_sem);
|
up_write(&mm->mmap_sem);
|
||||||
if (populate)
|
if (populate)
|
||||||
@@ -3110,7 +3127,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
|
@@ -3136,7 +3153,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
|
||||||
if (anon_vma_clone(new_vma, vma))
|
if (anon_vma_clone(new_vma, vma))
|
||||||
goto out_free_mempol;
|
goto out_free_mempol;
|
||||||
if (new_vma->vm_file)
|
if (new_vma->vm_file)
|
||||||
|
@ -260,7 +261,7 @@ index f19efcf..7fdd59e 100644
|
||||||
new_vma->vm_ops->open(new_vma);
|
new_vma->vm_ops->open(new_vma);
|
||||||
vma_link(mm, new_vma, prev, rb_link, rb_parent);
|
vma_link(mm, new_vma, prev, rb_link, rb_parent);
|
||||||
diff --git a/mm/nommu.c b/mm/nommu.c
|
diff --git a/mm/nommu.c b/mm/nommu.c
|
||||||
index fc184f5..637ea81 100644
|
index 17c00d9..4bcdf94 100644
|
||||||
--- a/mm/nommu.c
|
--- a/mm/nommu.c
|
||||||
+++ b/mm/nommu.c
|
+++ b/mm/nommu.c
|
||||||
@@ -641,7 +641,7 @@ static void __put_nommu_region(struct vm_region *region)
|
@@ -641,7 +641,7 @@ static void __put_nommu_region(struct vm_region *region)
|
||||||
|
@ -281,7 +282,7 @@ index fc184f5..637ea81 100644
|
||||||
put_nommu_region(vma->vm_region);
|
put_nommu_region(vma->vm_region);
|
||||||
kmem_cache_free(vm_area_cachep, vma);
|
kmem_cache_free(vm_area_cachep, vma);
|
||||||
}
|
}
|
||||||
@@ -1326,7 +1326,7 @@ unsigned long do_mmap(struct file *file,
|
@@ -1321,7 +1321,7 @@ unsigned long do_mmap(struct file *file,
|
||||||
goto error_just_free;
|
goto error_just_free;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -290,7 +291,7 @@ index fc184f5..637ea81 100644
|
||||||
kmem_cache_free(vm_region_jar, region);
|
kmem_cache_free(vm_region_jar, region);
|
||||||
region = pregion;
|
region = pregion;
|
||||||
result = start;
|
result = start;
|
||||||
@@ -1401,10 +1401,10 @@ unsigned long do_mmap(struct file *file,
|
@@ -1396,10 +1396,10 @@ unsigned long do_mmap(struct file *file,
|
||||||
up_write(&nommu_region_sem);
|
up_write(&nommu_region_sem);
|
||||||
error:
|
error:
|
||||||
if (region->vm_file)
|
if (region->vm_file)
|
||||||
|
@ -305,11 +306,12 @@ index fc184f5..637ea81 100644
|
||||||
|
|
||||||
diff --git a/mm/prfile.c b/mm/prfile.c
|
diff --git a/mm/prfile.c b/mm/prfile.c
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..1ef053b
|
index 0000000..3f56669
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/mm/prfile.c
|
+++ b/mm/prfile.c
|
||||||
@@ -0,0 +1,85 @@
|
@@ -0,0 +1,86 @@
|
||||||
+/*
|
+/*
|
||||||
|
+ * SPDX-License-Identifier: GPL-2.0
|
||||||
+ * Mainly for aufs which mmap(2) different file and wants to print different
|
+ * Mainly for aufs which mmap(2) different file and wants to print different
|
||||||
+ * path in /proc/PID/maps.
|
+ * path in /proc/PID/maps.
|
||||||
+ * Call these functions via macros defined in linux/mm.h.
|
+ * Call these functions via macros defined in linux/mm.h.
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
aufs4.13 standalone patch
|
SPDX-License-Identifier: GPL-2.0
|
||||||
|
aufs4.14 standalone patch
|
||||||
|
|
||||||
diff --git a/fs/dcache.c b/fs/dcache.c
|
diff --git a/fs/dcache.c b/fs/dcache.c
|
||||||
index e3719a5..3203470 100644
|
index e3719a5..3203470 100644
|
||||||
|
@ -21,7 +22,7 @@ index e3719a5..3203470 100644
|
||||||
/**
|
/**
|
||||||
* d_ancestor - search for an ancestor
|
* d_ancestor - search for an ancestor
|
||||||
diff --git a/fs/exec.c b/fs/exec.c
|
diff --git a/fs/exec.c b/fs/exec.c
|
||||||
index 62175cb..f0b6fdd 100644
|
index 3e14ba2..6818b01 100644
|
||||||
--- a/fs/exec.c
|
--- a/fs/exec.c
|
||||||
+++ b/fs/exec.c
|
+++ b/fs/exec.c
|
||||||
@@ -109,6 +109,7 @@ bool path_noexec(const struct path *path)
|
@@ -109,6 +109,7 @@ bool path_noexec(const struct path *path)
|
||||||
|
@ -33,10 +34,10 @@ index 62175cb..f0b6fdd 100644
|
||||||
#ifdef CONFIG_USELIB
|
#ifdef CONFIG_USELIB
|
||||||
/*
|
/*
|
||||||
diff --git a/fs/fcntl.c b/fs/fcntl.c
|
diff --git a/fs/fcntl.c b/fs/fcntl.c
|
||||||
index 659760e..5c37087 100644
|
index cffefab..725d190 100644
|
||||||
--- a/fs/fcntl.c
|
--- a/fs/fcntl.c
|
||||||
+++ b/fs/fcntl.c
|
+++ b/fs/fcntl.c
|
||||||
@@ -84,6 +84,7 @@ int setfl(int fd, struct file * filp, unsigned long arg)
|
@@ -85,6 +85,7 @@ int setfl(int fd, struct file * filp, unsigned long arg)
|
||||||
out:
|
out:
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
@ -45,7 +46,7 @@ index 659760e..5c37087 100644
|
||||||
static void f_modown(struct file *filp, struct pid *pid, enum pid_type type,
|
static void f_modown(struct file *filp, struct pid *pid, enum pid_type type,
|
||||||
int force)
|
int force)
|
||||||
diff --git a/fs/file_table.c b/fs/file_table.c
|
diff --git a/fs/file_table.c b/fs/file_table.c
|
||||||
index 72e861a..01ae52f 100644
|
index 61517f5..c6bab39c 100644
|
||||||
--- a/fs/file_table.c
|
--- a/fs/file_table.c
|
||||||
+++ b/fs/file_table.c
|
+++ b/fs/file_table.c
|
||||||
@@ -148,6 +148,7 @@ struct file *get_empty_filp(void)
|
@@ -148,6 +148,7 @@ struct file *get_empty_filp(void)
|
||||||
|
@ -56,7 +57,7 @@ index 72e861a..01ae52f 100644
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* alloc_file - allocate and initialize a 'struct file'
|
* alloc_file - allocate and initialize a 'struct file'
|
||||||
@@ -260,6 +261,7 @@ void flush_delayed_fput(void)
|
@@ -258,6 +259,7 @@ void flush_delayed_fput(void)
|
||||||
{
|
{
|
||||||
delayed_fput(NULL);
|
delayed_fput(NULL);
|
||||||
}
|
}
|
||||||
|
@ -64,7 +65,7 @@ index 72e861a..01ae52f 100644
|
||||||
|
|
||||||
static DECLARE_DELAYED_WORK(delayed_fput_work, delayed_fput);
|
static DECLARE_DELAYED_WORK(delayed_fput_work, delayed_fput);
|
||||||
|
|
||||||
@@ -302,6 +304,7 @@ void __fput_sync(struct file *file)
|
@@ -300,6 +302,7 @@ void __fput_sync(struct file *file)
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(fput);
|
EXPORT_SYMBOL(fput);
|
||||||
|
@ -72,19 +73,19 @@ index 72e861a..01ae52f 100644
|
||||||
|
|
||||||
void put_filp(struct file *file)
|
void put_filp(struct file *file)
|
||||||
{
|
{
|
||||||
@@ -310,6 +313,7 @@ void put_filp(struct file *file)
|
@@ -308,6 +311,7 @@ void put_filp(struct file *file)
|
||||||
file_free(file);
|
file_free(file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+EXPORT_SYMBOL_GPL(put_filp);
|
+EXPORT_SYMBOL_GPL(put_filp);
|
||||||
|
|
||||||
void __init files_init(void)
|
void __init files_init(void)
|
||||||
{
|
{
|
||||||
diff --git a/fs/inode.c b/fs/inode.c
|
diff --git a/fs/inode.c b/fs/inode.c
|
||||||
index 73820bf..7db829e 100644
|
index f7800d6..f31a6c7 100644
|
||||||
--- a/fs/inode.c
|
--- a/fs/inode.c
|
||||||
+++ b/fs/inode.c
|
+++ b/fs/inode.c
|
||||||
@@ -1650,6 +1650,7 @@ int update_time(struct inode *inode, struct timespec *time, int flags)
|
@@ -1664,6 +1664,7 @@ int update_time(struct inode *inode, struct timespec *time, int flags)
|
||||||
|
|
||||||
return update_time(inode, time, flags);
|
return update_time(inode, time, flags);
|
||||||
}
|
}
|
||||||
|
@ -93,10 +94,10 @@ index 73820bf..7db829e 100644
|
||||||
/**
|
/**
|
||||||
* touch_atime - update the access time
|
* touch_atime - update the access time
|
||||||
diff --git a/fs/namespace.c b/fs/namespace.c
|
diff --git a/fs/namespace.c b/fs/namespace.c
|
||||||
index 8601f8d..2268be6 100644
|
index e5a4a7f..6d0c376 100644
|
||||||
--- a/fs/namespace.c
|
--- a/fs/namespace.c
|
||||||
+++ b/fs/namespace.c
|
+++ b/fs/namespace.c
|
||||||
@@ -463,6 +463,7 @@ void __mnt_drop_write(struct vfsmount *mnt)
|
@@ -517,6 +517,7 @@ void __mnt_drop_write(struct vfsmount *mnt)
|
||||||
mnt_dec_writers(real_mount(mnt));
|
mnt_dec_writers(real_mount(mnt));
|
||||||
preempt_enable();
|
preempt_enable();
|
||||||
}
|
}
|
||||||
|
@ -104,7 +105,7 @@ index 8601f8d..2268be6 100644
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mnt_drop_write - give up write access to a mount
|
* mnt_drop_write - give up write access to a mount
|
||||||
@@ -791,6 +792,7 @@ int is_current_mnt_ns(struct vfsmount *mnt)
|
@@ -851,6 +852,7 @@ int is_current_mnt_ns(struct vfsmount *mnt)
|
||||||
{
|
{
|
||||||
return check_mnt(real_mount(mnt));
|
return check_mnt(real_mount(mnt));
|
||||||
}
|
}
|
||||||
|
@ -112,7 +113,7 @@ index 8601f8d..2268be6 100644
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* vfsmount lock must be held for write
|
* vfsmount lock must be held for write
|
||||||
@@ -1829,6 +1831,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
|
@@ -1887,6 +1889,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -193,7 +194,7 @@ index 9991f88..117042c 100644
|
||||||
/*
|
/*
|
||||||
* Destroy all marks in destroy_list, waits for SRCU period to finish before
|
* Destroy all marks in destroy_list, waits for SRCU period to finish before
|
||||||
diff --git a/fs/open.c b/fs/open.c
|
diff --git a/fs/open.c b/fs/open.c
|
||||||
index 35bb784..92e08c5 100644
|
index 7ea1184..6e2e241 100644
|
||||||
--- a/fs/open.c
|
--- a/fs/open.c
|
||||||
+++ b/fs/open.c
|
+++ b/fs/open.c
|
||||||
@@ -64,6 +64,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
|
@@ -64,6 +64,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
|
||||||
|
@ -213,10 +214,18 @@ index 35bb784..92e08c5 100644
|
||||||
static int do_dentry_open(struct file *f,
|
static int do_dentry_open(struct file *f,
|
||||||
struct inode *inode,
|
struct inode *inode,
|
||||||
diff --git a/fs/read_write.c b/fs/read_write.c
|
diff --git a/fs/read_write.c b/fs/read_write.c
|
||||||
index 6e542f0..c6fa090 100644
|
index 2388284..b2a68e5 100644
|
||||||
--- a/fs/read_write.c
|
--- a/fs/read_write.c
|
||||||
+++ b/fs/read_write.c
|
+++ b/fs/read_write.c
|
||||||
@@ -483,6 +483,7 @@ vfs_readf_t vfs_readf(struct file *file)
|
@@ -454,6 +454,7 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
+EXPORT_SYMBOL_GPL(vfs_read);
|
||||||
|
|
||||||
|
static ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos)
|
||||||
|
{
|
||||||
|
@@ -494,6 +495,7 @@ vfs_readf_t vfs_readf(struct file *file)
|
||||||
return new_sync_read;
|
return new_sync_read;
|
||||||
return ERR_PTR(-ENOSYS);
|
return ERR_PTR(-ENOSYS);
|
||||||
}
|
}
|
||||||
|
@ -224,19 +233,27 @@ index 6e542f0..c6fa090 100644
|
||||||
|
|
||||||
vfs_writef_t vfs_writef(struct file *file)
|
vfs_writef_t vfs_writef(struct file *file)
|
||||||
{
|
{
|
||||||
@@ -494,6 +495,7 @@ vfs_writef_t vfs_writef(struct file *file)
|
@@ -505,6 +507,7 @@ vfs_writef_t vfs_writef(struct file *file)
|
||||||
return new_sync_write;
|
return new_sync_write;
|
||||||
return ERR_PTR(-ENOSYS);
|
return ERR_PTR(-ENOSYS);
|
||||||
}
|
}
|
||||||
+EXPORT_SYMBOL_GPL(vfs_writef);
|
+EXPORT_SYMBOL_GPL(vfs_writef);
|
||||||
|
|
||||||
ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t *pos)
|
ssize_t __kernel_write(struct file *file, const void *buf, size_t count, loff_t *pos)
|
||||||
|
{
|
||||||
|
@@ -574,6 +577,7 @@ ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
+EXPORT_SYMBOL_GPL(vfs_write);
|
||||||
|
|
||||||
|
static inline loff_t file_pos_read(struct file *file)
|
||||||
{
|
{
|
||||||
diff --git a/fs/splice.c b/fs/splice.c
|
diff --git a/fs/splice.c b/fs/splice.c
|
||||||
index 9753304..b38e036 100644
|
index eb888c6..7ab89d2 100644
|
||||||
--- a/fs/splice.c
|
--- a/fs/splice.c
|
||||||
+++ b/fs/splice.c
|
+++ b/fs/splice.c
|
||||||
@@ -866,6 +866,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
@@ -850,6 +850,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
||||||
|
|
||||||
return splice_write(pipe, out, ppos, len, flags);
|
return splice_write(pipe, out, ppos, len, flags);
|
||||||
}
|
}
|
||||||
|
@ -244,7 +261,7 @@ index 9753304..b38e036 100644
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Attempt to initiate a splice from a file to a pipe.
|
* Attempt to initiate a splice from a file to a pipe.
|
||||||
@@ -895,6 +896,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
|
@@ -879,6 +880,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
|
||||||
|
|
||||||
return splice_read(in, ppos, pipe, len, flags);
|
return splice_read(in, ppos, pipe, len, flags);
|
||||||
}
|
}
|
||||||
|
@ -253,10 +270,10 @@ index 9753304..b38e036 100644
|
||||||
/**
|
/**
|
||||||
* splice_direct_to_actor - splices data directly between two non-pipes
|
* splice_direct_to_actor - splices data directly between two non-pipes
|
||||||
diff --git a/fs/sync.c b/fs/sync.c
|
diff --git a/fs/sync.c b/fs/sync.c
|
||||||
index 7a5fa3f..c9b9d46 100644
|
index fe15900..e3386ea 100644
|
||||||
--- a/fs/sync.c
|
--- a/fs/sync.c
|
||||||
+++ b/fs/sync.c
|
+++ b/fs/sync.c
|
||||||
@@ -38,6 +38,7 @@ int __sync_filesystem(struct super_block *sb, int wait)
|
@@ -39,6 +39,7 @@ int __sync_filesystem(struct super_block *sb, int wait)
|
||||||
sb->s_op->sync_fs(sb, wait);
|
sb->s_op->sync_fs(sb, wait);
|
||||||
return __sync_blockdev(sb->s_bdev, wait);
|
return __sync_blockdev(sb->s_bdev, wait);
|
||||||
}
|
}
|
||||||
|
@ -265,10 +282,10 @@ index 7a5fa3f..c9b9d46 100644
|
||||||
/*
|
/*
|
||||||
* Write out and wait upon all dirty data associated with this
|
* Write out and wait upon all dirty data associated with this
|
||||||
diff --git a/fs/xattr.c b/fs/xattr.c
|
diff --git a/fs/xattr.c b/fs/xattr.c
|
||||||
index 464c94b..0234d49 100644
|
index 61cd28b..35570cd 100644
|
||||||
--- a/fs/xattr.c
|
--- a/fs/xattr.c
|
||||||
+++ b/fs/xattr.c
|
+++ b/fs/xattr.c
|
||||||
@@ -296,6 +296,7 @@ vfs_getxattr_alloc(struct dentry *dentry, const char *name, char **xattr_value,
|
@@ -297,6 +297,7 @@ vfs_getxattr_alloc(struct dentry *dentry, const char *name, char **xattr_value,
|
||||||
*xattr_value = value;
|
*xattr_value = value;
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
@ -277,10 +294,10 @@ index 464c94b..0234d49 100644
|
||||||
ssize_t
|
ssize_t
|
||||||
__vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name,
|
__vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name,
|
||||||
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
|
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
|
||||||
index b072240..80657d7 100644
|
index bc97a97..895a1ba 100644
|
||||||
--- a/kernel/locking/lockdep.c
|
--- a/kernel/locking/lockdep.c
|
||||||
+++ b/kernel/locking/lockdep.c
|
+++ b/kernel/locking/lockdep.c
|
||||||
@@ -151,6 +151,7 @@ inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock)
|
@@ -155,6 +155,7 @@ inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock)
|
||||||
}
|
}
|
||||||
return lock_classes + hlock->class_idx - 1;
|
return lock_classes + hlock->class_idx - 1;
|
||||||
}
|
}
|
||||||
|
@ -289,19 +306,19 @@ index b072240..80657d7 100644
|
||||||
|
|
||||||
#ifdef CONFIG_LOCK_STAT
|
#ifdef CONFIG_LOCK_STAT
|
||||||
diff --git a/kernel/task_work.c b/kernel/task_work.c
|
diff --git a/kernel/task_work.c b/kernel/task_work.c
|
||||||
index d513051..e056d54 100644
|
index 5718b3e..e6c64d9 100644
|
||||||
--- a/kernel/task_work.c
|
--- a/kernel/task_work.c
|
||||||
+++ b/kernel/task_work.c
|
+++ b/kernel/task_work.c
|
||||||
@@ -119,3 +119,4 @@ void task_work_run(void)
|
@@ -116,3 +116,4 @@ void task_work_run(void)
|
||||||
} while (work);
|
} while (work);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+EXPORT_SYMBOL_GPL(task_work_run);
|
+EXPORT_SYMBOL_GPL(task_work_run);
|
||||||
diff --git a/security/commoncap.c b/security/commoncap.c
|
diff --git a/security/commoncap.c b/security/commoncap.c
|
||||||
index 7abebd7..c079ce4 100644
|
index fc46f5b..90543ef 100644
|
||||||
--- a/security/commoncap.c
|
--- a/security/commoncap.c
|
||||||
+++ b/security/commoncap.c
|
+++ b/security/commoncap.c
|
||||||
@@ -1062,12 +1062,14 @@ int cap_mmap_addr(unsigned long addr)
|
@@ -1270,12 +1270,14 @@ int cap_mmap_addr(unsigned long addr)
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -317,10 +334,10 @@ index 7abebd7..c079ce4 100644
|
||||||
#ifdef CONFIG_SECURITY
|
#ifdef CONFIG_SECURITY
|
||||||
|
|
||||||
diff --git a/security/device_cgroup.c b/security/device_cgroup.c
|
diff --git a/security/device_cgroup.c b/security/device_cgroup.c
|
||||||
index 03c1652..f88c84b 100644
|
index 5ef7e52..e2e959d 100644
|
||||||
--- a/security/device_cgroup.c
|
--- a/security/device_cgroup.c
|
||||||
+++ b/security/device_cgroup.c
|
+++ b/security/device_cgroup.c
|
||||||
@@ -7,6 +7,7 @@
|
@@ -8,6 +8,7 @@
|
||||||
#include <linux/device_cgroup.h>
|
#include <linux/device_cgroup.h>
|
||||||
#include <linux/cgroup.h>
|
#include <linux/cgroup.h>
|
||||||
#include <linux/ctype.h>
|
#include <linux/ctype.h>
|
||||||
|
@ -328,7 +345,7 @@ index 03c1652..f88c84b 100644
|
||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
#include <linux/seq_file.h>
|
#include <linux/seq_file.h>
|
||||||
@@ -849,6 +850,7 @@ int __devcgroup_inode_permission(struct inode *inode, int mask)
|
@@ -850,6 +851,7 @@ int __devcgroup_inode_permission(struct inode *inode, int mask)
|
||||||
return __devcgroup_check_permission(type, imajor(inode), iminor(inode),
|
return __devcgroup_check_permission(type, imajor(inode), iminor(inode),
|
||||||
access);
|
access);
|
||||||
}
|
}
|
||||||
|
@ -337,10 +354,10 @@ index 03c1652..f88c84b 100644
|
||||||
int devcgroup_inode_mknod(int mode, dev_t dev)
|
int devcgroup_inode_mknod(int mode, dev_t dev)
|
||||||
{
|
{
|
||||||
diff --git a/security/security.c b/security/security.c
|
diff --git a/security/security.c b/security/security.c
|
||||||
index 3013237..342ce8b 100644
|
index 4bf0f57..b30d1e1 100644
|
||||||
--- a/security/security.c
|
--- a/security/security.c
|
||||||
+++ b/security/security.c
|
+++ b/security/security.c
|
||||||
@@ -535,6 +535,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry)
|
@@ -530,6 +530,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry)
|
||||||
return 0;
|
return 0;
|
||||||
return call_int_hook(path_rmdir, 0, dir, dentry);
|
return call_int_hook(path_rmdir, 0, dir, dentry);
|
||||||
}
|
}
|
||||||
|
@ -348,7 +365,7 @@ index 3013237..342ce8b 100644
|
||||||
|
|
||||||
int security_path_unlink(const struct path *dir, struct dentry *dentry)
|
int security_path_unlink(const struct path *dir, struct dentry *dentry)
|
||||||
{
|
{
|
||||||
@@ -551,6 +552,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry,
|
@@ -546,6 +547,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry,
|
||||||
return 0;
|
return 0;
|
||||||
return call_int_hook(path_symlink, 0, dir, dentry, old_name);
|
return call_int_hook(path_symlink, 0, dir, dentry, old_name);
|
||||||
}
|
}
|
||||||
|
@ -356,7 +373,7 @@ index 3013237..342ce8b 100644
|
||||||
|
|
||||||
int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
|
int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
|
||||||
struct dentry *new_dentry)
|
struct dentry *new_dentry)
|
||||||
@@ -559,6 +561,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
|
@@ -554,6 +556,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
|
||||||
return 0;
|
return 0;
|
||||||
return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry);
|
return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry);
|
||||||
}
|
}
|
||||||
|
@ -364,7 +381,7 @@ index 3013237..342ce8b 100644
|
||||||
|
|
||||||
int security_path_rename(const struct path *old_dir, struct dentry *old_dentry,
|
int security_path_rename(const struct path *old_dir, struct dentry *old_dentry,
|
||||||
const struct path *new_dir, struct dentry *new_dentry,
|
const struct path *new_dir, struct dentry *new_dentry,
|
||||||
@@ -586,6 +589,7 @@ int security_path_truncate(const struct path *path)
|
@@ -581,6 +584,7 @@ int security_path_truncate(const struct path *path)
|
||||||
return 0;
|
return 0;
|
||||||
return call_int_hook(path_truncate, 0, path);
|
return call_int_hook(path_truncate, 0, path);
|
||||||
}
|
}
|
||||||
|
@ -372,7 +389,7 @@ index 3013237..342ce8b 100644
|
||||||
|
|
||||||
int security_path_chmod(const struct path *path, umode_t mode)
|
int security_path_chmod(const struct path *path, umode_t mode)
|
||||||
{
|
{
|
||||||
@@ -593,6 +597,7 @@ int security_path_chmod(const struct path *path, umode_t mode)
|
@@ -588,6 +592,7 @@ int security_path_chmod(const struct path *path, umode_t mode)
|
||||||
return 0;
|
return 0;
|
||||||
return call_int_hook(path_chmod, 0, path, mode);
|
return call_int_hook(path_chmod, 0, path, mode);
|
||||||
}
|
}
|
||||||
|
@ -380,7 +397,7 @@ index 3013237..342ce8b 100644
|
||||||
|
|
||||||
int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
|
int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
|
||||||
{
|
{
|
||||||
@@ -600,6 +605,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
|
@@ -595,6 +600,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
|
||||||
return 0;
|
return 0;
|
||||||
return call_int_hook(path_chown, 0, path, uid, gid);
|
return call_int_hook(path_chown, 0, path, uid, gid);
|
||||||
}
|
}
|
||||||
|
@ -388,7 +405,7 @@ index 3013237..342ce8b 100644
|
||||||
|
|
||||||
int security_path_chroot(const struct path *path)
|
int security_path_chroot(const struct path *path)
|
||||||
{
|
{
|
||||||
@@ -685,6 +691,7 @@ int security_inode_readlink(struct dentry *dentry)
|
@@ -680,6 +686,7 @@ int security_inode_readlink(struct dentry *dentry)
|
||||||
return 0;
|
return 0;
|
||||||
return call_int_hook(inode_readlink, 0, dentry);
|
return call_int_hook(inode_readlink, 0, dentry);
|
||||||
}
|
}
|
||||||
|
@ -396,7 +413,7 @@ index 3013237..342ce8b 100644
|
||||||
|
|
||||||
int security_inode_follow_link(struct dentry *dentry, struct inode *inode,
|
int security_inode_follow_link(struct dentry *dentry, struct inode *inode,
|
||||||
bool rcu)
|
bool rcu)
|
||||||
@@ -700,6 +707,7 @@ int security_inode_permission(struct inode *inode, int mask)
|
@@ -695,6 +702,7 @@ int security_inode_permission(struct inode *inode, int mask)
|
||||||
return 0;
|
return 0;
|
||||||
return call_int_hook(inode_permission, 0, inode, mask);
|
return call_int_hook(inode_permission, 0, inode, mask);
|
||||||
}
|
}
|
||||||
|
@ -404,7 +421,7 @@ index 3013237..342ce8b 100644
|
||||||
|
|
||||||
int security_inode_setattr(struct dentry *dentry, struct iattr *attr)
|
int security_inode_setattr(struct dentry *dentry, struct iattr *attr)
|
||||||
{
|
{
|
||||||
@@ -871,6 +879,7 @@ int security_file_permission(struct file *file, int mask)
|
@@ -866,6 +874,7 @@ int security_file_permission(struct file *file, int mask)
|
||||||
|
|
||||||
return fsnotify_perm(file, mask);
|
return fsnotify_perm(file, mask);
|
||||||
}
|
}
|
||||||
|
@ -412,7 +429,7 @@ index 3013237..342ce8b 100644
|
||||||
|
|
||||||
int security_file_alloc(struct file *file)
|
int security_file_alloc(struct file *file)
|
||||||
{
|
{
|
||||||
@@ -930,6 +939,7 @@ int security_mmap_file(struct file *file, unsigned long prot,
|
@@ -925,6 +934,7 @@ int security_mmap_file(struct file *file, unsigned long prot,
|
||||||
return ret;
|
return ret;
|
||||||
return ima_file_mmap(file, prot);
|
return ima_file_mmap(file, prot);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,422 +0,0 @@
|
||||||
aufs4.13 standalone patch
|
|
||||||
|
|
||||||
diff --git a/fs/dcache.c b/fs/dcache.c
|
|
||||||
index e3719a5..3203470 100644
|
|
||||||
--- a/fs/dcache.c
|
|
||||||
+++ b/fs/dcache.c
|
|
||||||
@@ -1305,6 +1305,7 @@ void d_walk(struct dentry *parent, void *data,
|
|
||||||
seq = 1;
|
|
||||||
goto again;
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(d_walk);
|
|
||||||
|
|
||||||
struct check_mount {
|
|
||||||
struct vfsmount *mnt;
|
|
||||||
@@ -2894,6 +2895,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2)
|
|
||||||
|
|
||||||
write_sequnlock(&rename_lock);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(d_exchange);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* d_ancestor - search for an ancestor
|
|
||||||
diff --git a/fs/exec.c b/fs/exec.c
|
|
||||||
index 62175cb..f0b6fdd 100644
|
|
||||||
--- a/fs/exec.c
|
|
||||||
+++ b/fs/exec.c
|
|
||||||
@@ -109,6 +109,7 @@ bool path_noexec(const struct path *path)
|
|
||||||
return (path->mnt->mnt_flags & MNT_NOEXEC) ||
|
|
||||||
(path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(path_noexec);
|
|
||||||
|
|
||||||
#ifdef CONFIG_USELIB
|
|
||||||
/*
|
|
||||||
diff --git a/fs/fcntl.c b/fs/fcntl.c
|
|
||||||
index 659760e..5c37087 100644
|
|
||||||
--- a/fs/fcntl.c
|
|
||||||
+++ b/fs/fcntl.c
|
|
||||||
@@ -84,6 +84,7 @@ int setfl(int fd, struct file * filp, unsigned long arg)
|
|
||||||
out:
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(setfl);
|
|
||||||
|
|
||||||
static void f_modown(struct file *filp, struct pid *pid, enum pid_type type,
|
|
||||||
int force)
|
|
||||||
diff --git a/fs/file_table.c b/fs/file_table.c
|
|
||||||
index 72e861a..01ae52f 100644
|
|
||||||
--- a/fs/file_table.c
|
|
||||||
+++ b/fs/file_table.c
|
|
||||||
@@ -148,6 +148,7 @@ struct file *get_empty_filp(void)
|
|
||||||
}
|
|
||||||
return ERR_PTR(-ENFILE);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(get_empty_filp);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* alloc_file - allocate and initialize a 'struct file'
|
|
||||||
@@ -260,6 +261,7 @@ void flush_delayed_fput(void)
|
|
||||||
{
|
|
||||||
delayed_fput(NULL);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(flush_delayed_fput);
|
|
||||||
|
|
||||||
static DECLARE_DELAYED_WORK(delayed_fput_work, delayed_fput);
|
|
||||||
|
|
||||||
@@ -302,6 +304,7 @@ void __fput_sync(struct file *file)
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_SYMBOL(fput);
|
|
||||||
+EXPORT_SYMBOL_GPL(__fput_sync);
|
|
||||||
|
|
||||||
void put_filp(struct file *file)
|
|
||||||
{
|
|
||||||
@@ -310,6 +313,7 @@ void put_filp(struct file *file)
|
|
||||||
file_free(file);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(put_filp);
|
|
||||||
|
|
||||||
void __init files_init(void)
|
|
||||||
{
|
|
||||||
diff --git a/fs/inode.c b/fs/inode.c
|
|
||||||
index 73820bf..7db829e 100644
|
|
||||||
--- a/fs/inode.c
|
|
||||||
+++ b/fs/inode.c
|
|
||||||
@@ -1650,6 +1650,7 @@ int update_time(struct inode *inode, struct timespec *time, int flags)
|
|
||||||
|
|
||||||
return update_time(inode, time, flags);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(update_time);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* touch_atime - update the access time
|
|
||||||
diff --git a/fs/namespace.c b/fs/namespace.c
|
|
||||||
index 8601f8d..2268be6 100644
|
|
||||||
--- a/fs/namespace.c
|
|
||||||
+++ b/fs/namespace.c
|
|
||||||
@@ -463,6 +463,7 @@ void __mnt_drop_write(struct vfsmount *mnt)
|
|
||||||
mnt_dec_writers(real_mount(mnt));
|
|
||||||
preempt_enable();
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(__mnt_drop_write);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* mnt_drop_write - give up write access to a mount
|
|
||||||
@@ -791,6 +792,7 @@ int is_current_mnt_ns(struct vfsmount *mnt)
|
|
||||||
{
|
|
||||||
return check_mnt(real_mount(mnt));
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(is_current_mnt_ns);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* vfsmount lock must be held for write
|
|
||||||
@@ -1829,6 +1831,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(iterate_mounts);
|
|
||||||
|
|
||||||
static void cleanup_group_ids(struct mount *mnt, struct mount *end)
|
|
||||||
{
|
|
||||||
diff --git a/fs/notify/group.c b/fs/notify/group.c
|
|
||||||
index 3235753..14a2d48 100644
|
|
||||||
--- a/fs/notify/group.c
|
|
||||||
+++ b/fs/notify/group.c
|
|
||||||
@@ -22,6 +22,7 @@
|
|
||||||
#include <linux/srcu.h>
|
|
||||||
#include <linux/rculist.h>
|
|
||||||
#include <linux/wait.h>
|
|
||||||
+#include <linux/module.h>
|
|
||||||
|
|
||||||
#include <linux/fsnotify_backend.h>
|
|
||||||
#include "fsnotify.h"
|
|
||||||
@@ -109,6 +110,7 @@ void fsnotify_get_group(struct fsnotify_group *group)
|
|
||||||
{
|
|
||||||
atomic_inc(&group->refcnt);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(fsnotify_get_group);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Drop a reference to a group. Free it if it's through.
|
|
||||||
@@ -118,6 +120,7 @@ void fsnotify_put_group(struct fsnotify_group *group)
|
|
||||||
if (atomic_dec_and_test(&group->refcnt))
|
|
||||||
fsnotify_final_destroy_group(group);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(fsnotify_put_group);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Create a new fsnotify_group and hold a reference for the group returned.
|
|
||||||
@@ -147,6 +150,7 @@ struct fsnotify_group *fsnotify_alloc_group(const struct fsnotify_ops *ops)
|
|
||||||
|
|
||||||
return group;
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(fsnotify_alloc_group);
|
|
||||||
|
|
||||||
int fsnotify_fasync(int fd, struct file *file, int on)
|
|
||||||
{
|
|
||||||
diff --git a/fs/notify/mark.c b/fs/notify/mark.c
|
|
||||||
index 9991f88..117042c 100644
|
|
||||||
--- a/fs/notify/mark.c
|
|
||||||
+++ b/fs/notify/mark.c
|
|
||||||
@@ -118,6 +118,7 @@ static bool fsnotify_get_mark_safe(struct fsnotify_mark *mark)
|
|
||||||
{
|
|
||||||
return atomic_inc_not_zero(&mark->refcnt);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(fsnotify_put_mark);
|
|
||||||
|
|
||||||
static void __fsnotify_recalc_mask(struct fsnotify_mark_connector *conn)
|
|
||||||
{
|
|
||||||
@@ -395,6 +396,7 @@ void fsnotify_destroy_mark(struct fsnotify_mark *mark,
|
|
||||||
mutex_unlock(&group->mark_mutex);
|
|
||||||
fsnotify_free_mark(mark);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(fsnotify_destroy_mark);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Sorting function for lists of fsnotify marks.
|
|
||||||
@@ -607,6 +609,7 @@ int fsnotify_add_mark_locked(struct fsnotify_mark *mark, struct inode *inode,
|
|
||||||
fsnotify_put_mark(mark);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(fsnotify_add_mark);
|
|
||||||
|
|
||||||
int fsnotify_add_mark(struct fsnotify_mark *mark, struct inode *inode,
|
|
||||||
struct vfsmount *mnt, int allow_dups)
|
|
||||||
@@ -742,6 +745,7 @@ void fsnotify_init_mark(struct fsnotify_mark *mark,
|
|
||||||
fsnotify_get_group(group);
|
|
||||||
mark->group = group;
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(fsnotify_init_mark);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Destroy all marks in destroy_list, waits for SRCU period to finish before
|
|
||||||
diff --git a/fs/open.c b/fs/open.c
|
|
||||||
index 35bb784..92e08c5 100644
|
|
||||||
--- a/fs/open.c
|
|
||||||
+++ b/fs/open.c
|
|
||||||
@@ -64,6 +64,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
|
|
||||||
inode_unlock(dentry->d_inode);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(do_truncate);
|
|
||||||
|
|
||||||
long vfs_truncate(const struct path *path, loff_t length)
|
|
||||||
{
|
|
||||||
@@ -691,6 +692,7 @@ int open_check_o_direct(struct file *f)
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(open_check_o_direct);
|
|
||||||
|
|
||||||
static int do_dentry_open(struct file *f,
|
|
||||||
struct inode *inode,
|
|
||||||
diff --git a/fs/read_write.c b/fs/read_write.c
|
|
||||||
index 6e542f0..c6fa090 100644
|
|
||||||
--- a/fs/read_write.c
|
|
||||||
+++ b/fs/read_write.c
|
|
||||||
@@ -483,6 +483,7 @@ vfs_readf_t vfs_readf(struct file *file)
|
|
||||||
return new_sync_read;
|
|
||||||
return ERR_PTR(-ENOSYS);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(vfs_readf);
|
|
||||||
|
|
||||||
vfs_writef_t vfs_writef(struct file *file)
|
|
||||||
{
|
|
||||||
@@ -494,6 +495,7 @@ vfs_writef_t vfs_writef(struct file *file)
|
|
||||||
return new_sync_write;
|
|
||||||
return ERR_PTR(-ENOSYS);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(vfs_writef);
|
|
||||||
|
|
||||||
ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t *pos)
|
|
||||||
{
|
|
||||||
diff --git a/fs/splice.c b/fs/splice.c
|
|
||||||
index 9753304..b38e036 100644
|
|
||||||
--- a/fs/splice.c
|
|
||||||
+++ b/fs/splice.c
|
|
||||||
@@ -866,6 +866,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
|
||||||
|
|
||||||
return splice_write(pipe, out, ppos, len, flags);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(do_splice_from);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Attempt to initiate a splice from a file to a pipe.
|
|
||||||
@@ -895,6 +896,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
|
|
||||||
|
|
||||||
return splice_read(in, ppos, pipe, len, flags);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(do_splice_to);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* splice_direct_to_actor - splices data directly between two non-pipes
|
|
||||||
diff --git a/fs/sync.c b/fs/sync.c
|
|
||||||
index 7a5fa3f..c9b9d46 100644
|
|
||||||
--- a/fs/sync.c
|
|
||||||
+++ b/fs/sync.c
|
|
||||||
@@ -38,6 +38,7 @@ int __sync_filesystem(struct super_block *sb, int wait)
|
|
||||||
sb->s_op->sync_fs(sb, wait);
|
|
||||||
return __sync_blockdev(sb->s_bdev, wait);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(__sync_filesystem);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Write out and wait upon all dirty data associated with this
|
|
||||||
diff --git a/fs/xattr.c b/fs/xattr.c
|
|
||||||
index 464c94b..0234d49 100644
|
|
||||||
--- a/fs/xattr.c
|
|
||||||
+++ b/fs/xattr.c
|
|
||||||
@@ -296,6 +296,7 @@ vfs_getxattr_alloc(struct dentry *dentry, const char *name, char **xattr_value,
|
|
||||||
*xattr_value = value;
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(vfs_getxattr_alloc);
|
|
||||||
|
|
||||||
ssize_t
|
|
||||||
__vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name,
|
|
||||||
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
|
|
||||||
index b072240..80657d7 100644
|
|
||||||
--- a/kernel/locking/lockdep.c
|
|
||||||
+++ b/kernel/locking/lockdep.c
|
|
||||||
@@ -151,6 +151,7 @@ inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock)
|
|
||||||
}
|
|
||||||
return lock_classes + hlock->class_idx - 1;
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(lockdep_hlock_class);
|
|
||||||
#define hlock_class(hlock) lockdep_hlock_class(hlock)
|
|
||||||
|
|
||||||
#ifdef CONFIG_LOCK_STAT
|
|
||||||
diff --git a/kernel/task_work.c b/kernel/task_work.c
|
|
||||||
index d513051..e056d54 100644
|
|
||||||
--- a/kernel/task_work.c
|
|
||||||
+++ b/kernel/task_work.c
|
|
||||||
@@ -119,3 +119,4 @@ void task_work_run(void)
|
|
||||||
} while (work);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(task_work_run);
|
|
||||||
diff --git a/security/commoncap.c b/security/commoncap.c
|
|
||||||
index 7abebd7..c079ce4 100644
|
|
||||||
--- a/security/commoncap.c
|
|
||||||
+++ b/security/commoncap.c
|
|
||||||
@@ -1062,12 +1062,14 @@ int cap_mmap_addr(unsigned long addr)
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(cap_mmap_addr);
|
|
||||||
|
|
||||||
int cap_mmap_file(struct file *file, unsigned long reqprot,
|
|
||||||
unsigned long prot, unsigned long flags)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(cap_mmap_file);
|
|
||||||
|
|
||||||
#ifdef CONFIG_SECURITY
|
|
||||||
|
|
||||||
diff --git a/security/device_cgroup.c b/security/device_cgroup.c
|
|
||||||
index 03c1652..f88c84b 100644
|
|
||||||
--- a/security/device_cgroup.c
|
|
||||||
+++ b/security/device_cgroup.c
|
|
||||||
@@ -7,6 +7,7 @@
|
|
||||||
#include <linux/device_cgroup.h>
|
|
||||||
#include <linux/cgroup.h>
|
|
||||||
#include <linux/ctype.h>
|
|
||||||
+#include <linux/export.h>
|
|
||||||
#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)
|
|
||||||
return __devcgroup_check_permission(type, imajor(inode), iminor(inode),
|
|
||||||
access);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(__devcgroup_inode_permission);
|
|
||||||
|
|
||||||
int devcgroup_inode_mknod(int mode, dev_t dev)
|
|
||||||
{
|
|
||||||
diff --git a/security/security.c b/security/security.c
|
|
||||||
index 3013237..342ce8b 100644
|
|
||||||
--- a/security/security.c
|
|
||||||
+++ b/security/security.c
|
|
||||||
@@ -535,6 +535,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry)
|
|
||||||
return 0;
|
|
||||||
return call_int_hook(path_rmdir, 0, dir, dentry);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(security_path_rmdir);
|
|
||||||
|
|
||||||
int security_path_unlink(const struct path *dir, struct dentry *dentry)
|
|
||||||
{
|
|
||||||
@@ -551,6 +552,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry,
|
|
||||||
return 0;
|
|
||||||
return call_int_hook(path_symlink, 0, dir, dentry, old_name);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(security_path_symlink);
|
|
||||||
|
|
||||||
int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
|
|
||||||
struct dentry *new_dentry)
|
|
||||||
@@ -559,6 +561,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
|
|
||||||
return 0;
|
|
||||||
return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(security_path_link);
|
|
||||||
|
|
||||||
int security_path_rename(const struct path *old_dir, struct dentry *old_dentry,
|
|
||||||
const struct path *new_dir, struct dentry *new_dentry,
|
|
||||||
@@ -586,6 +589,7 @@ int security_path_truncate(const struct path *path)
|
|
||||||
return 0;
|
|
||||||
return call_int_hook(path_truncate, 0, path);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(security_path_truncate);
|
|
||||||
|
|
||||||
int security_path_chmod(const struct path *path, umode_t mode)
|
|
||||||
{
|
|
||||||
@@ -593,6 +597,7 @@ int security_path_chmod(const struct path *path, umode_t mode)
|
|
||||||
return 0;
|
|
||||||
return call_int_hook(path_chmod, 0, path, mode);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(security_path_chmod);
|
|
||||||
|
|
||||||
int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
|
|
||||||
{
|
|
||||||
@@ -600,6 +605,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
|
|
||||||
return 0;
|
|
||||||
return call_int_hook(path_chown, 0, path, uid, gid);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(security_path_chown);
|
|
||||||
|
|
||||||
int security_path_chroot(const struct path *path)
|
|
||||||
{
|
|
||||||
@@ -685,6 +691,7 @@ int security_inode_readlink(struct dentry *dentry)
|
|
||||||
return 0;
|
|
||||||
return call_int_hook(inode_readlink, 0, dentry);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(security_inode_readlink);
|
|
||||||
|
|
||||||
int security_inode_follow_link(struct dentry *dentry, struct inode *inode,
|
|
||||||
bool rcu)
|
|
||||||
@@ -700,6 +707,7 @@ int security_inode_permission(struct inode *inode, int mask)
|
|
||||||
return 0;
|
|
||||||
return call_int_hook(inode_permission, 0, inode, mask);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(security_inode_permission);
|
|
||||||
|
|
||||||
int security_inode_setattr(struct dentry *dentry, struct iattr *attr)
|
|
||||||
{
|
|
||||||
@@ -871,6 +879,7 @@ int security_file_permission(struct file *file, int mask)
|
|
||||||
|
|
||||||
return fsnotify_perm(file, mask);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(security_file_permission);
|
|
||||||
|
|
||||||
int security_file_alloc(struct file *file)
|
|
||||||
{
|
|
||||||
@@ -930,6 +939,7 @@ int security_mmap_file(struct file *file, unsigned long prot,
|
|
||||||
return ret;
|
|
||||||
return ima_file_mmap(file, prot);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(security_mmap_file);
|
|
||||||
|
|
||||||
int security_mmap_addr(unsigned long addr)
|
|
||||||
{
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,13 +0,0 @@
|
||||||
--- linux-3.16/include/linux/printk.h.old 2014-08-04 18:48:30.686043266 +0200
|
|
||||||
+++ linux-3.16/include/linux/printk.h 2014-08-04 18:48:47.706218528 +0200
|
|
||||||
@@ -37,7 +37,7 @@
|
|
||||||
#define CONSOLE_LOGLEVEL_SILENT 0 /* Mum's the word */
|
|
||||||
#define CONSOLE_LOGLEVEL_MIN 1 /* Minimum loglevel we let people use */
|
|
||||||
#define CONSOLE_LOGLEVEL_QUIET 4 /* Shhh ..., when booted with "quiet" */
|
|
||||||
-#define CONSOLE_LOGLEVEL_DEFAULT 7 /* anything MORE serious than KERN_DEBUG */
|
|
||||||
+#define CONSOLE_LOGLEVEL_DEFAULT 4 /* anything MORE serious than KERN_DEBUG */
|
|
||||||
#define CONSOLE_LOGLEVEL_DEBUG 10 /* issue debug messages */
|
|
||||||
#define CONSOLE_LOGLEVEL_MOTORMOUTH 15 /* You can't shut this one up */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,113 +0,0 @@
|
||||||
commit 5a420e61e39862c7c3356080eddb23dfe4ccadb7
|
|
||||||
Author: Tom Gundersen <teg@jklm.no>
|
|
||||||
Date: Sun Jan 26 17:00:32 2014 +0100
|
|
||||||
|
|
||||||
Input: i8042 - fix PNP modaliases when both aux and kdb are enabled
|
|
||||||
|
|
||||||
Commit 78551277e4 exposed the PNP modaliases for the i8042 module. However,
|
|
||||||
when both the aux and the kbd drivers are enabled the aux entries would
|
|
||||||
override the kdb ones.
|
|
||||||
|
|
||||||
Refactor the device_id lists, and unconditionally attempt to load the driver
|
|
||||||
if either a kdb or aux devices is present.
|
|
||||||
|
|
||||||
Signed-off-by: Tom Gundersen <teg@jklm.no>
|
|
||||||
|
|
||||||
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
|
|
||||||
index 0ec9abb..dbc6958 100644
|
|
||||||
--- a/drivers/input/serio/i8042-x86ia64io.h
|
|
||||||
+++ b/drivers/input/serio/i8042-x86ia64io.h
|
|
||||||
@@ -747,25 +747,27 @@ static int i8042_pnp_aux_probe(struct pnp_dev *dev, const struct pnp_device_id *
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static struct pnp_device_id pnp_kbd_devids[] = {
|
|
||||||
- { .id = "PNP0300", .driver_data = 0 },
|
|
||||||
- { .id = "PNP0301", .driver_data = 0 },
|
|
||||||
- { .id = "PNP0302", .driver_data = 0 },
|
|
||||||
- { .id = "PNP0303", .driver_data = 0 },
|
|
||||||
- { .id = "PNP0304", .driver_data = 0 },
|
|
||||||
- { .id = "PNP0305", .driver_data = 0 },
|
|
||||||
- { .id = "PNP0306", .driver_data = 0 },
|
|
||||||
- { .id = "PNP0309", .driver_data = 0 },
|
|
||||||
- { .id = "PNP030a", .driver_data = 0 },
|
|
||||||
- { .id = "PNP030b", .driver_data = 0 },
|
|
||||||
- { .id = "PNP0320", .driver_data = 0 },
|
|
||||||
- { .id = "PNP0343", .driver_data = 0 },
|
|
||||||
- { .id = "PNP0344", .driver_data = 0 },
|
|
||||||
- { .id = "PNP0345", .driver_data = 0 },
|
|
||||||
+#define KBD_DEVIDS \
|
|
||||||
+ { .id = "PNP0300", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP0301", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP0302", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP0303", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP0304", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP0305", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP0306", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP0309", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP030a", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP030b", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP0320", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP0343", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP0344", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP0345", .driver_data = 0 }, \
|
|
||||||
{ .id = "CPQA0D7", .driver_data = 0 },
|
|
||||||
+
|
|
||||||
+static struct pnp_device_id pnp_kbd_devids[] = {
|
|
||||||
+ KBD_DEVIDS
|
|
||||||
{ .id = "", },
|
|
||||||
};
|
|
||||||
-MODULE_DEVICE_TABLE(pnp, pnp_kbd_devids);
|
|
||||||
|
|
||||||
static struct pnp_driver i8042_pnp_kbd_driver = {
|
|
||||||
.name = "i8042 kbd",
|
|
||||||
@@ -773,21 +775,23 @@ static struct pnp_driver i8042_pnp_kbd_driver = {
|
|
||||||
.probe = i8042_pnp_kbd_probe,
|
|
||||||
};
|
|
||||||
|
|
||||||
-static struct pnp_device_id pnp_aux_devids[] = {
|
|
||||||
- { .id = "AUI0200", .driver_data = 0 },
|
|
||||||
- { .id = "FJC6000", .driver_data = 0 },
|
|
||||||
- { .id = "FJC6001", .driver_data = 0 },
|
|
||||||
- { .id = "PNP0f03", .driver_data = 0 },
|
|
||||||
- { .id = "PNP0f0b", .driver_data = 0 },
|
|
||||||
- { .id = "PNP0f0e", .driver_data = 0 },
|
|
||||||
- { .id = "PNP0f12", .driver_data = 0 },
|
|
||||||
- { .id = "PNP0f13", .driver_data = 0 },
|
|
||||||
- { .id = "PNP0f19", .driver_data = 0 },
|
|
||||||
- { .id = "PNP0f1c", .driver_data = 0 },
|
|
||||||
+#define AUX_DEVIDS \
|
|
||||||
+ { .id = "AUI0200", .driver_data = 0 }, \
|
|
||||||
+ { .id = "FJC6000", .driver_data = 0 }, \
|
|
||||||
+ { .id = "FJC6001", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP0f03", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP0f0b", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP0f0e", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP0f12", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP0f13", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP0f19", .driver_data = 0 }, \
|
|
||||||
+ { .id = "PNP0f1c", .driver_data = 0 }, \
|
|
||||||
{ .id = "SYN0801", .driver_data = 0 },
|
|
||||||
+
|
|
||||||
+static struct pnp_device_id pnp_aux_devids[] = {
|
|
||||||
+ AUX_DEVIDS
|
|
||||||
{ .id = "", },
|
|
||||||
};
|
|
||||||
-MODULE_DEVICE_TABLE(pnp, pnp_aux_devids);
|
|
||||||
|
|
||||||
static struct pnp_driver i8042_pnp_aux_driver = {
|
|
||||||
.name = "i8042 aux",
|
|
||||||
@@ -795,6 +799,13 @@ static struct pnp_driver i8042_pnp_aux_driver = {
|
|
||||||
.probe = i8042_pnp_aux_probe,
|
|
||||||
};
|
|
||||||
|
|
||||||
+static struct pnp_device_id pnp_kdb_aux_devids[] = {
|
|
||||||
+ KBD_DEVIDS
|
|
||||||
+ AUX_DEVIDS
|
|
||||||
+ { .id = "", },
|
|
||||||
+};
|
|
||||||
+MODULE_DEVICE_TABLE(pnp, pnp_kdb_aux_devids);
|
|
||||||
+
|
|
||||||
static void i8042_pnp_exit(void)
|
|
||||||
{
|
|
||||||
if (i8042_pnp_kbd_registered) {
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
#!/bin/sh
|
||||||
|
for _kurtar in \
|
||||||
|
'/boot/grub' ; \
|
||||||
|
do
|
||||||
|
|
||||||
|
#sed -i '\|'\'$_kurtar\''|d' /var/lib/pkg/DB/cups/kurulan
|
||||||
|
# -sz ve -g den sonra /tmp/$paket.sil dikkate alınır
|
||||||
|
sed -i '\|'\'$_kurtar\''|d' /tmp/kernel.sil
|
||||||
|
|
||||||
|
done
|
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
surum=4.13.12
|
surum=4.14.14
|
||||||
sonek=milis
|
sonek=milis
|
||||||
depmod ${surum}-$sonek
|
depmod ${surum}-$sonek
|
||||||
cd /boot
|
cd /boot
|
||||||
|
@ -13,6 +13,7 @@ fi
|
||||||
[ -f /usr/bin/os-prober ] && os-prober
|
[ -f /usr/bin/os-prober ] && os-prober
|
||||||
if [ -f /usr/bin/grub-mkconfig ];then
|
if [ -f /usr/bin/grub-mkconfig ];then
|
||||||
[ -f /boot/grub/grub.cfg ] && mv /boot/grub/grub.cfg /boot/grub/grub.cfg.eski
|
[ -f /boot/grub/grub.cfg ] && mv /boot/grub/grub.cfg /boot/grub/grub.cfg.eski
|
||||||
|
[ ! -f /boot/grub/grub.cfg.new ] && cp /etc/default/grub/grub.cfg /boot/grub/grub.cfg.new
|
||||||
grub-mkconfig -o /boot/grub/grub.cfg
|
grub-mkconfig -o /boot/grub/grub.cfg
|
||||||
fi
|
fi
|
||||||
cd -
|
cd -
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
aufs4.13 lockdep patch
|
|
||||||
|
|
||||||
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h
|
|
||||||
index f753750..3e7ef18 100644
|
|
||||||
--- a/include/linux/lockdep.h
|
|
||||||
+++ b/include/linux/lockdep.h
|
|
||||||
@@ -16,7 +16,7 @@ struct lockdep_map;
|
|
||||||
extern int prove_locking;
|
|
||||||
extern int lock_stat;
|
|
||||||
|
|
||||||
-#define MAX_LOCKDEP_SUBCLASSES 8UL
|
|
||||||
+#define MAX_LOCKDEP_SUBCLASSES (8UL + 4)
|
|
||||||
|
|
||||||
#ifdef CONFIG_LOCKDEP
|
|
||||||
|
|
||||||
@@ -205,7 +205,7 @@ struct lock_chain {
|
|
||||||
u64 chain_key;
|
|
||||||
};
|
|
||||||
|
|
||||||
-#define MAX_LOCKDEP_KEYS_BITS 13
|
|
||||||
+#define MAX_LOCKDEP_KEYS_BITS (13 + 3)
|
|
||||||
/*
|
|
||||||
* Subtract one because we offset hlock->class_idx by 1 in order
|
|
||||||
* to make 0 mean no class. This avoids overflowing the class_idx
|
|
||||||
diff --git a/kernel/locking/lockdep_internals.h b/kernel/locking/lockdep_internals.h
|
|
||||||
index c08fbd2..b868e7b 100644
|
|
||||||
--- a/kernel/locking/lockdep_internals.h
|
|
||||||
+++ b/kernel/locking/lockdep_internals.h
|
|
||||||
@@ -66,15 +66,15 @@ enum {
|
|
||||||
#define MAX_LOCKDEP_CHAINS_BITS 15
|
|
||||||
#define MAX_STACK_TRACE_ENTRIES 262144UL
|
|
||||||
#else
|
|
||||||
-#define MAX_LOCKDEP_ENTRIES 32768UL
|
|
||||||
+#define MAX_LOCKDEP_ENTRIES (32768UL << 5)
|
|
||||||
|
|
||||||
-#define MAX_LOCKDEP_CHAINS_BITS 16
|
|
||||||
+#define MAX_LOCKDEP_CHAINS_BITS (16 + 5)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Stack-trace: tightly packed array of stack backtrace
|
|
||||||
* addresses. Protected by the hash_lock.
|
|
||||||
*/
|
|
||||||
-#define MAX_STACK_TRACE_ENTRIES 524288UL
|
|
||||||
+#define MAX_STACK_TRACE_ENTRIES (524288UL << 5)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MAX_LOCKDEP_CHAINS (1UL << MAX_LOCKDEP_CHAINS_BITS)
|
|
|
@ -4,13 +4,12 @@
|
||||||
# Gerekler: linux-firmware intel-ucode
|
# Gerekler: linux-firmware intel-ucode
|
||||||
|
|
||||||
isim=kernel
|
isim=kernel
|
||||||
_basekernel=4.13
|
_basekernel=4.14
|
||||||
surum=4.13.12
|
surum=4.14.14
|
||||||
devir=1
|
devir=1
|
||||||
|
|
||||||
kaynak=(http://www.kernel.org/pub/linux/kernel/v4.x/linux-$_basekernel.tar.xz
|
kaynak=(http://www.kernel.org/pub/linux/kernel/v4.x/linux-$_basekernel.tar.xz
|
||||||
http://www.kernel.org/pub/linux/kernel/v4.x/patch-${surum}.xz
|
http://www.kernel.org/pub/linux/kernel/v4.x/patch-${surum}.xz
|
||||||
https://github.com/copperhead/linux-hardened/releases/download/4.13.12.a/linux-hardened-${surum}.a.patch
|
|
||||||
config
|
config
|
||||||
aufs4-loopback.patch
|
aufs4-loopback.patch
|
||||||
aufs4-base.patch
|
aufs4-base.patch
|
||||||
|
@ -19,11 +18,8 @@ kaynak=(http://www.kernel.org/pub/linux/kernel/v4.x/linux-$_basekernel.tar.xz
|
||||||
aufs4-kbuild.patch
|
aufs4-kbuild.patch
|
||||||
aufs4.patch
|
aufs4.patch
|
||||||
config.aufs
|
config.aufs
|
||||||
lockdep-debug.patch
|
|
||||||
tmpfs-idr.patch
|
tmpfs-idr.patch
|
||||||
vfs-ino.patch
|
vfs-ino.patch)
|
||||||
change-default-console-loglevel.patch
|
|
||||||
i8042-fix-aliases.patch)
|
|
||||||
|
|
||||||
|
|
||||||
derle() {
|
derle() {
|
||||||
|
@ -35,9 +31,7 @@ derle() {
|
||||||
patch -p1 -i "patch-${surum}"
|
patch -p1 -i "patch-${surum}"
|
||||||
|
|
||||||
# güvenli kernel yaması
|
# güvenli kernel yaması
|
||||||
patch -p1 -i "${SRC}/linux-hardened-${surum}.a.patch"
|
#patch -p1 -i "${SRC}/linux-hardened-${surum}.a.patch"
|
||||||
|
|
||||||
patch -p1 -i "${SRC}/i8042-fix-aliases.patch"
|
|
||||||
|
|
||||||
#çalışan sistem aufs yamaları
|
#çalışan sistem aufs yamaları
|
||||||
patch -p1 -i "${SRC}/aufs4.patch"
|
patch -p1 -i "${SRC}/aufs4.patch"
|
||||||
|
@ -46,11 +40,8 @@ derle() {
|
||||||
patch -p1 -i "${SRC}/aufs4-loopback.patch"
|
patch -p1 -i "${SRC}/aufs4-loopback.patch"
|
||||||
patch -p1 -i "${SRC}/aufs4-mmap.patch"
|
patch -p1 -i "${SRC}/aufs4-mmap.patch"
|
||||||
patch -p1 -i "${SRC}/aufs4-standalone.patch"
|
patch -p1 -i "${SRC}/aufs4-standalone.patch"
|
||||||
#patch -p1 -i "${SRC}/lockdep-debug.patch"
|
|
||||||
patch -p1 -i "${SRC}/tmpfs-idr.patch"
|
patch -p1 -i "${SRC}/tmpfs-idr.patch"
|
||||||
patch -p1 -i "${SRC}/vfs-ino.patch"
|
patch -p1 -i "${SRC}/vfs-ino.patch"
|
||||||
#fix error: too few arguments to function 'loop_switch' error with RC aufs patches
|
|
||||||
sed -i "s|return loop_switch(lo, NULL);|return loop_switch(lo, NULL, NULL);|g" drivers/block/loop.c
|
|
||||||
|
|
||||||
cat "${SRC}/config" > ./.config
|
cat "${SRC}/config" > ./.config
|
||||||
|
|
||||||
|
@ -69,7 +60,7 @@ derle() {
|
||||||
yes "" | make oldconfig >/dev/null
|
yes "" | make oldconfig >/dev/null
|
||||||
|
|
||||||
# derleme
|
# derleme
|
||||||
make ${MAKEFLAGS} bzImage modules
|
make ${MAKEFLAGS} bzImage modules || make ${MAKEFLAGS} bzImage modules
|
||||||
|
|
||||||
KARCH=x86
|
KARCH=x86
|
||||||
|
|
||||||
|
@ -106,10 +97,11 @@ derle() {
|
||||||
install -D -m644 .config \
|
install -D -m644 .config \
|
||||||
"${PKG}/usr/src/linux-${_kernver}/.config"
|
"${PKG}/usr/src/linux-${_kernver}/.config"
|
||||||
|
|
||||||
|
######################
|
||||||
mkdir -p "${PKG}/usr/src/linux-${_kernver}/include"
|
mkdir -p "${PKG}/usr/src/linux-${_kernver}/include"
|
||||||
|
|
||||||
for i in acpi asm-generic config crypto drm generated linux math-emu \
|
for i in acpi asm-generic config crypto drm generated linux math-emu \
|
||||||
media net pcmcia scsi sound trace uapi video xen; do
|
media net pcmcia scsi rdma soc sound trace uapi video xen; do
|
||||||
cp -a include/${i} "${PKG}/usr/src/linux-${_kernver}/include/"
|
cp -a include/${i} "${PKG}/usr/src/linux-${_kernver}/include/"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -149,7 +141,11 @@ derle() {
|
||||||
mkdir -p "${PKG}/usr/src/linux-${_kernver}/drivers/media/i2c/${i}"
|
mkdir -p "${PKG}/usr/src/linux-${_kernver}/drivers/media/i2c/${i}"
|
||||||
cp -a drivers/media/i2c/${i}/*.h "${PKG}/usr/src/linux-${_kernver}/drivers/media/i2c/${i}"
|
cp -a drivers/media/i2c/${i}/*.h "${PKG}/usr/src/linux-${_kernver}/drivers/media/i2c/${i}"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# add docbook makefile
|
||||||
|
#install -D -m644 Documentation/DocBook/Makefile \
|
||||||
|
# "${PKG}/usr/src/linux-${_kernver}/Documentation/DocBook/Makefile"
|
||||||
|
|
||||||
# add dm headers
|
# add dm headers
|
||||||
mkdir -p "${PKG}/usr/src/linux-${_kernver}/drivers/md"
|
mkdir -p "${PKG}/usr/src/linux-${_kernver}/drivers/md"
|
||||||
cp drivers/md/*.h "${PKG}/usr/src/linux-${_kernver}/drivers/md"
|
cp drivers/md/*.h "${PKG}/usr/src/linux-${_kernver}/drivers/md"
|
||||||
|
@ -213,5 +209,4 @@ derle() {
|
||||||
|
|
||||||
# remove unneeded architectures
|
# remove unneeded architectures
|
||||||
rm -rf "${PKG}"/usr/src/linux-${_kernver}/arch/{alpha,arm,arm26,arm64,avr32,blackfin,c6x,cris,frv,h8300,hexagon,ia64,m32r,m68k,m68knommu,mips,microblaze,mn10300,openrisc,parisc,powerpc,ppc,s390,score,sh,sh64,sparc,sparc64,tile,unicore32,um,v850,xtensa}
|
rm -rf "${PKG}"/usr/src/linux-${_kernver}/arch/{alpha,arm,arm26,arm64,avr32,blackfin,c6x,cris,frv,h8300,hexagon,ia64,m32r,m68k,m68knommu,mips,microblaze,mn10300,openrisc,parisc,powerpc,ppc,s390,score,sh,sh64,sparc,sparc64,tile,unicore32,um,v850,xtensa}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
|
SPDX-License-Identifier: GPL-2.0
|
||||||
diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h
|
diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h
|
||||||
index a7d6bd2..9e93fbc 100644
|
index ed91ce5..81877f8 100644
|
||||||
--- a/include/linux/shmem_fs.h
|
--- a/include/linux/shmem_fs.h
|
||||||
+++ b/include/linux/shmem_fs.h
|
+++ b/include/linux/shmem_fs.h
|
||||||
@@ -24,10 +24,13 @@ struct shmem_inode_info {
|
@@ -25,10 +25,13 @@ struct shmem_inode_info {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct shmem_sb_info {
|
struct shmem_sb_info {
|
||||||
|
@ -19,10 +20,10 @@ index a7d6bd2..9e93fbc 100644
|
||||||
umode_t mode; /* Mount mode for root directory */
|
umode_t mode; /* Mount mode for root directory */
|
||||||
unsigned char huge; /* Whether to try for hugepages */
|
unsigned char huge; /* Whether to try for hugepages */
|
||||||
diff --git a/mm/shmem.c b/mm/shmem.c
|
diff --git a/mm/shmem.c b/mm/shmem.c
|
||||||
index fbcb3c9..859e4c2 100644
|
index 07a1d22..6d9b762 100644
|
||||||
--- a/mm/shmem.c
|
--- a/mm/shmem.c
|
||||||
+++ b/mm/shmem.c
|
+++ b/mm/shmem.c
|
||||||
@@ -110,9 +110,13 @@ static unsigned long shmem_default_max_blocks(void)
|
@@ -111,9 +111,13 @@ static unsigned long shmem_default_max_blocks(void)
|
||||||
return totalram_pages / 2;
|
return totalram_pages / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,7 +39,7 @@ index fbcb3c9..859e4c2 100644
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1068,6 +1072,11 @@ static void shmem_evict_inode(struct inode *inode)
|
@@ -1082,6 +1086,11 @@ static void shmem_evict_inode(struct inode *inode)
|
||||||
|
|
||||||
simple_xattrs_free(&info->xattrs);
|
simple_xattrs_free(&info->xattrs);
|
||||||
WARN_ON(inode->i_blocks);
|
WARN_ON(inode->i_blocks);
|
||||||
|
@ -50,7 +51,7 @@ index fbcb3c9..859e4c2 100644
|
||||||
shmem_free_inode(inode->i_sb);
|
shmem_free_inode(inode->i_sb);
|
||||||
clear_inode(inode);
|
clear_inode(inode);
|
||||||
}
|
}
|
||||||
@@ -2148,13 +2157,13 @@ static struct inode *shmem_get_inode(struct super_block *sb, const struct inode
|
@@ -2150,13 +2159,13 @@ static struct inode *shmem_get_inode(struct super_block *sb, const struct inode
|
||||||
struct inode *inode;
|
struct inode *inode;
|
||||||
struct shmem_inode_info *info;
|
struct shmem_inode_info *info;
|
||||||
struct shmem_sb_info *sbinfo = SHMEM_SB(sb);
|
struct shmem_sb_info *sbinfo = SHMEM_SB(sb);
|
||||||
|
@ -65,7 +66,7 @@ index fbcb3c9..859e4c2 100644
|
||||||
inode_init_owner(inode, dir, mode);
|
inode_init_owner(inode, dir, mode);
|
||||||
inode->i_blocks = 0;
|
inode->i_blocks = 0;
|
||||||
inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode);
|
inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode);
|
||||||
@@ -2196,6 +2205,25 @@ static struct inode *shmem_get_inode(struct super_block *sb, const struct inode
|
@@ -2198,6 +2207,25 @@ static struct inode *shmem_get_inode(struct super_block *sb, const struct inode
|
||||||
mpol_shared_policy_init(&info->policy, NULL);
|
mpol_shared_policy_init(&info->policy, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -91,7 +92,7 @@ index fbcb3c9..859e4c2 100644
|
||||||
} else
|
} else
|
||||||
shmem_free_inode(sb);
|
shmem_free_inode(sb);
|
||||||
return inode;
|
return inode;
|
||||||
@@ -3381,8 +3409,7 @@ static struct dentry *shmem_get_parent(struct dentry *child)
|
@@ -3399,8 +3427,7 @@ static struct dentry *shmem_get_parent(struct dentry *child)
|
||||||
static int shmem_match(struct inode *ino, void *vfh)
|
static int shmem_match(struct inode *ino, void *vfh)
|
||||||
{
|
{
|
||||||
__u32 *fh = vfh;
|
__u32 *fh = vfh;
|
||||||
|
@ -101,7 +102,7 @@ index fbcb3c9..859e4c2 100644
|
||||||
return ino->i_ino == inum && fh[0] == ino->i_generation;
|
return ino->i_ino == inum && fh[0] == ino->i_generation;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3393,14 +3420,11 @@ static struct dentry *shmem_fh_to_dentry(struct super_block *sb,
|
@@ -3411,14 +3438,11 @@ static struct dentry *shmem_fh_to_dentry(struct super_block *sb,
|
||||||
struct dentry *dentry = NULL;
|
struct dentry *dentry = NULL;
|
||||||
u64 inum;
|
u64 inum;
|
||||||
|
|
||||||
|
@ -119,7 +120,7 @@ index fbcb3c9..859e4c2 100644
|
||||||
if (inode) {
|
if (inode) {
|
||||||
dentry = d_find_alias(inode);
|
dentry = d_find_alias(inode);
|
||||||
iput(inode);
|
iput(inode);
|
||||||
@@ -3412,30 +3436,15 @@ static struct dentry *shmem_fh_to_dentry(struct super_block *sb,
|
@@ -3430,30 +3454,15 @@ static struct dentry *shmem_fh_to_dentry(struct super_block *sb,
|
||||||
static int shmem_encode_fh(struct inode *inode, __u32 *fh, int *len,
|
static int shmem_encode_fh(struct inode *inode, __u32 *fh, int *len,
|
||||||
struct inode *parent)
|
struct inode *parent)
|
||||||
{
|
{
|
||||||
|
@ -153,7 +154,7 @@ index fbcb3c9..859e4c2 100644
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3499,7 +3508,7 @@ static int shmem_parse_options(char *options, struct shmem_sb_info *sbinfo,
|
@@ -3517,7 +3526,7 @@ static int shmem_parse_options(char *options, struct shmem_sb_info *sbinfo,
|
||||||
goto bad_val;
|
goto bad_val;
|
||||||
} else if (!strcmp(this_char,"nr_inodes")) {
|
} else if (!strcmp(this_char,"nr_inodes")) {
|
||||||
sbinfo->max_inodes = memparse(value, &rest);
|
sbinfo->max_inodes = memparse(value, &rest);
|
||||||
|
@ -162,7 +163,7 @@ index fbcb3c9..859e4c2 100644
|
||||||
goto bad_val;
|
goto bad_val;
|
||||||
} else if (!strcmp(this_char,"mode")) {
|
} else if (!strcmp(this_char,"mode")) {
|
||||||
if (remount)
|
if (remount)
|
||||||
@@ -3564,7 +3573,7 @@ static int shmem_remount_fs(struct super_block *sb, int *flags, char *data)
|
@@ -3582,7 +3591,7 @@ static int shmem_remount_fs(struct super_block *sb, int *flags, char *data)
|
||||||
{
|
{
|
||||||
struct shmem_sb_info *sbinfo = SHMEM_SB(sb);
|
struct shmem_sb_info *sbinfo = SHMEM_SB(sb);
|
||||||
struct shmem_sb_info config = *sbinfo;
|
struct shmem_sb_info config = *sbinfo;
|
||||||
|
@ -171,7 +172,7 @@ index fbcb3c9..859e4c2 100644
|
||||||
int error = -EINVAL;
|
int error = -EINVAL;
|
||||||
|
|
||||||
config.mpol = NULL;
|
config.mpol = NULL;
|
||||||
@@ -3613,7 +3622,7 @@ static int shmem_show_options(struct seq_file *seq, struct dentry *root)
|
@@ -3631,7 +3640,7 @@ static int shmem_show_options(struct seq_file *seq, struct dentry *root)
|
||||||
seq_printf(seq, ",size=%luk",
|
seq_printf(seq, ",size=%luk",
|
||||||
sbinfo->max_blocks << (PAGE_SHIFT - 10));
|
sbinfo->max_blocks << (PAGE_SHIFT - 10));
|
||||||
if (sbinfo->max_inodes != shmem_default_max_inodes())
|
if (sbinfo->max_inodes != shmem_default_max_inodes())
|
||||||
|
@ -180,7 +181,7 @@ index fbcb3c9..859e4c2 100644
|
||||||
if (sbinfo->mode != (S_IRWXUGO | S_ISVTX))
|
if (sbinfo->mode != (S_IRWXUGO | S_ISVTX))
|
||||||
seq_printf(seq, ",mode=%03ho", sbinfo->mode);
|
seq_printf(seq, ",mode=%03ho", sbinfo->mode);
|
||||||
if (!uid_eq(sbinfo->uid, GLOBAL_ROOT_UID))
|
if (!uid_eq(sbinfo->uid, GLOBAL_ROOT_UID))
|
||||||
@@ -3707,6 +3716,8 @@ static void shmem_put_super(struct super_block *sb)
|
@@ -3749,6 +3758,8 @@ static void shmem_put_super(struct super_block *sb)
|
||||||
{
|
{
|
||||||
struct shmem_sb_info *sbinfo = SHMEM_SB(sb);
|
struct shmem_sb_info *sbinfo = SHMEM_SB(sb);
|
||||||
|
|
||||||
|
@ -189,7 +190,7 @@ index fbcb3c9..859e4c2 100644
|
||||||
percpu_counter_destroy(&sbinfo->used_blocks);
|
percpu_counter_destroy(&sbinfo->used_blocks);
|
||||||
mpol_put(sbinfo->mpol);
|
mpol_put(sbinfo->mpol);
|
||||||
kfree(sbinfo);
|
kfree(sbinfo);
|
||||||
@@ -3725,6 +3736,8 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent)
|
@@ -3767,6 +3778,8 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent)
|
||||||
if (!sbinfo)
|
if (!sbinfo)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
@ -198,7 +199,7 @@ index fbcb3c9..859e4c2 100644
|
||||||
sbinfo->mode = S_IRWXUGO | S_ISVTX;
|
sbinfo->mode = S_IRWXUGO | S_ISVTX;
|
||||||
sbinfo->uid = current_fsuid();
|
sbinfo->uid = current_fsuid();
|
||||||
sbinfo->gid = current_fsgid();
|
sbinfo->gid = current_fsgid();
|
||||||
@@ -3833,6 +3846,15 @@ static void shmem_destroy_inodecache(void)
|
@@ -3875,6 +3888,15 @@ static void shmem_destroy_inodecache(void)
|
||||||
kmem_cache_destroy(shmem_inode_cachep);
|
kmem_cache_destroy(shmem_inode_cachep);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,7 +215,7 @@ index fbcb3c9..859e4c2 100644
|
||||||
static const struct address_space_operations shmem_aops = {
|
static const struct address_space_operations shmem_aops = {
|
||||||
.writepage = shmem_writepage,
|
.writepage = shmem_writepage,
|
||||||
.set_page_dirty = __set_page_dirty_no_writeback,
|
.set_page_dirty = __set_page_dirty_no_writeback,
|
||||||
@@ -3965,6 +3987,7 @@ int __init shmem_init(void)
|
@@ -4007,6 +4029,7 @@ int __init shmem_init(void)
|
||||||
pr_err("Could not kern_mount tmpfs\n");
|
pr_err("Could not kern_mount tmpfs\n");
|
||||||
goto out1;
|
goto out1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
|
SPDX-License-Identifier: GPL-2.0
|
||||||
diff --git a/fs/inode.c b/fs/inode.c
|
diff --git a/fs/inode.c b/fs/inode.c
|
||||||
index 5037059..b55807b 100644
|
index d1e35b5..97e6515 100644
|
||||||
--- a/fs/inode.c
|
--- a/fs/inode.c
|
||||||
+++ b/fs/inode.c
|
+++ b/fs/inode.c
|
||||||
@@ -855,6 +855,8 @@ unsigned int get_next_ino(void)
|
@@ -856,6 +856,8 @@ unsigned int get_next_ino(void)
|
||||||
unsigned int *p = &get_cpu_var(last_ino);
|
unsigned int *p = &get_cpu_var(last_ino);
|
||||||
unsigned int res = *p;
|
unsigned int res = *p;
|
||||||
|
|
||||||
|
@ -11,7 +12,7 @@ index 5037059..b55807b 100644
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
if (unlikely((res & (LAST_INO_BATCH-1)) == 0)) {
|
if (unlikely((res & (LAST_INO_BATCH-1)) == 0)) {
|
||||||
static atomic_t shared_last_ino;
|
static atomic_t shared_last_ino;
|
||||||
@@ -867,7 +869,7 @@ unsigned int get_next_ino(void)
|
@@ -868,7 +870,7 @@ unsigned int get_next_ino(void)
|
||||||
res++;
|
res++;
|
||||||
/* get_next_ino should not provide a 0 inode number */
|
/* get_next_ino should not provide a 0 inode number */
|
||||||
if (unlikely(!res))
|
if (unlikely(!res))
|
||||||
|
|
Loading…
Reference in New Issue