Commit cb6fac64 authored by abveritas's avatar abveritas
Browse files

linux 3.5.4 update, including new aufs3 patches, vhba-module rebuild

parent 805cd84d
......@@ -8,15 +8,15 @@ pkgbase=linux
pkgname=('linux' 'linux-headers' 'linux-docs') # Build stock -CHAKRA kernel
# pkgname=linux-custom # Build kernel with a different name
_kernelname=${pkgname#linux}
_basekernel=3.4
pkgver=${_basekernel}.6
_basekernel=3.5
pkgver=${_basekernel}.4
pkgrel=1
arch=('i686' 'x86_64')
url="http://www.kernel.org/"
license=('GPL2')
makedepends=('xmlto' 'docbook-xsl')
options=('!strip')
source=("http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.4.tar.xz"
source=("http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.5.tar.xz"
"http://www.kernel.org/pub/linux/kernel/v3.x/patch-${pkgver}.xz"
# the main kernel config files
'config' 'config.x86_64'
......@@ -31,25 +31,25 @@ source=("http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.4.tar.xz"
'config.aufs'
# standard config files for mkinitcpio ramdisk
"${pkgname}.preset"
'fix-acerhdf-1810T-bios.patch'
'change-default-console-loglevel.patch'
'i915-fix-ghost-tv-output.patch')
md5sums=('967f72983655e2479f951195953e8480'
'14443e53d3ab88e6eac45d954d891e00'
'watchdog-3.5.x.patch'
'i915-i2c-crash-3.5.x.patch')
md5sums=('24153eaaa81dedc9481ada8cd9c3b83d'
'4d34e5098b490670261b1aea71d26023'
'9bcefced1f4be50ef2720944f656e5d7'
'eccab7a50869a58ec476ab5b4fc087e8'
'a0aac33ce142f819220d77751585dd2f'
'af987a06ae369a1aa2c1b53621bf71f3'
'eefdf533f13bdfa90937856e3e97f981'
'013e265d1abe67816a36c91e088875ac'
'934a8a8b181f97e113a410f616e9f517'
'185c6ea92c3f3baf740bea83be443c9e'
'99e1c1de3af4fb90c66f9279c206b632'
'9dc1aa9fcc12b3c2f52f605830c02939'
'ee8123b76008a6a79764ed90fb8ba635'
'4245486a126775e5a6e469fd6f7484f1'
'28761067a33e8a359700480c8a7541e4'
'62691fb5a20d3d28a73ec0640e9c7b3c'
'a9e4407bf818e4a379b884e03362522b'
'77894d0a8fce44e26728be3f079ed668'
'52f4a2c7f6277774117c834d949d6b81'
'eb14dcfd80c00852ef81ded6e826826a'
'3cb9e819538197398aad5db5529b22d6'
'65cbe8e4c8efaf96dd162102e46ce81d'
'342071f852564e1ad03b79271a90b1a5')
'ae13ed1e92bba07e9b17cf5c8d89683c'
'ff4a203dd52e4dfb5d60948bb667d06d')
build() {
cd "${srcdir}/linux-${_basekernel}"
......@@ -60,13 +60,13 @@ build() {
# add latest fixes from stable queue, if needed
# http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git
# Some chips detect a ghost TV output
patch -p1 -i "${srcdir}/i915-fix-ghost-tv-output.patch"
# Broken watchdog
# https://bugzilla.kernel.org/show_bug.cgi?id=44991
patch -p1 -i "${srcdir}/watchdog-3.5.x.patch"
# Patch submitted upstream, waiting for inclusion:
# https://lkml.org/lkml/2012/2/19/51
# add support for latest bios of Acer 1810T acerhdf module
patch -p1 -i "${srcdir}/fix-acerhdf-1810T-bios.patch"
# i915 i2c crash
# https://bugzilla.kernel.org/show_bug.cgi?id=46381
patch -p1 -i "${srcdir}/i915-i2c-crash-3.5.x.patch"
# set DEFAULT_CONSOLE_LOGLEVEL to 4 (same value as the 'quiet' kernel param)
# remove this when a Kconfig knob is made available by upstream
......@@ -227,7 +227,7 @@ package_linux-headers() {
cp drivers/media/video/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/"
for i in bt8xx cpia2 cx25840 cx88 em28xx et61x251 pwc saa7134 sn9c102; do
for i in bt8xx cpia2 cx25840 cx88 em28xx pwc saa7134 sn9c102; do
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/${i}"
cp -a drivers/media/video/${i}/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/${i}"
done
......
aufs3 base patch
aufs3.5 base patch
diff --git a/fs/inode.c b/fs/inode.c
index c99163b..7f772fd 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -1491,7 +1491,7 @@ static int relatime_need_update(struct vfsmount *mnt, struct inode *inode,
* This does the actual work of updating an inodes time or version. Must have
* had called mnt_want_write() before calling this.
*/
-static int update_time(struct inode *inode, struct timespec *time, int flags)
+int update_time(struct inode *inode, struct timespec *time, int flags)
{
if (inode->i_op->update_time)
return inode->i_op->update_time(inode, time, flags);
diff --git a/fs/namei.c b/fs/namei.c
index 5008f01..4cc94cf 100644
index 7d69419..18c9782 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1753,7 +1753,7 @@ static struct dentry *__lookup_hash(struct qstr *name,
@@ -1864,7 +1864,7 @@ int vfs_path_lookup(struct dentry *dentry, struct vfsmount *mnt,
* needs parent already locked. Doesn't follow mounts.
* SMP-safe.
*/
......@@ -14,10 +27,10 @@ index 5008f01..4cc94cf 100644
return __lookup_hash(&nd->last, nd->path.dentry, nd);
}
diff --git a/fs/splice.c b/fs/splice.c
index fa2defa..e3569b0 100644
index 7bf08fa..e3c40b5 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -1085,8 +1085,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
@@ -1090,8 +1090,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
/*
* Attempt to initiate a splice from pipe to file.
*/
......@@ -28,7 +41,7 @@ index fa2defa..e3569b0 100644
{
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *,
loff_t *, size_t, unsigned int);
@@ -1113,9 +1113,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
@@ -1118,9 +1118,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.
*/
......@@ -41,6 +54,18 @@ index fa2defa..e3569b0 100644
{
ssize_t (*splice_read)(struct file *, loff_t *,
struct pipe_inode_info *, size_t, unsigned int);
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 17fd887..9c75a47 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2591,6 +2591,7 @@ extern int inode_change_ok(const struct inode *, struct iattr *);
extern int inode_newsize_ok(const struct inode *, loff_t offset);
extern void setattr_copy(struct inode *inode, const struct iattr *attr);
+extern int update_time(struct inode *, struct timespec *, int);
extern int file_update_time(struct file *file);
extern int generic_show_options(struct seq_file *m, struct dentry *root);
diff --git a/include/linux/namei.h b/include/linux/namei.h
index ffc0213..ef35a31 100644
--- a/include/linux/namei.h
......@@ -54,10 +79,10 @@ index ffc0213..ef35a31 100644
extern int follow_down_one(struct path *);
diff --git a/include/linux/splice.h b/include/linux/splice.h
index 26e5b61..3ffef2f 100644
index 09a545a..1ac5727 100644
--- a/include/linux/splice.h
+++ b/include/linux/splice.h
@@ -91,4 +91,10 @@ extern void splice_shrink_spd(struct pipe_inode_info *,
@@ -91,4 +91,10 @@ extern void splice_shrink_spd(struct splice_pipe_desc *);
extern void spd_release_page(struct splice_pipe_desc *, unsigned int);
extern const struct pipe_buf_operations page_cache_pipe_buf_ops;
......
aufs3 kbuild patch
aufs3.5 kbuild patch
diff --git a/fs/Kconfig b/fs/Kconfig
index 5f4c45d..357a8a6 100644
index f95ae3a..6d8a9a5 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -215,6 +215,7 @@ source "fs/pstore/Kconfig"
@@ -220,6 +220,7 @@ source "fs/pstore/Kconfig"
source "fs/sysv/Kconfig"
source "fs/ufs/Kconfig"
source "fs/exofs/Kconfig"
......@@ -13,19 +13,19 @@ index 5f4c45d..357a8a6 100644
endif # MISC_FILESYSTEMS
diff --git a/fs/Makefile b/fs/Makefile
index d2c3353..680ad8a 100644
index 2fb9779..abefac5 100644
--- a/fs/Makefile
+++ b/fs/Makefile
@@ -123,3 +123,4 @@ obj-$(CONFIG_GFS2_FS) += gfs2/
@@ -125,3 +125,4 @@ obj-$(CONFIG_GFS2_FS) += gfs2/
obj-y += exofs/ # Multiple modules
obj-$(CONFIG_CEPH_FS) += ceph/
obj-$(CONFIG_PSTORE) += pstore/
+obj-$(CONFIG_AUFS_FS) += aufs/
diff --git a/include/linux/Kbuild b/include/linux/Kbuild
index 619b565..29f386b 100644
index 8760be3..a1b8446 100644
--- a/include/linux/Kbuild
+++ b/include/linux/Kbuild
@@ -65,6 +65,7 @@ header-y += atmppp.h
@@ -66,6 +66,7 @@ header-y += atmppp.h
header-y += atmsap.h
header-y += atmsvc.h
header-y += audit.h
......
aufs3 loopback patch
aufs3.5 loopback patch
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index bbca966..8dfc881 100644
index 3bba655..bc9351f 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -500,7 +500,7 @@ out:
......@@ -183,7 +183,7 @@ index bbca966..8dfc881 100644
}
diff --git a/fs/aufs/f_op.c b/fs/aufs/f_op.c
index 942e71a..3d6a919 100644
index 9abe766..03ea4d4 100644
--- a/fs/aufs/f_op.c
+++ b/fs/aufs/f_op.c
@@ -355,7 +355,7 @@ static ssize_t aufs_splice_read(struct file *file, loff_t *ppos,
......@@ -196,7 +196,7 @@ index 942e71a..3d6a919 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 317f0e4..45215c2 100644
index 016276a..6b24e8b 100644
--- a/fs/aufs/loop.c
+++ b/fs/aufs/loop.c
@@ -131,3 +131,19 @@ void au_loopback_fin(void)
......@@ -258,10 +258,10 @@ index 53ad4c2..aeca21f 100644
/* ---------------------------------------------------------------------- */
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 25c40b9..32f80a0 100644
index 9c75a47..3c0e3ff 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1709,6 +1709,10 @@ struct super_operations {
@@ -1737,6 +1737,10 @@ struct super_operations {
int (*bdev_try_to_free_page)(struct super_block*, struct page*, gfp_t);
int (*nr_cached_objects)(struct super_block *);
void (*free_cached_objects)(struct super_block *, int);
......
aufs3 proc_map patch
aufs3.5 proc_map patch
diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c
index b1822dd..8b29ab7 100644
......@@ -16,10 +16,10 @@ index b1822dd..8b29ab7 100644
ino = inode->i_ino;
}
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
index e418c5a..53efe92 100644
index 4540b8f..0411f0f 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -222,6 +222,10 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
@@ -226,6 +226,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
if (file) {
struct inode *inode = vma->vm_file->f_path.dentry->d_inode;
......@@ -30,7 +30,7 @@ index e418c5a..53efe92 100644
dev = inode->i_sb->s_dev;
ino = inode->i_ino;
pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
@@ -1033,6 +1037,8 @@ static int show_numa_map(struct seq_file *m, void *v)
@@ -1185,6 +1189,8 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
if (file) {
seq_printf(m, " file=");
......@@ -40,10 +40,10 @@ index e418c5a..53efe92 100644
} else if (vma->vm_start <= mm->brk && vma->vm_end >= mm->start_brk) {
seq_printf(m, " heap");
diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c
index 980de54..4ee031f 100644
index 1ccfa53..c39acb5 100644
--- a/fs/proc/task_nommu.c
+++ b/fs/proc/task_nommu.c
@@ -148,6 +148,10 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma)
@@ -150,6 +150,10 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma,
if (file) {
struct inode *inode = vma->vm_file->f_path.dentry->d_inode;
......@@ -55,10 +55,10 @@ index 980de54..4ee031f 100644
ino = inode->i_ino;
pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT;
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index 5b42f1b..a49a07e 100644
index 704a626..a8c9afa 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -186,6 +186,7 @@ struct vm_region {
@@ -196,6 +196,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 */
......@@ -66,7 +66,7 @@ index 5b42f1b..a49a07e 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
@@ -245,6 +246,7 @@ struct vm_area_struct {
@@ -255,6 +256,7 @@ struct vm_area_struct {
unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE
units, *not* PAGE_CACHE_SIZE */
struct file * vm_file; /* File we map to (can be NULL). */
......@@ -75,10 +75,10 @@ index 5b42f1b..a49a07e 100644
#ifndef CONFIG_MMU
diff --git a/kernel/fork.c b/kernel/fork.c
index da4a6a1..3d19191 100644
index f00e319..df4b0fd 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -376,6 +376,8 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
@@ -418,6 +418,8 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
struct address_space *mapping = file->f_mapping;
get_file(file);
......@@ -88,10 +88,10 @@ index da4a6a1..3d19191 100644
atomic_dec(&inode->i_writecount);
mutex_lock(&mapping->i_mmap_mutex);
diff --git a/mm/memory.c b/mm/memory.c
index 829d437..3c1b28f12 100644
index 2466d12..906bc23 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -2622,6 +2622,8 @@ reuse:
@@ -2658,6 +2658,8 @@ reuse:
/* file_update_time outside page_lock */
if (vma->vm_file)
file_update_time(vma->vm_file);
......@@ -100,7 +100,7 @@ index 829d437..3c1b28f12 100644
return ret;
}
@@ -3307,6 +3309,8 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma,
@@ -3343,6 +3345,8 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma,
/* file_update_time outside page_lock */
if (vma->vm_file)
file_update_time(vma->vm_file);
......@@ -110,10 +110,10 @@ index 829d437..3c1b28f12 100644
unlock_page(vmf.page);
if (anon)
diff --git a/mm/mmap.c b/mm/mmap.c
index eae90af..c182f23 100644
index 3edfcdf..ad8b120 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -232,6 +232,8 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
@@ -233,6 +233,8 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
vma->vm_ops->close(vma);
if (vma->vm_file) {
fput(vma->vm_file);
......@@ -122,16 +122,16 @@ index eae90af..c182f23 100644
if (vma->vm_flags & VM_EXECUTABLE)
removed_exe_file_vma(vma->vm_mm);
}
@@ -619,6 +621,8 @@ again: remove_next = 1 + (end > next->vm_end);
if (remove_next) {
@@ -636,6 +638,8 @@ again: remove_next = 1 + (end > next->vm_end);
if (file) {
uprobe_munmap(next, next->vm_start, next->vm_end);
fput(file);
+ if (vma->vm_prfile)
+ fput(vma->vm_prfile);
if (next->vm_flags & VM_EXECUTABLE)
removed_exe_file_vma(mm);
}
@@ -1965,6 +1969,8 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
@@ -1993,6 +1997,8 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
if (new->vm_file) {
get_file(new->vm_file);
......@@ -140,7 +140,7 @@ index eae90af..c182f23 100644
if (vma->vm_flags & VM_EXECUTABLE)
added_exe_file_vma(mm);
}
@@ -1989,6 +1995,8 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
@@ -2017,6 +2023,8 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
if (vma->vm_flags & VM_EXECUTABLE)
removed_exe_file_vma(mm);
fput(new->vm_file);
......@@ -149,17 +149,17 @@ index eae90af..c182f23 100644
}
unlink_anon_vmas(new);
out_free_mpol:
@@ -2356,6 +2364,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
@@ -2417,6 +2425,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
new_vma->vm_pgoff = pgoff;
if (new_vma->vm_file) {
get_file(new_vma->vm_file);
+ if (new_vma->vm_prfile)
+ get_file(new_vma->vm_prfile);
if (vma->vm_flags & VM_EXECUTABLE)
added_exe_file_vma(mm);
}
if (uprobe_mmap(new_vma))
goto out_free_mempol;
diff --git a/mm/nommu.c b/mm/nommu.c
index b982290..42fbe0e 100644
index d4b0c10..a061091 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -633,6 +633,8 @@ static void __put_nommu_region(struct vm_region *region)
......@@ -171,7 +171,7 @@ index b982290..42fbe0e 100644
/* IO memory and memory shared directly out of the pagecache
* from ramfs/tmpfs mustn't be released here */
@@ -789,6 +791,8 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma)
@@ -791,6 +793,8 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma)
vma->vm_ops->close(vma);
if (vma->vm_file) {
fput(vma->vm_file);
......@@ -180,7 +180,7 @@ index b982290..42fbe0e 100644
if (vma->vm_flags & VM_EXECUTABLE)
removed_exe_file_vma(mm);
}
@@ -1362,6 +1366,8 @@ unsigned long do_mmap_pgoff(struct file *file,
@@ -1363,6 +1367,8 @@ unsigned long do_mmap_pgoff(struct file *file,
}
}
fput(region->vm_file);
......@@ -189,7 +189,7 @@ index b982290..42fbe0e 100644
kmem_cache_free(vm_region_jar, region);
region = pregion;
result = start;
@@ -1438,9 +1444,13 @@ error_just_free:
@@ -1439,9 +1445,13 @@ error_just_free:
error:
if (region->vm_file)
fput(region->vm_file);
......
aufs3 standalone patch
aufs3.5 standalone patch
diff --git a/fs/file_table.c b/fs/file_table.c
index c322794..2aad244 100644
index a305d9e..6a768be 100644
--- a/fs/file_table.c
+++ b/fs/file_table.c
@@ -443,6 +443,8 @@ void file_sb_list_del(struct file *file)
@@ -35,6 +35,7 @@ struct files_stat_struct files_stat = {
};
DEFINE_LGLOCK(files_lglock);
+EXPORT_SYMBOL_GPL(files_lglock);
/* SLAB cache for file structures */
static struct kmem_cache *filp_cachep __read_mostly;
@@ -441,6 +442,8 @@ void file_sb_list_del(struct file *file)
}
}
......@@ -14,10 +22,10 @@ index c322794..2aad244 100644
/*
diff --git a/fs/inode.c b/fs/inode.c
index ee4e66b..728042b 100644
index 7f772fd..e789d2f 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -65,6 +65,7 @@ static struct hlist_head *inode_hashtable __read_mostly;
@@ -56,6 +56,7 @@ static struct hlist_head *inode_hashtable __read_mostly;
static __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_hash_lock);
__cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_sb_list_lock);
......@@ -25,11 +33,19 @@ index ee4e66b..728042b 100644
/*
* Empty aops. Can be used for the cases where the user does not
@@ -1507,6 +1508,7 @@ int update_time(struct inode *inode, struct timespec *time, int flags)
mark_inode_dirty_sync(inode);
return 0;
}
+EXPORT_SYMBOL_GPL(update_time);
/**
* touch_atime - update the access time
diff --git a/fs/namei.c b/fs/namei.c
index 4cc94cf..af19e30 100644
index 18c9782..f09edf3 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1757,6 +1757,7 @@ struct dentry *lookup_hash(struct nameidata *nd)
@@ -1868,6 +1868,7 @@ struct dentry *lookup_hash(struct nameidata *nd)
{
return __lookup_hash(&nd->last, nd->path.dentry, nd);
}
......@@ -38,16 +54,24 @@ index 4cc94cf..af19e30 100644
/**
* lookup_one_len - filesystem helper to lookup single pathname component
diff --git a/fs/namespace.c b/fs/namespace.c
index cfc6d44..173d15a 100644
index 1e4a5fe..06aa768 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -1506,6 +1506,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
@@ -50,6 +50,7 @@ EXPORT_SYMBOL_GPL(fs_kobj);
* tree or hash is modified or when a vfsmount structure is modified.
*/
DEFINE_BRLOCK(vfsmount_lock);
+EXPORT_SYMBOL_GPL(vfsmount_lock);
static inline unsigned long hash(struct vfsmount *mnt, struct dentry *dentry)
{
@@ -1341,6 +1342,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
}
return 0;
}
+EXPORT_SYMBOL_GPL(iterate_mounts);
static void cleanup_group_ids(struct vfsmount *mnt, struct vfsmount *end)
static void cleanup_group_ids(struct mount *mnt, struct mount *end)
{
diff --git a/fs/notify/group.c b/fs/notify/group.c
index 63fc294..6f4adca 100644
......@@ -75,7 +99,7 @@ index 63fc294..6f4adca 100644
}
+EXPORT_SYMBOL_GPL(fsnotify_alloc_group);
diff --git a/fs/notify/mark.c b/fs/notify/mark.c
index e14587d..be6533b 100644
index f104d56..54f36db 100644
--- a/fs/notify/mark.c
+++ b/fs/notify/mark.c
@@ -112,6 +112,7 @@ void fsnotify_put_mark(struct fsnotify_mark *mark)
......@@ -86,7 +110,7 @@ index e14587d..be6533b 100644
/*
* Any time a mark is getting freed we end up here.
@@ -189,6 +190,7 @@ void fsnotify_destroy_mark(struct fsnotify_mark *mark)
@@ -191,6 +192,7 @@ void fsnotify_destroy_mark(struct fsnotify_mark *mark)
if (unlikely(atomic_dec_and_test(&group->num_marks)))
fsnotify_final_destroy_group(group);
}
......@@ -94,7 +118,7 @@ index e14587d..be6533b 100644
void fsnotify_set_mark_mask_locked(struct fsnotify_mark *mark, __u32 mask)
{
@@ -276,6 +278,7 @@ err:
@@ -278,6 +280,7 @@ err:
return ret;
}
......@@ -102,7 +126,7 @@ index e14587d..be6533b 100644
/*
* clear any marks in a group in which mark->flags & flags is true
@@ -331,6 +334,7 @@ void fsnotify_init_mark(struct fsnotify_mark *mark,
@@ -333,6 +336,7 @@ void fsnotify_init_mark(struct fsnotify_mark *mark,
atomic_set(&mark->refcnt, 1);
mark->free_mark = free_mark;
}
......@@ -111,7 +135,7 @@ index e14587d..be6533b 100644
static int fsnotify_mark_destroy(void *ignored)
{
diff --git a/fs/open.c b/fs/open.c
index 22c41b5..33b4033 100644
index 1540632..2463289 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -60,6 +60,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
......@@ -123,10 +147,10 @@ index 22c41b5..33b4033 100644
static long do_sys_truncate(const char __user *pathname, loff_t length)
{
diff --git a/fs/splice.c b/fs/splice.c
index e3569b0..9dc07b7 100644
index e3c40b5..3afc547 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -1109,6 +1109,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
@@ -1114,6 +1114,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
return splice_write(pipe, out, ppos, len, flags);
}
......@@ -134,7 +158,7 @@ index e3569b0..9dc07b7 100644
/*
* Attempt to initiate a splice from a file to a pipe.
@@ -1135,6 +1136,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
@@ -1140,6 +1141,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
return splice_read(in, ppos, pipe, len, flags);
}
......@@ -143,16 +167,23 @@ index e3569b0..9dc07b7 100644
/**
* splice_direct_to_actor - splices data directly between two non-pipes
diff --git a/security/commoncap.c b/security/commoncap.c
index ee4f848..611fd70 100644
index 6dbae46..9f4f29a 100644
--- a/security/commoncap.c
+++ b/security/commoncap.c
@@ -975,3 +975,4 @@ int cap_file_mmap(struct file *file, unsigned long reqprot,
@@ -979,9 +979,11 @@ int cap_mmap_addr(unsigned long addr)
}
return ret;
}
+EXPORT_SYMBOL_GPL(cap_file_mmap);
+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);
diff --git a/security/device_cgroup.c b/security/device_cgroup.c
index 4450fbe..bc94175 100644
index 442204c..e644a1c 100644
--- a/security/device_cgroup.c
+++ b/security/device_cgroup.c
@@ -7,6 +7,7 @@
......@@ -163,7 +194,7 @@ index 4450fbe..bc94175 100644
#include <linux/list.h>
#include <linux/uaccess.h>
#include <linux/seq_file.h>
@@ -500,6 +501,7 @@ found:
@@ -493,6 +494,7 @@ found:
return -EPERM;
}
......@@ -172,10 +203,10 @@ index 4450fbe..bc94175 100644
int devcgroup_inode_mknod(int mode, dev_t dev)
{
diff --git a/security/security.c b/security/security.c
index e2f684a..892000c 100644
index 860aeb3..ffb57bf 100644
--- a/security/security.c
+++ b/security/security.c
@@ -411,6 +411,7 @@ int security_path_rmdir(struct path *dir, struct dentry *dentry)
@@ -384,6 +384,7 @@ int security_path_rmdir(struct path *dir, struct dentry *dentry)
return 0;
return security_ops->path_rmdir(dir, dentry);
}
......@@ -183,7 +214,7 @@ index e2f684a..892000c 100644
int security_path_unlink(struct path *dir, struct dentry *dentry)
{
@@ -427,6 +428,7 @@ int security_path_symlink(struct path *dir, struct dentry *dentry,
@@ -400,6 +401,7 @@ int security_path_symlink(struct path *dir, struct dentry *dentry,
return 0;
return security_ops->path_symlink(dir, dentry, old_name);
}
......@@ -191,7 +222,7 @@ index e2f684a..892000c 100644
int security_path_link(struct dentry *old_dentry, struct path *new_dir,
struct dentry *new_dentry)
@@ -435,6 +437,7 @@ int security_path_link(struct dentry *old_dentry, struct path *new_dir,
@@ -408,6 +410,7 @@ int security_path_link(struct dentry *old_dentry, struct path *new_dir,
return 0;
return security_ops->path_link(old_dentry, new_dir, new_dentry);
}
......@@ -199,23 +230,23 @@ index e2f684a..892000c 100644
int security_path_rename(struct path *old_dir, struct dentry *old_dentry,
struct path *new_dir, struct dentry *new_dentry)
@@ -453,6 +456,7 @@ int security_path_truncate(struct path *path)
@@ -426,6 +429,7 @@ int security_path_truncate(struct path *path)
return 0;
return security_ops->path_truncate(path);