kernel-4.14.14

This commit is contained in:
milisbir 2018-01-21 00:10:04 +02:00
parent 24b72c7113
commit 27d87877dd
18 changed files with 707 additions and 9511 deletions

View File

@ -2,5 +2,5 @@
if [ -f /boot/grub/grub.cfg ];then
mv /boot/grub/grub.cfg /boot/grub/grub.cfg.eski
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

View File

@ -1,10 +1,11 @@
aufs4.13 base patch
SPDX-License-Identifier: GPL-2.0
aufs4.14 base patch
diff --git a/MAINTAINERS b/MAINTAINERS
index 1c3feff..1a12137 100644
index 2811a21..02b6deb 100644
--- a/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: kernel/audit*
@ -25,10 +26,10 @@ index 1c3feff..1a12137 100644
M: Miguel Ojeda Sandonis <miguel.ojeda.sandonis@gmail.com>
W: http://miguelojeda.es/auxdisplay.htm
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
+++ 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;
}
@ -67,10 +68,10 @@ index f901413..e3719a5 100644
void (*finish)(void *))
{
diff --git a/fs/fcntl.c b/fs/fcntl.c
index 3b01b64..659760e 100644
index 8d78ffd..cffefab 100644
--- a/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)
@ -79,7 +80,7 @@ index 3b01b64..659760e 100644
{
struct inode * inode = file_inode(filp);
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)
error = filp->f_op->check_flags(arg);
@ -89,10 +90,10 @@ index 3b01b64..659760e 100644
return error;
diff --git a/fs/inode.c b/fs/inode.c
index 5037059..73820bf 100644
index d1e35b5..f7800d6 100644
--- a/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
* had called mnt_want_write() before calling this.
*/
@ -102,10 +103,10 @@ index 5037059..73820bf 100644
int (*update_time)(struct inode *, struct timespec *, int);
diff --git a/fs/namespace.c b/fs/namespace.c
index f8893dc..8601f8d 100644
index d18deb4..e5a4a7f 100644
--- a/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;
}
@ -119,12 +120,12 @@ index f8893dc..8601f8d 100644
* vfsmount lock must be held for write
*/
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
+++ 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)
+{
@ -148,14 +149,14 @@ index 0cc7033..6e542f0 100644
+ 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;
diff --git a/fs/splice.c b/fs/splice.c
index ae41201..9753304 100644
index f3084cc..eb888c6 100644
--- a/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.
*/
@ -166,7 +167,7 @@ index ae41201..9753304 100644
{
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *,
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.
*/
@ -180,10 +181,10 @@ index ae41201..9753304 100644
ssize_t (*splice_read)(struct file *, loff_t *,
struct pipe_inode_info *, size_t, unsigned int);
diff --git a/fs/sync.c b/fs/sync.c
index 2a54c1f..7a5fa3f 100644
index 83ac79a..fe15900 100644
--- a/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
* sync_dirty_buffer() and thus effectively write one block at a time.
*/
@ -193,10 +194,10 @@ index 2a54c1f..7a5fa3f 100644
if (wait)
sync_inodes_sb(sb);
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
+++ b/include/linux/file.h
@@ -19,6 +19,7 @@ struct dentry;
@@ -20,6 +20,7 @@ struct dentry;
struct path;
extern struct file *alloc_file(const struct path *, fmode_t mode,
const struct file_operations *fop);
@ -205,10 +206,10 @@ index 61eb82c..e700888 100644
static inline void fput_light(struct file *file, int fput_needed)
{
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
+++ 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 */
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 int f_setown(struct file *filp, unsigned long arg, int force);
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);
unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
int (*check_flags)(int);
@ -224,7 +225,7 @@ index cbfe127..9b21bb5 100644
int (*flock) (struct file *, int, struct file_lock *);
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
@@ -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 **ret_pointer);
@ -235,9 +236,9 @@ index cbfe127..9b21bb5 100644
+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_write(struct file *, const 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 iput(struct inode *);
extern int generic_update_time(struct inode *, struct timespec *, int);
@ -245,7 +246,7 @@ index cbfe127..9b21bb5 100644
/* /sys/fs */
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;
}
#endif
@ -254,10 +255,10 @@ index cbfe127..9b21bb5 100644
extern const struct file_operations def_blk_fops;
extern const struct file_operations def_chr_fops;
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
+++ 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;
}
@ -266,7 +267,7 @@ index fffe49f..f753750 100644
/*
* Acquire a lock.
*
@@ -448,6 +450,7 @@ struct lock_class_key { };
@@ -530,6 +532,7 @@ struct lock_class_key { };
#define lockdep_depth(tsk) (0)
@ -275,10 +276,10 @@ index fffe49f..f753750 100644
#define lockdep_assert_held(l) do { (void)(l); } while (0)
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
+++ b/include/linux/mnt_namespace.h
@@ -5,11 +5,14 @@
@@ -6,11 +6,14 @@
struct mnt_namespace;
struct fs_struct;
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_mountstats_operations;
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
+++ 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 default_pipe_buf_ops;
@ -309,10 +310,10 @@ index db42746..12f3a5a 100644
+ unsigned int flags);
#endif
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
+++ 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;
static struct lock_class lock_classes[MAX_LOCKDEP_KEYS];
@ -321,7 +322,7 @@ index 7d2499b..b072240 100644
{
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;
}

View File

@ -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
index 7aee6d6..ec92031 100644
@ -13,10 +14,10 @@ index 7aee6d6..ec92031 100644
endif # MISC_FILESYSTEMS
diff --git a/fs/Makefile b/fs/Makefile
index 7bbaca9..a026491 100644
index ef772f1..51779e68c 100644
--- a/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_PSTORE) += pstore/
obj-$(CONFIG_EFIVAR_FS) += efivarfs/

View File

@ -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
index 10707c3..af32e47 100644
index d44de9d..095672b 100644
--- a/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)
+{
+ struct file *f = NULL;
@ -51,10 +16,12 @@ index 10707c3..af32e47 100644
+ if (file->f_path.dentry->d_sb->s_op->real_loop)
+ f = file->f_path.dentry->d_sb->s_op->real_loop(file);
+ return f;
}
+}
+
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)
{
struct file *file, *old_file;
@ -62,7 +29,7 @@ index 10707c3..af32e47 100644
struct inode *inode;
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);
if (!file)
goto out;
@ -79,14 +46,16 @@ index 10707c3..af32e47 100644
error = -EINVAL;
@@ -678,17 +698,21 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
goto out_putf;
/* and ... switch */
- error = loop_switch(lo, file);
+ error = loop_switch(lo, file, virt_file);
if (error)
goto out_putf;
@@ -662,6 +679,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
blk_mq_freeze_queue(lo->lo_queue);
mapping_set_gfp_mask(old_file->f_mapping, lo->old_gfp_mask);
lo->lo_backing_file = file;
+ lo->lo_backing_virt_file = virt_file;
lo->old_gfp_mask = mapping_gfp_mask(file->f_mapping);
mapping_set_gfp_mask(file->f_mapping,
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);
+ if (old_virt_file)
@ -102,7 +71,7 @@ index 10707c3..af32e47 100644
out:
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,
struct block_device *bdev, unsigned int arg)
{
@ -110,8 +79,8 @@ index 10707c3..af32e47 100644
+ struct file *file, *f, *virt_file = NULL;
struct inode *inode;
struct address_space *mapping;
unsigned lo_blocksize;
@@ -897,6 +921,12 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode,
int lo_flags = 0;
@@ -882,6 +904,12 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode,
file = fget(arg);
if (!file)
goto out;
@ -124,7 +93,7 @@ index 10707c3..af32e47 100644
error = -EBUSY;
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_flags = lo_flags;
lo->lo_backing_file = file;
@ -132,7 +101,7 @@ index 10707c3..af32e47 100644
lo->transfer = NULL;
lo->ioctl = NULL;
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:
fput(file);
@ -141,7 +110,7 @@ index 10707c3..af32e47 100644
out:
/* This is safe: open() is still holding a reference. */
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)
{
struct file *filp = lo->lo_backing_file;
@ -149,7 +118,7 @@ index 10707c3..af32e47 100644
gfp_t gfp = lo->old_gfp_mask;
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);
lo->lo_state = Lo_rundown;
lo->lo_backing_file = NULL;
@ -157,7 +126,7 @@ index 10707c3..af32e47 100644
spin_unlock_irq(&lo->lo_lock);
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.
*/
fput(filp);
@ -167,7 +136,7 @@ index 10707c3..af32e47 100644
}
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
+++ b/drivers/block/loop.h
@@ -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, *lo_backing_virt_file;
struct block_device *lo_device;
unsigned lo_blocksize;
void *key_data;
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
+++ 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))
goto out;
@ -193,10 +162,10 @@ index 8aff060..e853272 100644
if (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
index e35f015..b37f1ae 100644
index 3b217c2..0f5ab22 100644
--- a/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);
kfree(au_warn_loopback_array);
}
@ -217,10 +186,10 @@ index e35f015..b37f1ae 100644
+ return f;
+}
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
+++ 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);
void au_loopback_fin(void);
@ -232,7 +201,7 @@ index e2df495..36e5052 100644
AuStubInt0(au_test_loopback_overlap, struct super_block *sb,
struct dentry *h_adding)
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)
AuStubVoid(au_loopback_fin, void)
@ -242,10 +211,10 @@ index e2df495..36e5052 100644
#endif /* __KERNEL__ */
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
+++ 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,
.put_super = aufs_put_super,
.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
index 9b21bb5..f7124fa 100644
index e489e42..002cda0 100644
--- a/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 *);
long (*free_cached_objects)(struct super_block *,
struct shrink_control *);

View File

@ -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
index 719c2e9..a1b7968 100644
index 9d357b2..11f4f23 100644
--- a/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);
vma = find_exact_vma(mm, vm_start, vm_end);
if (vma && vma->vm_file) {
@ -30,10 +31,10 @@ index 7563437..7c0dc0f 100644
ino = inode->i_ino;
}
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
+++ 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;
if (file) {
@ -45,7 +46,7 @@ index fe8f326..b2f7f1a 100644
dev = inode->i_sb->s_dev;
ino = inode->i_ino;
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 vm_area_struct *vma = v;
struct numa_maps *md = &numa_priv->md;
@ -55,10 +56,10 @@ index fe8f326..b2f7f1a 100644
struct mm_walk walk = {
.hugetlb_entry = gather_hugetlb_stats,
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
+++ 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;
if (file) {
@ -71,10 +72,10 @@ index 23266694..58e59b6 100644
ino = inode->i_ino;
pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT;
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
+++ 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
@ -104,10 +105,10 @@ index c1f6c95..2d660a5 100644
unsigned int gup_flags);
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
index 3cadee0..d0142c1 100644
index c85f11d..a63875a 100644
--- a/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_pgoff; /* the offset in vm_file corresponding to vm_start */
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) */
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
units */
struct file * vm_file; /* File we map to (can be NULL). */
+ struct file *vm_prfile; /* shadow of vm_file */
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
index b7e9e57..e731a9a 100644
index 07cc743..b1d2b43 100644
--- a/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 address_space *mapping = file->f_mapping;
@ -137,10 +138,10 @@ index b7e9e57..e731a9a 100644
atomic_dec(&inode->i_writecount);
i_mmap_lock_write(mapping);
diff --git a/mm/Makefile b/mm/Makefile
index 411bd24..e7de927 100644
index 4659b93..84488841 100644
--- a/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 \
compaction.o vmacache.o swap_slots.o \
interval_tree.o list_lru.o workingset.o \
@ -150,10 +151,10 @@ index 411bd24..e7de927 100644
obj-y += init-mm.o
diff --git a/mm/filemap.c b/mm/filemap.c
index 65b4b6e..12f4c94 100644
index 594d73f..7183aef 100644
--- a/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;
sb_start_pagefault(inode->i_sb);
@ -163,10 +164,10 @@ index 65b4b6e..12f4c94 100644
if (page->mapping != inode->i_mapping) {
unlock_page(page);
diff --git a/mm/mmap.c b/mm/mmap.c
index f19efcf..7fdd59e 100644
index 680506f..081406a 100644
--- a/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)
vma->vm_ops->close(vma);
if (vma->vm_file)
@ -175,7 +176,7 @@ index f19efcf..7fdd59e 100644
mpol_put(vma_policy(vma));
kmem_cache_free(vm_area_cachep, vma);
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 (file) {
uprobe_munmap(next, next->vm_start, next->vm_end);
@ -184,7 +185,7 @@ index f19efcf..7fdd59e 100644
}
if (next->anon_vma)
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;
unmap_and_free_vma:
@ -194,7 +195,7 @@ index f19efcf..7fdd59e 100644
/* Undo any partial mapping done by a device driver. */
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;
if (new->vm_file)
@ -203,7 +204,7 @@ index f19efcf..7fdd59e 100644
if (new->vm_ops && new->vm_ops->open)
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)
new->vm_ops->close(new);
if (new->vm_file)
@ -212,7 +213,7 @@ index f19efcf..7fdd59e 100644
unlink_anon_vmas(new);
out_free_mpol:
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;
unsigned long populate = 0;
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",
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:
up_write(&mm->mmap_sem);
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))
goto out_free_mempol;
if (new_vma->vm_file)
@ -260,7 +261,7 @@ index f19efcf..7fdd59e 100644
new_vma->vm_ops->open(new_vma);
vma_link(mm, new_vma, prev, rb_link, rb_parent);
diff --git a/mm/nommu.c b/mm/nommu.c
index fc184f5..637ea81 100644
index 17c00d9..4bcdf94 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -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);
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;
}
}
@ -290,7 +291,7 @@ index fc184f5..637ea81 100644
kmem_cache_free(vm_region_jar, region);
region = pregion;
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);
error:
if (region->vm_file)
@ -305,11 +306,12 @@ index fc184f5..637ea81 100644
diff --git a/mm/prfile.c b/mm/prfile.c
new file mode 100644
index 0000000..1ef053b
index 0000000..3f56669
--- /dev/null
+++ 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
+ * path in /proc/PID/maps.
+ * Call these functions via macros defined in linux/mm.h.

View File

@ -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
index e3719a5..3203470 100644
@ -21,7 +22,7 @@ index e3719a5..3203470 100644
/**
* d_ancestor - search for an ancestor
diff --git a/fs/exec.c b/fs/exec.c
index 62175cb..f0b6fdd 100644
index 3e14ba2..6818b01 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -109,6 +109,7 @@ bool path_noexec(const struct path *path)
@ -33,10 +34,10 @@ index 62175cb..f0b6fdd 100644
#ifdef CONFIG_USELIB
/*
diff --git a/fs/fcntl.c b/fs/fcntl.c
index 659760e..5c37087 100644
index cffefab..725d190 100644
--- a/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:
return error;
}
@ -45,7 +46,7 @@ index 659760e..5c37087 100644
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
index 61517f5..c6bab39c 100644
--- a/fs/file_table.c
+++ b/fs/file_table.c
@@ -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'
@@ -260,6 +261,7 @@ void flush_delayed_fput(void)
@@ -258,6 +259,7 @@ void flush_delayed_fput(void)
{
delayed_fput(NULL);
}
@ -64,7 +65,7 @@ index 72e861a..01ae52f 100644
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);
@ -72,19 +73,19 @@ index 72e861a..01ae52f 100644
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);
}
}
+EXPORT_SYMBOL_GPL(put_filp);
void __init files_init(void)
{
{
diff --git a/fs/inode.c b/fs/inode.c
index 73820bf..7db829e 100644
index f7800d6..f31a6c7 100644
--- a/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);
}
@ -93,10 +94,10 @@ index 73820bf..7db829e 100644
/**
* touch_atime - update the access time
diff --git a/fs/namespace.c b/fs/namespace.c
index 8601f8d..2268be6 100644
index e5a4a7f..6d0c376 100644
--- a/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));
preempt_enable();
}
@ -104,7 +105,7 @@ index 8601f8d..2268be6 100644
/**
* 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));
}
@ -112,7 +113,7 @@ index 8601f8d..2268be6 100644
/*
* 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;
}
@ -193,7 +194,7 @@ index 9991f88..117042c 100644
/*
* 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
index 7ea1184..6e2e241 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,
@ -213,10 +214,18 @@ index 35bb784..92e08c5 100644
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
index 2388284..b2a68e5 100644
--- a/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 ERR_PTR(-ENOSYS);
}
@ -224,19 +233,27 @@ index 6e542f0..c6fa090 100644
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 ERR_PTR(-ENOSYS);
}
+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
index 9753304..b38e036 100644
index eb888c6..7ab89d2 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,
@@ -850,6 +850,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
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.
@@ -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);
}
@ -253,10 +270,10 @@ index 9753304..b38e036 100644
/**
* 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
index fe15900..e3386ea 100644
--- a/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);
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
diff --git a/fs/xattr.c b/fs/xattr.c
index 464c94b..0234d49 100644
index 61cd28b..35570cd 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,
@@ -297,6 +297,7 @@ vfs_getxattr_alloc(struct dentry *dentry, const char *name, char **xattr_value,
*xattr_value = value;
return error;
}
@ -277,10 +294,10 @@ index 464c94b..0234d49 100644
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
index bc97a97..895a1ba 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)
@@ -155,6 +155,7 @@ inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock)
}
return lock_classes + hlock->class_idx - 1;
}
@ -289,19 +306,19 @@ index b072240..80657d7 100644
#ifdef CONFIG_LOCK_STAT
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
+++ 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);
}
}
+EXPORT_SYMBOL_GPL(task_work_run);
diff --git a/security/commoncap.c b/security/commoncap.c
index 7abebd7..c079ce4 100644
index fc46f5b..90543ef 100644
--- a/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;
}
@ -317,10 +334,10 @@ index 7abebd7..c079ce4 100644
#ifdef CONFIG_SECURITY
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
+++ b/security/device_cgroup.c
@@ -7,6 +7,7 @@
@@ -8,6 +8,7 @@
#include <linux/device_cgroup.h>
#include <linux/cgroup.h>
#include <linux/ctype.h>
@ -328,7 +345,7 @@ index 03c1652..f88c84b 100644
#include <linux/list.h>
#include <linux/uaccess.h>
#include <linux/seq_file.h>
@@ -849,6 +850,7 @@ int __devcgroup_inode_permission(struct inode *inode, int mask)
@@ -850,6 +851,7 @@ int __devcgroup_inode_permission(struct inode *inode, int mask)
return __devcgroup_check_permission(type, imajor(inode), iminor(inode),
access);
}
@ -337,10 +354,10 @@ index 03c1652..f88c84b 100644
int devcgroup_inode_mknod(int mode, dev_t dev)
{
diff --git a/security/security.c b/security/security.c
index 3013237..342ce8b 100644
index 4bf0f57..b30d1e1 100644
--- a/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 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)
{
@@ -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 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,
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 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,
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 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)
{
@@ -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 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)
{
@@ -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 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)
{
@@ -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 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,
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 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)
{
@@ -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);
}
@ -412,7 +429,7 @@ index 3013237..342ce8b 100644
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 ima_file_mmap(file, prot);
}

View File

@ -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

View File

@ -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

View File

@ -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) {

View File

@ -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

View File

@ -1,5 +1,5 @@
#!/bin/bash
surum=4.13.12
surum=4.14.14
sonek=milis
depmod ${surum}-$sonek
cd /boot
@ -13,6 +13,7 @@ fi
[ -f /usr/bin/os-prober ] && os-prober
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.new ] && cp /etc/default/grub/grub.cfg /boot/grub/grub.cfg.new
grub-mkconfig -o /boot/grub/grub.cfg
fi
cd -

View File

@ -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)

View File

@ -4,13 +4,12 @@
# Gerekler: linux-firmware intel-ucode
isim=kernel
_basekernel=4.13
surum=4.13.12
_basekernel=4.14
surum=4.14.14
devir=1
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
https://github.com/copperhead/linux-hardened/releases/download/4.13.12.a/linux-hardened-${surum}.a.patch
config
aufs4-loopback.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.patch
config.aufs
lockdep-debug.patch
tmpfs-idr.patch
vfs-ino.patch
change-default-console-loglevel.patch
i8042-fix-aliases.patch)
vfs-ino.patch)
derle() {
@ -35,9 +31,7 @@ derle() {
patch -p1 -i "patch-${surum}"
# güvenli kernel yaması
patch -p1 -i "${SRC}/linux-hardened-${surum}.a.patch"
patch -p1 -i "${SRC}/i8042-fix-aliases.patch"
#patch -p1 -i "${SRC}/linux-hardened-${surum}.a.patch"
#çalışan sistem aufs yamaları
patch -p1 -i "${SRC}/aufs4.patch"
@ -46,11 +40,8 @@ derle() {
patch -p1 -i "${SRC}/aufs4-loopback.patch"
patch -p1 -i "${SRC}/aufs4-mmap.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}/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
@ -69,7 +60,7 @@ derle() {
yes "" | make oldconfig >/dev/null
# derleme
make ${MAKEFLAGS} bzImage modules
make ${MAKEFLAGS} bzImage modules || make ${MAKEFLAGS} bzImage modules
KARCH=x86
@ -106,10 +97,11 @@ derle() {
install -D -m644 .config \
"${PKG}/usr/src/linux-${_kernver}/.config"
######################
mkdir -p "${PKG}/usr/src/linux-${_kernver}/include"
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/"
done
@ -149,7 +141,11 @@ derle() {
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}"
done
# add docbook makefile
#install -D -m644 Documentation/DocBook/Makefile \
# "${PKG}/usr/src/linux-${_kernver}/Documentation/DocBook/Makefile"
# add dm headers
mkdir -p "${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
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}
}

View File

@ -1,8 +1,9 @@
SPDX-License-Identifier: GPL-2.0
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
+++ 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 {
@ -19,10 +20,10 @@ index a7d6bd2..9e93fbc 100644
umode_t mode; /* Mount mode for root directory */
unsigned char huge; /* Whether to try for hugepages */
diff --git a/mm/shmem.c b/mm/shmem.c
index fbcb3c9..859e4c2 100644
index 07a1d22..6d9b762 100644
--- a/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;
}
@ -38,7 +39,7 @@ index fbcb3c9..859e4c2 100644
}
#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);
WARN_ON(inode->i_blocks);
@ -50,7 +51,7 @@ index fbcb3c9..859e4c2 100644
shmem_free_inode(inode->i_sb);
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 shmem_inode_info *info;
struct shmem_sb_info *sbinfo = SHMEM_SB(sb);
@ -65,7 +66,7 @@ index fbcb3c9..859e4c2 100644
inode_init_owner(inode, dir, mode);
inode->i_blocks = 0;
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);
break;
}
@ -91,7 +92,7 @@ index fbcb3c9..859e4c2 100644
} else
shmem_free_inode(sb);
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)
{
__u32 *fh = vfh;
@ -101,7 +102,7 @@ index fbcb3c9..859e4c2 100644
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;
u64 inum;
@ -119,7 +120,7 @@ index fbcb3c9..859e4c2 100644
if (inode) {
dentry = d_find_alias(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,
struct inode *parent)
{
@ -153,7 +154,7 @@ index fbcb3c9..859e4c2 100644
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;
} else if (!strcmp(this_char,"nr_inodes")) {
sbinfo->max_inodes = memparse(value, &rest);
@ -162,7 +163,7 @@ index fbcb3c9..859e4c2 100644
goto bad_val;
} else if (!strcmp(this_char,"mode")) {
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 config = *sbinfo;
@ -171,7 +172,7 @@ index fbcb3c9..859e4c2 100644
int error = -EINVAL;
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",
sbinfo->max_blocks << (PAGE_SHIFT - 10));
if (sbinfo->max_inodes != shmem_default_max_inodes())
@ -180,7 +181,7 @@ index fbcb3c9..859e4c2 100644
if (sbinfo->mode != (S_IRWXUGO | S_ISVTX))
seq_printf(seq, ",mode=%03ho", sbinfo->mode);
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);
@ -189,7 +190,7 @@ index fbcb3c9..859e4c2 100644
percpu_counter_destroy(&sbinfo->used_blocks);
mpol_put(sbinfo->mpol);
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)
return -ENOMEM;
@ -198,7 +199,7 @@ index fbcb3c9..859e4c2 100644
sbinfo->mode = S_IRWXUGO | S_ISVTX;
sbinfo->uid = current_fsuid();
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);
}
@ -214,7 +215,7 @@ index fbcb3c9..859e4c2 100644
static const struct address_space_operations shmem_aops = {
.writepage = shmem_writepage,
.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");
goto out1;
}

View File

@ -1,8 +1,9 @@
SPDX-License-Identifier: GPL-2.0
diff --git a/fs/inode.c b/fs/inode.c
index 5037059..b55807b 100644
index d1e35b5..97e6515 100644
--- a/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 res = *p;
@ -11,7 +12,7 @@ index 5037059..b55807b 100644
#ifdef CONFIG_SMP
if (unlikely((res & (LAST_INO_BATCH-1)) == 0)) {
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++;
/* get_next_ino should not provide a 0 inode number */
if (unlikely(!res))