diff --git a/linux/PKGBUILD b/linux/PKGBUILD index fc5fd781a..b51699a52 100644 --- a/linux/PKGBUILD +++ b/linux/PKGBUILD @@ -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.6 -pkgver=3.6.6 +_basekernel=3.7 +pkgver=3.7.2 pkgrel=1 arch=('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.6.tar.xz" +source=("http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.7.tar.xz" "http://www.kernel.org/pub/linux/kernel/v3.x/patch-${pkgver}.xz" # the main kernel config files 'config.x86_64' @@ -24,7 +24,6 @@ source=("http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.6.tar.xz" 'aufs3-loopback.patch' 'aufs3-base.patch' 'aufs3-proc_map.patch' - 'aufs3-fix-export-__devcgroup_inode_permission.patch' 'aufs3-standalone.patch' 'aufs3-kbuild.patch' 'aufs3.patch' @@ -32,23 +31,24 @@ source=("http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.6.tar.xz" # standard config files for mkinitcpio ramdisk 'linux.preset' 'change-default-console-loglevel.patch' - 'module-symbol-waiting-3.6.patch' - 'module-init-wait-3.6.patch') -md5sums=('1a1760420eac802c541a20ab51a093d1' - '11d6d8749d4612a77f43f0531c0f2824' - '8aeb4b852fdaa3cc013784aa73537a9a' - '360b92a032eb7611583956314636d30f' - 'a0b105ee94cbb37a9bfb9d565ad92edf' - '41bd3b4e3d69d5ca030927e409278011' - '9dc1aa9fcc12b3c2f52f605830c02939' - '388890521b4f06820377f0ad7ab42d5a' - '7fa97ab324207992081aa5967ad6eed3' - '9ca80ba287ad2f0d5e59c0098a8de1ac' + 'fat-3.6.x.patch' + 'fix-watchdog-3.7.patch' + 'drm-fix-track-free-areas-3.7.patch') +md5sums=('21223369d682bcf44bcdfe1521095983' + '132211742278e18b8f4808754d85e66c' + '327570e1825dd67b15b46215f5652ae5' + '2e33819e859125ba0176072d2cd5ac81' + '6a1ffafeacb79be96c97e4638cea2452' + '3074dfe1c01219b1b005a4e5f00e25cd' + 'f18131bd568796722284557193c3a3c0' + 'cd0a193e702bf4d607190e5249c67da8' + '35a09afd2e995a88d36c342ade093c27' '52f4a2c7f6277774117c834d949d6b81' 'eb14dcfd80c00852ef81ded6e826826a' '65cbe8e4c8efaf96dd162102e46ce81d' - '670931649c60fcb3ef2e0119ed532bd4' - '8a71abc4224f575008f974a099b5cf6f') + '88d501404f172dac6fcb248978251560' + '3485d6c7ae3af35d16e09d6d9a7ed32a' + 'e365972f002482a7b25cd5360467d75f') build() { cd "${srcdir}/linux-${_basekernel}" @@ -59,9 +59,12 @@ build() { # add latest fixes from stable queue, if needed # http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git - # fix module initialisation - patch -p1 -i "${srcdir}/module-symbol-waiting-3.6.patch" - patch -p1 -i "${srcdir}/module-init-wait-3.6.patch" + # fix cosmetic fat issue + patch -p1 -i "${srcdir}/fat-3.6.x.patch" + # fix watchdog enable/disable regression + patch -p1 -i "${srcdir}/fix-watchdog-3.7.patch" + # fix GPU hang + patch -p1 -i "${srcdir}/drm-fix-track-free-areas-3.7.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 @@ -74,7 +77,6 @@ build() { patch -p1 -i "${srcdir}/aufs3-kbuild.patch" patch -p1 -i "${srcdir}/aufs3-loopback.patch" patch -p1 -i "${srcdir}/aufs3-proc_map.patch" - #patch -p1 -i "${srcdir}/aufs3-fix-export-__devcgroup_inode_permission.patch" patch -p1 -i "${srcdir}/aufs3-standalone.patch" cat "${srcdir}/config.x86_64" > ./.config @@ -189,7 +191,7 @@ package_linux-headers() { mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/include" for i in acpi asm-generic config crypto drm generated linux math-emu \ - media mtd net pcmcia scsi sound trace video xen; do + media net pcmcia scsi sound trace uapi video xen; do cp -a include/${i} "${pkgdir}/usr/src/linux-${_kernver}/include/" done @@ -212,13 +214,22 @@ package_linux-headers() { cp arch/${KARCH}/kernel/asm-offsets.s "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/kernel/" # add headers for lirc package - mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video" - - cp drivers/media/video/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/" - - 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}" + # pci + for i in bt8xx cx88 saa7134; do + mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/pci/${i}" + cp -a drivers/media/pci/${i}/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/pci/${i}" + done + # usb + for i in cpia2 em28xx pwc sn9c102; do + mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/usb/${i}" + cp -a drivers/media/usb/${i}/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/usb/${i}" + done + # i2c + mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c" + cp drivers/media/i2c/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c/" + for i in cx25840; do + mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c/${i}" + cp -a drivers/media/i2c/${i}/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c/${i}" done # add docbook makefile @@ -238,24 +249,24 @@ package_linux-headers() { cp net/mac80211/*.h "${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/" # add dvb headers for external modules - mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core" - cp drivers/media/dvb/dvb-core/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core/" + mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-core" + cp drivers/media/dvb-core/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-core/" # and... mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/" cp include/config/dvb/*.h "${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/" # add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new - mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/" - cp drivers/media/dvb/frontends/lgdt330x.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/" - cp drivers/media/video/msp3400-driver.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/" + mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-frontends/" + cp drivers/media/dvb-frontends/lgdt330x.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-frontends/" + cp drivers/media/i2c/msp3400-driver.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c/" # add dvb headers - mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-usb" - cp drivers/media/dvb/dvb-usb/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-usb/" - mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends" - cp drivers/media/dvb/frontends/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/" - mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/common/tuners" - cp drivers/media/common/tuners/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/common/tuners/" + mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/usb/dvb-usb" + cp drivers/media/usb/dvb-usb/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/usb/dvb-usb/" + mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-frontends" + cp drivers/media/dvb-frontends/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-frontends/" + mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/tuners" + cp drivers/media/tuners/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/tuners/" # add xfs and shmem for aufs building mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/fs/xfs" diff --git a/linux/aufs3-base.patch b/linux/aufs3-base.patch index adb9ab7cc..225326d98 100644 --- a/linux/aufs3-base.patch +++ b/linux/aufs3-base.patch @@ -1,10 +1,23 @@ -aufs3.6 base patch +aufs3.7 base patch +diff --git a/fs/file_table.c b/fs/file_table.c +index a72bf9d..dac6792 100644 +--- a/fs/file_table.c ++++ b/fs/file_table.c +@@ -36,7 +36,7 @@ struct files_stat_struct files_stat = { + .max_files = NR_FILE + }; + +-DEFINE_STATIC_LGLOCK(files_lglock); ++DEFINE_LGLOCK(files_lglock); + + /* SLAB cache for file structures */ + static struct kmem_cache *filp_cachep __read_mostly; diff --git a/fs/inode.c b/fs/inode.c -index ac8d904..7b2c8fa 100644 +index 64999f1..ad73fc3 100644 --- a/fs/inode.c +++ b/fs/inode.c -@@ -1491,7 +1491,7 @@ static int relatime_need_update(struct vfsmount *mnt, struct inode *inode, +@@ -1503,7 +1503,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. */ @@ -14,7 +27,7 @@ index ac8d904..7b2c8fa 100644 if (inode->i_op->update_time) return inode->i_op->update_time(inode, time, flags); diff --git a/fs/splice.c b/fs/splice.c -index 41514dd..663b402 100644 +index 13e5b47..f185c6c 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -1093,8 +1093,8 @@ EXPORT_SYMBOL(generic_splice_sendpage); @@ -42,10 +55,10 @@ index 41514dd..663b402 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 aa11047..9116d2e 100644 +index 75fe9a1..70a766ae 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h -@@ -2741,6 +2741,7 @@ extern int inode_change_ok(const struct inode *, struct iattr *); +@@ -2553,6 +2553,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); diff --git a/linux/aufs3-fix-export-__devcgroup_inode_permission.patch b/linux/aufs3-fix-export-__devcgroup_inode_permission.patch deleted file mode 100644 index 81ea3881d..000000000 --- a/linux/aufs3-fix-export-__devcgroup_inode_permission.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/security/device_cgroup.c -+++ b/security/device_cgroup.c -@@ -13,6 +13,7 @@ - #include - #include - #include -+#include - - #define ACC_MKNOD 1 - #define ACC_READ 2 diff --git a/linux/aufs3-kbuild.patch b/linux/aufs3-kbuild.patch index d9ba9ab81..f568b254e 100644 --- a/linux/aufs3-kbuild.patch +++ b/linux/aufs3-kbuild.patch @@ -1,4 +1,4 @@ -aufs3.6 kbuild patch +aufs3.7 kbuild patch diff --git a/fs/Kconfig b/fs/Kconfig index f95ae3a..6d8a9a5 100644 @@ -13,23 +13,11 @@ index f95ae3a..6d8a9a5 100644 endif # MISC_FILESYSTEMS diff --git a/fs/Makefile b/fs/Makefile -index 2fb9779..abefac5 100644 +index 1d7af79..06db6eb 100644 --- a/fs/Makefile +++ b/fs/Makefile -@@ -125,3 +125,4 @@ obj-$(CONFIG_GFS2_FS) += gfs2/ +@@ -126,3 +126,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 fa21760..ee029e3 100644 ---- a/include/linux/Kbuild -+++ b/include/linux/Kbuild -@@ -66,6 +66,7 @@ header-y += atmppp.h - header-y += atmsap.h - header-y += atmsvc.h - header-y += audit.h -+header-y += aufs_type.h - header-y += auto_fs.h - header-y += auto_fs4.h - header-y += auxvec.h diff --git a/linux/aufs3-loopback.patch b/linux/aufs3-loopback.patch index 05d449baa..d05c4ce99 100644 --- a/linux/aufs3-loopback.patch +++ b/linux/aufs3-loopback.patch @@ -1,7 +1,7 @@ -aufs3.6 loopback patch +aufs3.7 loopback patch diff --git a/drivers/block/loop.c b/drivers/block/loop.c -index 3bba655..bc9351f 100644 +index 54046e5..b0f8b8b 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -500,7 +500,7 @@ out: @@ -165,7 +165,7 @@ index 3bba655..bc9351f 100644 gfp_t gfp = lo->old_gfp_mask; struct block_device *bdev = lo->lo_device; -@@ -990,6 +1023,7 @@ static int loop_clr_fd(struct loop_device *lo) +@@ -1003,6 +1036,7 @@ static int loop_clr_fd(struct loop_device *lo) spin_lock_irq(&lo->lo_lock); lo->lo_backing_file = NULL; @@ -173,7 +173,7 @@ index 3bba655..bc9351f 100644 spin_unlock_irq(&lo->lo_lock); loop_release_xfer(lo); -@@ -1030,6 +1064,8 @@ static int loop_clr_fd(struct loop_device *lo) +@@ -1043,6 +1077,8 @@ static int loop_clr_fd(struct loop_device *lo) * bd_mutex which is usually taken before lo_ctl_mutex. */ fput(filp); @@ -183,7 +183,7 @@ index 3bba655..bc9351f 100644 } diff --git a/fs/aufs/f_op.c b/fs/aufs/f_op.c -index 896f3e7..40d875e 100644 +index 5c35454..88f507b 100644 --- a/fs/aufs/f_op.c +++ b/fs/aufs/f_op.c @@ -352,7 +352,7 @@ static ssize_t aufs_splice_read(struct file *file, loff_t *ppos, @@ -196,7 +196,7 @@ index 896f3e7..40d875e 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 016276a..6b24e8b 100644 +index 4fa75a4..a923899 100644 --- a/fs/aufs/loop.c +++ b/fs/aufs/loop.c @@ -131,3 +131,19 @@ void au_loopback_fin(void) @@ -220,7 +220,7 @@ index 016276a..6b24e8b 100644 + return f; +} diff --git a/fs/aufs/loop.h b/fs/aufs/loop.h -index b7af6a7..7a50e6e 100644 +index 88d019c..8707c3a 100644 --- a/fs/aufs/loop.h +++ b/fs/aufs/loop.h @@ -36,6 +36,8 @@ void au_warn_loopback(struct super_block *h_sb); @@ -242,13 +242,13 @@ index b7af6a7..7a50e6e 100644 #endif /* __KERNEL__ */ diff --git a/fs/aufs/super.c b/fs/aufs/super.c -index ccf9ac7..36c4c02 100644 +index ab4c909..8e654b8 100644 --- a/fs/aufs/super.c +++ b/fs/aufs/super.c -@@ -780,7 +780,10 @@ static const struct super_operations aufs_sop = { - .show_options = aufs_show_options, +@@ -811,7 +811,10 @@ static const struct super_operations aufs_sop = { .statfs = aufs_statfs, .put_super = aufs_put_super, + .sync_fs = aufs_sync_fs, - .remount_fs = aufs_remount_fs + .remount_fs = aufs_remount_fs, +#ifdef CONFIG_AUFS_BDEV_LOOP @@ -258,10 +258,10 @@ index ccf9ac7..36c4c02 100644 /* ---------------------------------------------------------------------- */ diff --git a/include/linux/fs.h b/include/linux/fs.h -index 9116d2e..02ef853 100644 +index 70a766ae..31fcb91 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h -@@ -1878,6 +1878,10 @@ struct super_operations { +@@ -1619,6 +1619,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); @@ -273,10 +273,10 @@ index 9116d2e..02ef853 100644 /* diff --git a/include/linux/loop.h b/include/linux/loop.h -index 11a41a8..c190b78 100644 +index 6492181..2b61d6a 100644 --- a/include/linux/loop.h +++ b/include/linux/loop.h -@@ -48,7 +48,7 @@ struct loop_device { +@@ -44,7 +44,7 @@ struct loop_device { int (*ioctl)(struct loop_device *, int cmd, unsigned long arg); diff --git a/linux/aufs3-proc_map.patch b/linux/aufs3-proc_map.patch index 09dcfea40..63a79252f 100644 --- a/linux/aufs3-proc_map.patch +++ b/linux/aufs3-proc_map.patch @@ -1,18 +1,18 @@ -aufs3.6 proc_map patch +aufs3.7 proc_map patch diff --git a/fs/buffer.c b/fs/buffer.c -index 58e2e7b..f314bc2 100644 +index ec0aca8..107f143 100644 --- a/fs/buffer.c +++ b/fs/buffer.c -@@ -2317,6 +2317,8 @@ int __block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf, +@@ -2384,6 +2384,8 @@ int block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf, * fault so this update may be superfluous but who really cares... */ file_update_time(vma->vm_file); + if (vma->vm_prfile) + file_update_time(vma->vm_prfile); - lock_page(page); - size = i_size_read(inode); + ret = __block_page_mkwrite(vma, vmf, get_block); + sb_end_pagefault(sb); diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c index b1822dd..8b29ab7 100644 --- a/fs/proc/nommu.c @@ -29,10 +29,10 @@ index b1822dd..8b29ab7 100644 ino = inode->i_ino; } diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c -index 4540b8f..0411f0f 100644 +index 90c63f9..78680c7 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c -@@ -226,6 +226,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid) +@@ -272,6 +272,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; @@ -43,7 +43,7 @@ index 4540b8f..0411f0f 100644 dev = inode->i_sb->s_dev; ino = inode->i_ino; pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT; -@@ -1185,6 +1189,8 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid) +@@ -1232,6 +1236,8 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid) if (file) { seq_printf(m, " file="); @@ -68,10 +68,10 @@ index 1ccfa53..c39acb5 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 bf78672..cac65b6 100644 +index 31f8a3a..8b068ad 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h -@@ -212,6 +212,7 @@ struct vm_region { +@@ -211,6 +211,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 */ @@ -79,7 +79,7 @@ index bf78672..cac65b6 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 -@@ -271,6 +272,7 @@ struct vm_area_struct { +@@ -267,6 +268,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). */ @@ -88,10 +88,10 @@ index bf78672..cac65b6 100644 #ifndef CONFIG_MMU diff --git a/kernel/fork.c b/kernel/fork.c -index 2c8857e..3709356 100644 +index 8b20ab7..11a9854 100644 --- a/kernel/fork.c +++ b/kernel/fork.c -@@ -414,6 +414,8 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) +@@ -416,6 +416,8 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) struct address_space *mapping = file->f_mapping; get_file(file); @@ -101,10 +101,10 @@ index 2c8857e..3709356 100644 atomic_dec(&inode->i_writecount); mutex_lock(&mapping->i_mmap_mutex); diff --git a/mm/memory.c b/mm/memory.c -index 5736170..908963f 100644 +index 221fc9f..a55a613 100644 --- a/mm/memory.c +++ b/mm/memory.c -@@ -3355,6 +3355,8 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -3368,6 +3368,8 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma, /* file_update_time outside page_lock */ if (vma->vm_file && !page_mkwrite) file_update_time(vma->vm_file); @@ -114,56 +114,56 @@ index 5736170..908963f 100644 unlock_page(vmf.page); if (anon) diff --git a/mm/mmap.c b/mm/mmap.c -index ae18a48..ab6498a 100644 +index 9a796c4..8f3271e 100644 --- a/mm/mmap.c +++ b/mm/mmap.c -@@ -233,6 +233,8 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma) +@@ -227,6 +227,8 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma) vma->vm_ops->close(vma); - if (vma->vm_file) { + if (vma->vm_file) fput(vma->vm_file); -+ if (vma->vm_prfile) -+ fput(vma->vm_prfile); - if (vma->vm_flags & VM_EXECUTABLE) - removed_exe_file_vma(vma->vm_mm); - } -@@ -636,6 +638,8 @@ again: remove_next = 1 + (end > next->vm_end); ++ if (vma->vm_prfile) ++ fput(vma->vm_prfile); + mpol_put(vma_policy(vma)); + kmem_cache_free(vm_area_cachep, vma); + return next; +@@ -667,6 +669,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); } -@@ -1991,6 +1995,8 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, + if (next->anon_vma) + anon_vma_merge(vma, next); +@@ -2019,6 +2023,8 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, - if (new->vm_file) { + if (new->vm_file) get_file(new->vm_file); -+ if (new->vm_prfile) -+ get_file(new->vm_prfile); - if (vma->vm_flags & VM_EXECUTABLE) - added_exe_file_vma(mm); - } -@@ -2015,6 +2021,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); ++ if (new->vm_prfile) ++ get_file(new->vm_prfile); + + if (new->vm_ops && new->vm_ops->open) + new->vm_ops->open(new); +@@ -2038,6 +2044,8 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, + new->vm_ops->close(new); + if (new->vm_file) fput(new->vm_file); -+ if (new->vm_prfile) -+ fput(new->vm_prfile); - } ++ if (new->vm_prfile) ++ fput(new->vm_prfile); unlink_anon_vmas(new); out_free_mpol: -@@ -2412,6 +2420,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, - new_vma->vm_pgoff = pgoff; - if (new_vma->vm_file) { + mpol_put(pol); +@@ -2435,6 +2443,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, + goto out_free_mempol; + 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 (new_vma->vm_prfile) ++ get_file(new_vma->vm_prfile); + if (new_vma->vm_ops && new_vma->vm_ops->open) + 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 d4b0c10..a061091 100644 +index 45131b4..576643c9f 100644 --- a/mm/nommu.c +++ b/mm/nommu.c @@ -633,6 +633,8 @@ static void __put_nommu_region(struct vm_region *region) @@ -177,14 +177,14 @@ index d4b0c10..a061091 100644 * from ramfs/tmpfs mustn't be released here */ @@ -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) { + if (vma->vm_file) fput(vma->vm_file); -+ if (vma->vm_prfile) -+ fput(vma->vm_prfile); - if (vma->vm_flags & VM_EXECUTABLE) - removed_exe_file_vma(mm); - } -@@ -1363,6 +1367,8 @@ unsigned long do_mmap_pgoff(struct file *file, ++ if (vma->vm_prfile) ++ fput(vma->vm_prfile); + put_nommu_region(vma->vm_region); + kmem_cache_free(vm_area_cachep, vma); + } +@@ -1354,6 +1358,8 @@ unsigned long do_mmap_pgoff(struct file *file, } } fput(region->vm_file); @@ -193,7 +193,7 @@ index d4b0c10..a061091 100644 kmem_cache_free(vm_region_jar, region); region = pregion; result = start; -@@ -1439,9 +1445,13 @@ error_just_free: +@@ -1430,9 +1436,13 @@ error_just_free: error: if (region->vm_file) fput(region->vm_file); @@ -204,6 +204,6 @@ index d4b0c10..a061091 100644 fput(vma->vm_file); + if (vma->vm_prfile) + fput(vma->vm_prfile); - if (vma->vm_flags & VM_EXECUTABLE) - removed_exe_file_vma(vma->vm_mm); kmem_cache_free(vm_area_cachep, vma); + kleave(" = %d", ret); + return ret; diff --git a/linux/aufs3-standalone.patch b/linux/aufs3-standalone.patch index d02980b41..7ca983c1e 100644 --- a/linux/aufs3-standalone.patch +++ b/linux/aufs3-standalone.patch @@ -1,7 +1,7 @@ -aufs3.6 standalone patch +aufs3.7 standalone patch diff --git a/fs/file_table.c b/fs/file_table.c -index 701985e..a9fe741 100644 +index dac6792..e3f2c15 100644 --- a/fs/file_table.c +++ b/fs/file_table.c @@ -37,6 +37,7 @@ struct files_stat_struct files_stat = { @@ -12,7 +12,7 @@ index 701985e..a9fe741 100644 /* SLAB cache for file structures */ static struct kmem_cache *filp_cachep __read_mostly; -@@ -509,6 +510,8 @@ void file_sb_list_del(struct file *file) +@@ -403,6 +404,8 @@ void file_sb_list_del(struct file *file) } } @@ -22,7 +22,7 @@ index 701985e..a9fe741 100644 /* diff --git a/fs/inode.c b/fs/inode.c -index 7b2c8fa..0c4318d 100644 +index ad73fc3..108ff2b 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -56,6 +56,7 @@ static struct hlist_head *inode_hashtable __read_mostly; @@ -33,7 +33,7 @@ index 7b2c8fa..0c4318d 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) +@@ -1519,6 +1520,7 @@ int update_time(struct inode *inode, struct timespec *time, int flags) mark_inode_dirty_sync(inode); return 0; } @@ -42,7 +42,7 @@ index 7b2c8fa..0c4318d 100644 /** * touch_atime - update the access time diff --git a/fs/namespace.c b/fs/namespace.c -index 7bdf790..5b85c4c 100644 +index 2496062..3e66a90 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -50,6 +50,7 @@ EXPORT_SYMBOL_GPL(fs_kobj); @@ -123,7 +123,7 @@ index f104d56..54f36db 100644 static int fsnotify_mark_destroy(void *ignored) { diff --git a/fs/open.c b/fs/open.c -index e1f2cdb..2804cd6 100644 +index 59071f5..7e4c856 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, @@ -135,7 +135,7 @@ index e1f2cdb..2804cd6 100644 static long do_sys_truncate(const char __user *pathname, loff_t length) { diff --git a/fs/splice.c b/fs/splice.c -index 663b402..51e1deb 100644 +index f185c6c..f3d89da 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -1117,6 +1117,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out, @@ -171,7 +171,7 @@ index 6dbae46..9f4f29a 100644 } +EXPORT_SYMBOL_GPL(cap_mmap_file); diff --git a/security/device_cgroup.c b/security/device_cgroup.c -index 442204c..e644a1c 100644 +index b08d20c..a90420b 100644 --- a/security/device_cgroup.c +++ b/security/device_cgroup.c @@ -7,6 +7,7 @@ @@ -182,19 +182,19 @@ index 442204c..e644a1c 100644 #include #include #include -@@ -493,6 +494,7 @@ found: - - return -EPERM; +@@ -617,6 +618,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 860aeb3..ffb57bf 100644 +index 8dcd4ae..6efe561 100644 --- a/security/security.c +++ b/security/security.c -@@ -384,6 +384,7 @@ int security_path_rmdir(struct path *dir, struct dentry *dentry) +@@ -396,6 +396,7 @@ int security_path_rmdir(struct path *dir, struct dentry *dentry) return 0; return security_ops->path_rmdir(dir, dentry); } @@ -202,7 +202,7 @@ index 860aeb3..ffb57bf 100644 int security_path_unlink(struct path *dir, struct dentry *dentry) { -@@ -400,6 +401,7 @@ int security_path_symlink(struct path *dir, struct dentry *dentry, +@@ -412,6 +413,7 @@ int security_path_symlink(struct path *dir, struct dentry *dentry, return 0; return security_ops->path_symlink(dir, dentry, old_name); } @@ -210,7 +210,7 @@ index 860aeb3..ffb57bf 100644 int security_path_link(struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry) -@@ -408,6 +410,7 @@ int security_path_link(struct dentry *old_dentry, struct path *new_dir, +@@ -420,6 +422,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); } @@ -218,7 +218,7 @@ index 860aeb3..ffb57bf 100644 int security_path_rename(struct path *old_dir, struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry) -@@ -426,6 +429,7 @@ int security_path_truncate(struct path *path) +@@ -438,6 +441,7 @@ int security_path_truncate(struct path *path) return 0; return security_ops->path_truncate(path); } @@ -226,15 +226,15 @@ index 860aeb3..ffb57bf 100644 int security_path_chmod(struct path *path, umode_t mode) { -@@ -433,6 +437,7 @@ int security_path_chmod(struct path *path, umode_t mode) +@@ -445,6 +449,7 @@ int security_path_chmod(struct path *path, umode_t mode) return 0; return security_ops->path_chmod(path, mode); } +EXPORT_SYMBOL_GPL(security_path_chmod); - int security_path_chown(struct path *path, uid_t uid, gid_t gid) + int security_path_chown(struct path *path, kuid_t uid, kgid_t gid) { -@@ -440,6 +445,7 @@ int security_path_chown(struct path *path, uid_t uid, gid_t gid) +@@ -452,6 +457,7 @@ int security_path_chown(struct path *path, kuid_t uid, kgid_t gid) return 0; return security_ops->path_chown(path, uid, gid); } @@ -242,7 +242,7 @@ index 860aeb3..ffb57bf 100644 int security_path_chroot(struct path *path) { -@@ -516,6 +522,7 @@ int security_inode_readlink(struct dentry *dentry) +@@ -528,6 +534,7 @@ int security_inode_readlink(struct dentry *dentry) return 0; return security_ops->inode_readlink(dentry); } @@ -250,7 +250,7 @@ index 860aeb3..ffb57bf 100644 int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd) { -@@ -530,6 +537,7 @@ int security_inode_permission(struct inode *inode, int mask) +@@ -542,6 +549,7 @@ int security_inode_permission(struct inode *inode, int mask) return 0; return security_ops->inode_permission(inode, mask); } @@ -258,7 +258,7 @@ index 860aeb3..ffb57bf 100644 int security_inode_setattr(struct dentry *dentry, struct iattr *attr) { -@@ -645,6 +653,7 @@ int security_file_permission(struct file *file, int mask) +@@ -663,6 +671,7 @@ int security_file_permission(struct file *file, int mask) return fsnotify_perm(file, mask); } @@ -266,7 +266,7 @@ index 860aeb3..ffb57bf 100644 int security_file_alloc(struct file *file) { -@@ -705,6 +714,7 @@ int security_mmap_file(struct file *file, unsigned long prot, +@@ -723,6 +732,7 @@ int security_mmap_file(struct file *file, unsigned long prot, return ret; return ima_file_mmap(file, prot); } diff --git a/linux/aufs3-standalone.patch-old b/linux/aufs3-standalone.patch-old new file mode 100644 index 000000000..647974eab --- /dev/null +++ b/linux/aufs3-standalone.patch-old @@ -0,0 +1,276 @@ +aufs3.7 standalone patch + +diff --git a/fs/file_table.c b/fs/file_table.c +index dac6792..e3f2c15 100644 +--- a/fs/file_table.c ++++ b/fs/file_table.c +@@ -37,6 +37,7 @@ struct files_stat_struct files_stat = { + }; + + DEFINE_LGLOCK(files_lglock); ++EXPORT_SYMBOL(files_lglock); + + /* SLAB cache for file structures */ + static struct kmem_cache *filp_cachep __read_mostly; +@@ -403,6 +404,8 @@ void file_sb_list_del(struct file *file) + } + } + ++EXPORT_SYMBOL(file_sb_list_del); ++ + #ifdef CONFIG_SMP + + /* +diff --git a/fs/inode.c b/fs/inode.c +index ad73fc3..108ff2b 100644 +--- a/fs/inode.c ++++ b/fs/inode.c +@@ -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); ++EXPORT_SYMBOL(inode_sb_list_lock); + + /* + * Empty aops. Can be used for the cases where the user does not +@@ -1519,6 +1520,7 @@ int update_time(struct inode *inode, struct timespec *time, int flags) + mark_inode_dirty_sync(inode); + return 0; + } ++EXPORT_SYMBOL(update_time); + + /** + * touch_atime - update the access time +diff --git a/fs/namespace.c b/fs/namespace.c +index 2496062..3e66a90 100644 +--- a/fs/namespace.c ++++ b/fs/namespace.c +@@ -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(vfsmount_lock); + + static inline unsigned long hash(struct vfsmount *mnt, struct dentry *dentry) + { +@@ -1401,6 +1402,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, + } + return 0; + } ++EXPORT_SYMBOL(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 63fc294..6f4adca 100644 +--- a/fs/notify/group.c ++++ b/fs/notify/group.c +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + + #include + #include "fsnotify.h" +@@ -70,6 +71,7 @@ void fsnotify_put_group(struct fsnotify_group *group) + if (atomic_dec_and_test(&group->refcnt)) + fsnotify_destroy_group(group); + } ++EXPORT_SYMBOL(fsnotify_put_group); + + /* + * Create a new fsnotify_group and hold a reference for the group returned. +@@ -102,3 +104,4 @@ struct fsnotify_group *fsnotify_alloc_group(const struct fsnotify_ops *ops) + + return group; + } ++EXPORT_SYMBOL(fsnotify_alloc_group); +diff --git a/fs/notify/mark.c b/fs/notify/mark.c +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) + if (atomic_dec_and_test(&mark->refcnt)) + mark->free_mark(mark); + } ++EXPORT_SYMBOL(fsnotify_put_mark); + + /* + * Any time a mark is getting freed we end up here. +@@ -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); + } ++EXPORT_SYMBOL(fsnotify_destroy_mark); + + void fsnotify_set_mark_mask_locked(struct fsnotify_mark *mark, __u32 mask) + { +@@ -278,6 +280,7 @@ err: + + return ret; + } ++EXPORT_SYMBOL(fsnotify_add_mark); + + /* + * clear any marks in a group in which mark->flags & flags is true +@@ -333,6 +336,7 @@ void fsnotify_init_mark(struct fsnotify_mark *mark, + atomic_set(&mark->refcnt, 1); + mark->free_mark = free_mark; + } ++EXPORT_SYMBOL(fsnotify_init_mark); + + static int fsnotify_mark_destroy(void *ignored) + { +diff --git a/fs/open.c b/fs/open.c +index 59071f5..7e4c856 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, + mutex_unlock(&dentry->d_inode->i_mutex); + return ret; + } ++EXPORT_SYMBOL(do_truncate); + + static long do_sys_truncate(const char __user *pathname, loff_t length) + { +diff --git a/fs/splice.c b/fs/splice.c +index f185c6c..f3d89da 100644 +--- a/fs/splice.c ++++ b/fs/splice.c +@@ -1117,6 +1117,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out, + + return splice_write(pipe, out, ppos, len, flags); + } ++EXPORT_SYMBOL(do_splice_from); + + /* + * Attempt to initiate a splice from a file to a pipe. +@@ -1143,6 +1144,7 @@ long do_splice_to(struct file *in, loff_t *ppos, + + return splice_read(in, ppos, pipe, len, flags); + } ++EXPORT_SYMBOL(do_splice_to); + + /** + * splice_direct_to_actor - splices data directly between two non-pipes +diff --git a/security/commoncap.c b/security/commoncap.c +index 6dbae46..9f4f29a 100644 +--- a/security/commoncap.c ++++ b/security/commoncap.c +@@ -979,9 +979,11 @@ int cap_mmap_addr(unsigned long addr) + } + return ret; + } ++EXPORT_SYMBOL(cap_mmap_addr); + + int cap_mmap_file(struct file *file, unsigned long reqprot, + unsigned long prot, unsigned long flags) + { + return 0; + } ++EXPORT_SYMBOL(cap_mmap_file); +diff --git a/security/device_cgroup.c b/security/device_cgroup.c +index b08d20c..a90420b 100644 +--- a/security/device_cgroup.c ++++ b/security/device_cgroup.c +@@ -7,6 +7,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -617,6 +618,7 @@ int __devcgroup_inode_permission(struct inode *inode, int mask) + return __devcgroup_check_permission(type, imajor(inode), iminor(inode), + access); + } ++EXPORT_SYMBOL(__devcgroup_inode_permission); + + int devcgroup_inode_mknod(int mode, dev_t dev) + { +diff --git a/security/security.c b/security/security.c +index 8dcd4ae..6efe561 100644 +--- a/security/security.c ++++ b/security/security.c +@@ -396,6 +396,7 @@ int security_path_rmdir(struct path *dir, struct dentry *dentry) + return 0; + return security_ops->path_rmdir(dir, dentry); + } ++EXPORT_SYMBOL(security_path_rmdir); + + int security_path_unlink(struct path *dir, struct dentry *dentry) + { +@@ -412,6 +413,7 @@ int security_path_symlink(struct path *dir, struct dentry *dentry, + return 0; + return security_ops->path_symlink(dir, dentry, old_name); + } ++EXPORT_SYMBOL(security_path_symlink); + + int security_path_link(struct dentry *old_dentry, struct path *new_dir, + struct dentry *new_dentry) +@@ -420,6 +422,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); + } ++EXPORT_SYMBOL(security_path_link); + + int security_path_rename(struct path *old_dir, struct dentry *old_dentry, + struct path *new_dir, struct dentry *new_dentry) +@@ -438,6 +441,7 @@ int security_path_truncate(struct path *path) + return 0; + return security_ops->path_truncate(path); + } ++EXPORT_SYMBOL(security_path_truncate); + + int security_path_chmod(struct path *path, umode_t mode) + { +@@ -445,6 +449,7 @@ int security_path_chmod(struct path *path, umode_t mode) + return 0; + return security_ops->path_chmod(path, mode); + } ++EXPORT_SYMBOL(security_path_chmod); + + int security_path_chown(struct path *path, kuid_t uid, kgid_t gid) + { +@@ -452,6 +457,7 @@ int security_path_chown(struct path *path, kuid_t uid, kgid_t gid) + return 0; + return security_ops->path_chown(path, uid, gid); + } ++EXPORT_SYMBOL(security_path_chown); + + int security_path_chroot(struct path *path) + { +@@ -528,6 +534,7 @@ int security_inode_readlink(struct dentry *dentry) + return 0; + return security_ops->inode_readlink(dentry); + } ++EXPORT_SYMBOL(security_inode_readlink); + + int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd) + { +@@ -542,6 +549,7 @@ int security_inode_permission(struct inode *inode, int mask) + return 0; + return security_ops->inode_permission(inode, mask); + } ++EXPORT_SYMBOL(security_inode_permission); + + int security_inode_setattr(struct dentry *dentry, struct iattr *attr) + { +@@ -663,6 +671,7 @@ int security_file_permission(struct file *file, int mask) + + return fsnotify_perm(file, mask); + } ++EXPORT_SYMBOL(security_file_permission); + + int security_file_alloc(struct file *file) + { +@@ -723,6 +732,7 @@ int security_mmap_file(struct file *file, unsigned long prot, + return ret; + return ima_file_mmap(file, prot); + } ++EXPORT_SYMBOL(security_mmap_file); + + int security_mmap_addr(unsigned long addr) + { diff --git a/linux/aufs3.patch b/linux/aufs3.patch index 56f74a722..8b299af45 100644 --- a/linux/aufs3.patch +++ b/linux/aufs3.patch @@ -1,5 +1,5 @@ --- /dev/null -+++ linux-3.6/Documentation/ABI/testing/debugfs-aufs 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/Documentation/ABI/testing/debugfs-aufs 2013-01-14 14:19:23.889022362 -0500 @@ -0,0 +1,37 @@ +What: /debug/aufs/si_/ +Date: March 2009 @@ -39,7 +39,7 @@ + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. --- /dev/null -+++ linux-3.6/Documentation/ABI/testing/sysfs-aufs 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/Documentation/ABI/testing/sysfs-aufs 2013-01-14 14:19:23.889022362 -0500 @@ -0,0 +1,24 @@ +What: /sys/fs/aufs/si_/ +Date: March 2009 @@ -66,10 +66,10 @@ + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. --- /dev/null -+++ linux-3.6/Documentation/filesystems/aufs/design/01intro.txt 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/Documentation/filesystems/aufs/design/01intro.txt 2013-01-14 14:19:23.889022362 -0500 @@ -0,0 +1,162 @@ + -+# Copyright (C) 2005-2011 Junjiro R. Okajima ++# Copyright (C) 2005-2013 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by @@ -231,10 +231,10 @@ +helper, instead of doing in kernel space. Actually I am still thinking +about it. But currently I have implemented it in kernel space. --- /dev/null -+++ linux-3.6/Documentation/filesystems/aufs/design/02struct.txt 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/Documentation/filesystems/aufs/design/02struct.txt 2013-01-14 14:19:23.889022362 -0500 @@ -0,0 +1,226 @@ + -+# Copyright (C) 2005-2011 Junjiro R. Okajima ++# Copyright (C) 2005-2013 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by @@ -460,10 +460,10 @@ +When the trigger systemcall does not update the timestamps of the parent +dir, aufs reverts it after copy-up. --- /dev/null -+++ linux-3.6/Documentation/filesystems/aufs/design/03lookup.txt 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/Documentation/filesystems/aufs/design/03lookup.txt 2013-01-14 14:19:23.892355788 -0500 @@ -0,0 +1,106 @@ + -+# Copyright (C) 2005-2011 Junjiro R. Okajima ++# Copyright (C) 2005-2013 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by @@ -569,10 +569,10 @@ + aufs performance when system surely hide the aufs branches from user, + by over-mounting something (or another method). --- /dev/null -+++ linux-3.6/Documentation/filesystems/aufs/design/04branch.txt 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/Documentation/filesystems/aufs/design/04branch.txt 2013-01-14 14:19:23.892355788 -0500 @@ -0,0 +1,76 @@ + -+# Copyright (C) 2005-2011 Junjiro R. Okajima ++# Copyright (C) 2005-2013 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by @@ -648,10 +648,10 @@ + - a regular file on the branch is opened for write and there is no + same named entry on the upper branch. --- /dev/null -+++ linux-3.6/Documentation/filesystems/aufs/design/05wbr_policy.txt 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/Documentation/filesystems/aufs/design/05wbr_policy.txt 2013-01-14 14:19:23.892355788 -0500 @@ -0,0 +1,65 @@ + -+# Copyright (C) 2005-2011 Junjiro R. Okajima ++# Copyright (C) 2005-2013 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by @@ -716,10 +716,10 @@ + one. If the selected branch is readonly, then aufs follows the + copyup policy. --- /dev/null -+++ linux-3.6/Documentation/filesystems/aufs/design/06mmap.txt 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/Documentation/filesystems/aufs/design/06mmap.txt 2013-01-14 14:19:23.892355788 -0500 @@ -0,0 +1,47 @@ + -+# Copyright (C) 2005-2011 Junjiro R. Okajima ++# Copyright (C) 2005-2013 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by @@ -766,10 +766,10 @@ +approach, aufs met a hard problem and I could not solve it without +switching the approach. --- /dev/null -+++ linux-3.6/Documentation/filesystems/aufs/design/07export.txt 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/Documentation/filesystems/aufs/design/07export.txt 2013-01-14 14:19:23.892355788 -0500 @@ -0,0 +1,59 @@ + -+# Copyright (C) 2005-2011 Junjiro R. Okajima ++# Copyright (C) 2005-2013 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by @@ -828,10 +828,10 @@ +- readdir(): call lockdep_on/off() because filldir in NFSD calls + lookup_one_len(), vfs_getattr(), encode_fh() and others. --- /dev/null -+++ linux-3.6/Documentation/filesystems/aufs/design/08shwh.txt 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/Documentation/filesystems/aufs/design/08shwh.txt 2013-01-14 14:19:23.892355788 -0500 @@ -0,0 +1,53 @@ + -+# Copyright (C) 2005-2011 Junjiro R. Okajima ++# Copyright (C) 2005-2013 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by @@ -884,10 +884,10 @@ +This new squashfs archive can be stored on the boot device and the +initramfs will use it to replace the old one at the next boot. --- /dev/null -+++ linux-3.6/Documentation/filesystems/aufs/design/10dynop.txt 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/Documentation/filesystems/aufs/design/10dynop.txt 2013-01-14 14:19:23.892355788 -0500 @@ -0,0 +1,47 @@ + -+# Copyright (C) 2010-2011 Junjiro R. Okajima ++# Copyright (C) 2010-2013 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by @@ -934,10 +934,10 @@ +Currently this approach is applied to file_operations and +vm_operations_struct for regular files only. --- /dev/null -+++ linux-3.6/Documentation/filesystems/aufs/design/99plan.txt 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/Documentation/filesystems/aufs/design/99plan.txt 2013-01-14 14:19:23.892355788 -0500 @@ -0,0 +1,96 @@ + -+# Copyright (C) 2005-2011 Junjiro R. Okajima ++# Copyright (C) 2005-2013 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by @@ -1033,8 +1033,8 @@ +/new. +Otherwise from /new. --- /dev/null -+++ linux-3.6/Documentation/filesystems/aufs/README 2012-11-13 16:10:20.239327465 -0500 -@@ -0,0 +1,332 @@ ++++ linux-3.7/Documentation/filesystems/aufs/README 2013-01-14 14:19:23.889022362 -0500 +@@ -0,0 +1,333 @@ + +Aufs3 -- advanced multi layered unification filesystem version 3.x +http://aufs.sf.net @@ -1210,8 +1210,8 @@ + path on the branch fs. +- apply ./aufs3-standalone.patch too, if you have a plan to set + CONFIG_AUFS_FS=m. otherwise you don't need ./aufs3-standalone.patch. -+- copy ./{Documentation,fs,include/linux/aufs_type.h} files to your -+ kernel source tree. Never copy $PWD/include/linux/Kbuild. ++- copy ./{Documentation,fs,include/uapi/linux/aufs_type.h} files to your ++ kernel source tree. Never copy $PWD/include/uapi/linux/Kbuild. +- enable CONFIG_EXPERIMENTAL and CONFIG_AUFS_FS, you can select either + =m or =y. +- and build your kernel as usual. @@ -1348,7 +1348,8 @@ +Pavel Pronskiy made a donation (2011/2). +Iridium and Inmarsat satellite phone retailer (www.mailasail.com), Nippy + Networks (Ed Wildgoose) made a donation for hardware (2011/3). -+Max Lekomcev (DOM-TV project) made a donation (2011/7, 12 and 2012/3, 6). ++Max Lekomcev (DOM-TV project) made a donation (2011/7, 12, 2012/3, 6 and ++11). +Sam Liddicott made a donation (2011/9). + +Thank you very much. @@ -1368,10 +1369,10 @@ +# mode: text; +# End: ; --- /dev/null -+++ linux-3.6/fs/aufs/aufs.h 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/fs/aufs/aufs.h 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,60 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -1431,10 +1432,10 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/branch.c 2012-11-13 16:10:20.239327465 -0500 -@@ -0,0 +1,1169 @@ ++++ linux-3.7/fs/aufs/branch.c 2013-01-14 14:19:23.895689215 -0500 +@@ -0,0 +1,1172 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -1491,7 +1492,10 @@ + else + break; + ++ /* recursive lock, s_umount of branch's */ ++ lockdep_off(); + mntput(br->br_mnt); ++ lockdep_on(); + kfree(wbr); + kfree(br); +} @@ -2067,7 +2071,7 @@ + continue; + + /* AuDbgInode(i); */ -+ if (au_iigen(i) == sigen) ++ if (au_iigen(i, NULL) == sigen) + ii_read_lock_child(i); + else { + ii_write_lock_child(i); @@ -2603,10 +2607,10 @@ + return err; +} --- /dev/null -+++ linux-3.6/fs/aufs/branch.h 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/fs/aufs/branch.h 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,230 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -2836,7 +2840,7 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_BRANCH_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/conf.mk 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/fs/aufs/conf.mk 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,38 @@ + +AuConfStr = CONFIG_AUFS_FS=${CONFIG_AUFS_FS} @@ -2877,10 +2881,10 @@ + +-include ${srctree}/${src}/conf_priv.mk --- /dev/null -+++ linux-3.6/fs/aufs/cpup.c 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/fs/aufs/cpup.c 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,1085 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -3303,7 +3307,7 @@ + goto out; + + err = -ENOMEM; -+ sym.k = __getname_gfp(GFP_NOFS); ++ sym.k = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!sym.k)) + goto out; + @@ -3318,7 +3322,7 @@ + sym.k[symlen] = 0; + err = vfsub_symlink(h_dir, h_path, sym.k); + } -+ __putname(sym.k); ++ free_page((unsigned long)sym.k); + +out: + return err; @@ -3965,10 +3969,10 @@ + return err; +} --- /dev/null -+++ linux-3.6/fs/aufs/cpup.h 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/fs/aufs/cpup.h 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,81 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -4049,10 +4053,10 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_CPUP_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/dbgaufs.c 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/fs/aufs/dbgaufs.c 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,334 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -4386,10 +4390,10 @@ + return err; +} --- /dev/null -+++ linux-3.6/fs/aufs/dbgaufs.h 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/fs/aufs/dbgaufs.h 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,49 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -4438,10 +4442,10 @@ +#endif /* __KERNEL__ */ +#endif /* __DBGAUFS_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/dcsub.c 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/fs/aufs/dcsub.c 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,243 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -4684,10 +4688,10 @@ + return path_is_under(path + 0, path + 1); +} --- /dev/null -+++ linux-3.6/fs/aufs/dcsub.h 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/fs/aufs/dcsub.h 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,94 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -4781,10 +4785,10 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_DCSUB_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/debug.c 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/fs/aufs/debug.c 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,490 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -4909,7 +4913,7 @@ + if (!iinfo) + return; + dpri("i-1: bstart %d, bend %d, gen %d\n", -+ iinfo->ii_bstart, iinfo->ii_bend, au_iigen(inode)); ++ iinfo->ii_bstart, iinfo->ii_bend, au_iigen(inode, NULL)); + if (iinfo->ii_bstart < 0) + return; + hn = 0; @@ -5274,10 +5278,10 @@ + return 0; +} --- /dev/null -+++ linux-3.6/fs/aufs/debug.h 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/fs/aufs/debug.h 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,242 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -5519,10 +5523,10 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_DEBUG_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/dentry.c 2012-11-13 16:10:20.239327465 -0500 -@@ -0,0 +1,1063 @@ ++++ linux-3.7/fs/aufs/dentry.c 2013-01-14 14:19:23.895689215 -0500 +@@ -0,0 +1,1060 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -5556,7 +5560,6 @@ +struct au_do_lookup_args { + unsigned int flags; + mode_t type; -+ unsigned int nd_flags; +}; + +/* @@ -5647,8 +5650,7 @@ + * otherwise an error. + * can be called at unlinking with @type is zero. + */ -+int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t bstart, mode_t type, -+ unsigned int flags) ++int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t bstart, mode_t type) +{ + int npositive, err; + aufs_bindex_t bindex, btail, bdiropq; @@ -5656,8 +5658,7 @@ + struct qstr whname; + struct au_do_lookup_args args = { + .flags = 0, -+ .type = type, -+ .nd_flags = flags ++ .type = type + }; + const struct qstr *name = &dentry->d_name; + struct dentry *parent; @@ -6255,7 +6256,7 @@ + * if current working dir is removed, it returns an error. + * but the dentry is legal. + */ -+ err = au_lkup_dentry(dentry, /*bstart*/0, /*type*/0, /*flags*/0); ++ err = au_lkup_dentry(dentry, /*bstart*/0, /*type*/0); + AuDbgDentry(dentry); + au_di_swap(tmp, dinfo); + if (err == -ENOENT) @@ -6585,10 +6586,10 @@ + .d_release = aufs_d_release +}; --- /dev/null -+++ linux-3.6/fs/aufs/dentry.h 2012-11-13 16:10:20.239327465 -0500 -@@ -0,0 +1,235 @@ ++++ linux-3.7/fs/aufs/dentry.h 2013-01-14 14:19:23.895689215 -0500 +@@ -0,0 +1,234 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -6640,8 +6641,7 @@ +int au_h_verify(struct dentry *h_dentry, unsigned int udba, struct inode *h_dir, + struct dentry *h_parent, struct au_branch *br); + -+int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t bstart, mode_t type, -+ unsigned int flags); ++int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t bstart, mode_t type); +int au_lkup_neg(struct dentry *dentry, aufs_bindex_t bindex); +int au_refresh_dentry(struct dentry *dentry, struct dentry *parent); +int au_reval_dpath(struct dentry *dentry, unsigned int sigen); @@ -6823,10 +6823,10 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_DENTRY_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/dinfo.c 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/fs/aufs/dinfo.c 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,543 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -7369,10 +7369,10 @@ + return -1; +} --- /dev/null -+++ linux-3.6/fs/aufs/dir.c 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/fs/aufs/dir.c 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,633 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -8005,10 +8005,10 @@ + .fsync = aufs_fsync_dir +}; --- /dev/null -+++ linux-3.6/fs/aufs/dir.h 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/fs/aufs/dir.h 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,137 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -8145,10 +8145,10 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_DIR_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/dynop.c 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/fs/aufs/dynop.c 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,379 @@ +/* -+ * Copyright (C) 2010-2012 Junjiro R. Okajima ++ * Copyright (C) 2010-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -8527,10 +8527,10 @@ + WARN_ON(!list_empty(&dynop[i].head)); +} --- /dev/null -+++ linux-3.6/fs/aufs/dynop.h 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/fs/aufs/dynop.h 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,76 @@ +/* -+ * Copyright (C) 2010-2012 Junjiro R. Okajima ++ * Copyright (C) 2010-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -8606,10 +8606,10 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_DYNOP_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/export.c 2012-11-13 16:10:20.242660798 -0500 -@@ -0,0 +1,811 @@ ++++ linux-3.7/fs/aufs/export.c 2013-01-14 14:19:23.895689215 -0500 +@@ -0,0 +1,812 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -8832,7 +8832,7 @@ + sigen = au_sigen(sb); + if (unlikely(is_bad_inode(inode) + || IS_DEADDIR(inode) -+ || sigen != au_iigen(inode))) ++ || sigen != au_iigen(inode, NULL))) + goto out_iput; + + dentry = NULL; @@ -8977,7 +8977,7 @@ + goto out; + + dentry = ERR_PTR(-ENOMEM); -+ arg.name = __getname_gfp(GFP_NOFS); ++ arg.name = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!arg.name)) + goto out_file; + arg.ino = ino; @@ -8990,7 +8990,8 @@ + dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_name; -+ dentry = ERR_PTR(-ENOENT); ++ /* instead of ENOENT */ ++ dentry = ERR_PTR(-ESTALE); + if (!arg.found) + goto out_name; + @@ -9009,7 +9010,7 @@ + } + +out_name: -+ __putname(arg.name); ++ free_page((unsigned long)arg.name); +out_file: + fput(file); +out: @@ -9420,10 +9421,10 @@ + atomic_set(&sbinfo->si_xigen_next, u); +} --- /dev/null -+++ linux-3.6/fs/aufs/file.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/file.c 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,683 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -10106,10 +10107,10 @@ +#endif /* CONFIG_AUFS_DEBUG */ +}; --- /dev/null -+++ linux-3.6/fs/aufs/file.h 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/file.h 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,298 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -10407,10 +10408,10 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_FILE_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/finfo.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/finfo.c 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,156 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -10566,10 +10567,10 @@ + return err; +} --- /dev/null -+++ linux-3.6/fs/aufs/f_op.c 2012-11-13 16:10:20.242660798 -0500 -@@ -0,0 +1,724 @@ ++++ linux-3.7/fs/aufs/f_op.c 2013-01-14 14:19:23.895689215 -0500 +@@ -0,0 +1,723 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -11043,7 +11044,6 @@ +{ + return AuConv_VM_MAP(flags, GROWSDOWN) + | AuConv_VM_MAP(flags, DENYWRITE) -+ | AuConv_VM_MAP(flags, EXECUTABLE) + | AuConv_VM_MAP(flags, LOCKED); +} + @@ -11293,10 +11293,10 @@ +#endif +}; --- /dev/null -+++ linux-3.6/fs/aufs/f_op_sp.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/f_op_sp.c 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,295 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -11591,10 +11591,10 @@ + return ret; +} --- /dev/null -+++ linux-3.6/fs/aufs/fstype.h 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/fstype.h 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,481 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -12075,10 +12075,10 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_FSTYPE_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/hfsnotify.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/hfsnotify.c 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,257 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -12335,10 +12335,10 @@ + .init_br = au_hfsn_init_br +}; --- /dev/null -+++ linux-3.6/fs/aufs/hfsplus.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/hfsplus.c 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,57 @@ +/* -+ * Copyright (C) 2010-2012 Junjiro R. Okajima ++ * Copyright (C) 2010-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -12395,10 +12395,10 @@ + } +} --- /dev/null -+++ linux-3.6/fs/aufs/hnotify.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/hnotify.c 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,713 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -13111,10 +13111,10 @@ + au_hn_destroy_cache(); +} --- /dev/null -+++ linux-3.6/fs/aufs/iinfo.c 2012-11-13 16:10:20.242660798 -0500 -@@ -0,0 +1,264 @@ ++++ linux-3.7/fs/aufs/iinfo.c 2013-01-14 14:19:23.899022641 -0500 +@@ -0,0 +1,276 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -13225,10 +13225,22 @@ + hinode->hi_whdentry = h_wh; +} + -+void au_update_iigen(struct inode *inode) ++void au_update_iigen(struct inode *inode, int half) +{ -+ atomic_set(&au_ii(inode)->ii_generation, au_sigen(inode->i_sb)); -+ /* smp_mb(); */ /* atomic_set */ ++ struct au_iinfo *iinfo; ++ struct au_iigen *iigen; ++ unsigned int sigen; ++ ++ sigen = au_sigen(inode->i_sb); ++ iinfo = au_ii(inode); ++ iigen = &iinfo->ii_generation; ++ spin_lock(&iinfo->ii_genspin); ++ iigen->ig_generation = sigen; ++ if (half) ++ au_ig_fset(iigen->ig_flags, HALF_REFRESHED); ++ else ++ au_ig_fclr(iigen->ig_flags, HALF_REFRESHED); ++ spin_unlock(&iinfo->ii_genspin); +} + +/* it may be called at remount time, too */ @@ -13279,6 +13291,7 @@ + struct au_iinfo *iinfo = &c->iinfo; + static struct lock_class_key aufs_ii; + ++ spin_lock_init(&iinfo->ii_genspin); + au_rw_init(&iinfo->ii_rwsem); + au_rw_class(&iinfo->ii_rwsem, &aufs_ii); + inode_init_once(&c->vfs_inode); @@ -13301,8 +13314,7 @@ + for (i = 0; i < nbr; i++) + iinfo->ii_hinode[i].hi_id = -1; + -+ atomic_set(&iinfo->ii_generation, au_sigen(sb)); -+ /* smp_mb(); */ /* atomic_set */ ++ iinfo->ii_generation.ig_generation = au_sigen(sb); + iinfo->ii_bstart = -1; + iinfo->ii_bend = -1; + iinfo->ii_vdir = NULL; @@ -13378,10 +13390,10 @@ + AuRwDestroy(&iinfo->ii_rwsem); +} --- /dev/null -+++ linux-3.6/fs/aufs/inode.c 2012-11-13 16:10:20.242660798 -0500 -@@ -0,0 +1,478 @@ ++++ linux-3.7/fs/aufs/inode.c 2013-01-14 14:19:23.899022641 -0500 +@@ -0,0 +1,488 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -13416,7 +13428,7 @@ +static void au_refresh_hinode_attr(struct inode *inode, int do_version) +{ + au_cpup_attr_all(inode, /*force*/0); -+ au_update_iigen(inode); ++ au_update_iigen(inode, /*half*/1); + if (do_version) + inode->i_version++; +} @@ -13635,6 +13647,8 @@ +static int reval_inode(struct inode *inode, struct dentry *dentry) +{ + int err; ++ unsigned int gen; ++ struct au_iigen iigen; + aufs_bindex_t bindex, bend; + struct inode *h_inode, *h_dinode; + @@ -13653,12 +13667,20 @@ + bend = au_ibend(inode); + for (bindex = au_ibstart(inode); bindex <= bend; bindex++) { + h_inode = au_h_iptr(inode, bindex); -+ if (h_inode && h_inode == h_dinode) { -+ err = 0; -+ if (au_iigen_test(inode, au_digen(dentry))) -+ err = au_refresh_hinode(inode, dentry); ++ if (!h_inode || h_inode != h_dinode) ++ continue; ++ ++ err = 0; ++ gen = au_iigen(inode, &iigen); ++ if (gen == au_digen(dentry) ++ && !au_ig_ftest(iigen.ig_flags, HALF_REFRESHED)) + break; -+ } ++ ++ /* fully refresh inode using dentry */ ++ err = au_refresh_hinode(inode, dentry); ++ if (!err) ++ au_update_iigen(inode, /*half*/0); ++ break; + } + + if (unlikely(err)) @@ -13859,10 +13881,10 @@ + return au_test_h_perm(h_inode, mask); +} --- /dev/null -+++ linux-3.6/fs/aufs/inode.h 2012-11-13 16:10:20.242660798 -0500 -@@ -0,0 +1,560 @@ ++++ linux-3.7/fs/aufs/inode.h 2013-01-14 14:19:23.899022641 -0500 +@@ -0,0 +1,588 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -13914,9 +13936,22 @@ + struct dentry *hi_whdentry; +}; + ++/* ig_flags */ ++#define AuIG_HALF_REFRESHED 1 ++#define au_ig_ftest(flags, name) ((flags) & AuIG_##name) ++#define au_ig_fset(flags, name) \ ++ do { (flags) |= AuIG_##name; } while (0) ++#define au_ig_fclr(flags, name) \ ++ do { (flags) &= ~AuIG_##name; } while (0) ++ ++struct au_iigen { ++ __u32 ig_generation, ig_flags; ++}; ++ +struct au_vdir; +struct au_iinfo { -+ atomic_t ii_generation; ++ spinlock_t ii_genspin; ++ struct au_iigen ii_generation; + struct super_block *ii_hsb1; /* no get/put */ + + struct au_rwsem ii_rwsem; @@ -14065,7 +14100,7 @@ +void au_set_h_iptr(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode, unsigned int flags); + -+void au_update_iigen(struct inode *inode); ++void au_update_iigen(struct inode *inode, int half); +void au_update_ibrange(struct inode *inode, int do_put_zero); + +void au_icntnr_init_once(void *_c); @@ -14173,9 +14208,19 @@ +#endif +} + -+static inline unsigned int au_iigen(struct inode *inode) ++static inline unsigned int au_iigen(struct inode *inode, struct au_iigen *iigen) +{ -+ return atomic_read(&au_ii(inode)->ii_generation); ++ unsigned int gen; ++ struct au_iinfo *iinfo; ++ ++ iinfo = au_ii(inode); ++ spin_lock(&iinfo->ii_genspin); ++ if (iigen) ++ *iigen = iinfo->ii_generation; ++ gen = iinfo->ii_generation.ig_generation; ++ spin_unlock(&iinfo->ii_genspin); ++ ++ return gen; +} + +/* tiny test for inode number */ @@ -14192,7 +14237,12 @@ + +static inline void au_iigen_dec(struct inode *inode) +{ -+ atomic_dec(&au_ii(inode)->ii_generation); ++ struct au_iinfo *iinfo; ++ ++ iinfo = au_ii(inode); ++ spin_lock(&iinfo->ii_genspin); ++ iinfo->ii_generation.ig_generation--; ++ spin_unlock(&iinfo->ii_genspin); +} + +static inline int au_iigen_test(struct inode *inode, unsigned int sigen) @@ -14200,7 +14250,7 @@ + int err; + + err = 0; -+ if (unlikely(inode && au_iigen(inode) != sigen)) ++ if (unlikely(inode && au_iigen(inode, NULL) != sigen)) + err = -EIO; + + return err; @@ -14422,10 +14472,10 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_INODE_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/ioctl.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/ioctl.c 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,196 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -14621,10 +14671,10 @@ +#endif +#endif --- /dev/null -+++ linux-3.6/fs/aufs/i_op_add.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/i_op_add.c 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,713 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -15337,10 +15387,10 @@ + return err; +} --- /dev/null -+++ linux-3.6/fs/aufs/i_op.c 2012-11-13 16:10:20.242660798 -0500 -@@ -0,0 +1,1009 @@ ++++ linux-3.7/fs/aufs/i_op.c 2013-01-14 14:19:23.895689215 -0500 +@@ -0,0 +1,1026 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -15504,15 +15554,21 @@ + + IMustLock(dir); + ++ /* todo: support rcu-walk? */ ++ ret = ERR_PTR(-ECHILD); ++ if (flags & LOOKUP_RCU) ++ goto out; ++ ++ ret = ERR_PTR(-ENAMETOOLONG); ++ if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) ++ goto out; ++ + sb = dir->i_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + ret = ERR_PTR(err); + if (unlikely(err)) + goto out; + -+ ret = ERR_PTR(-ENAMETOOLONG); -+ if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) -+ goto out_si; + err = au_di_init(dentry); + ret = ERR_PTR(err); + if (unlikely(err)) @@ -15527,7 +15583,7 @@ + err = au_digen_test(parent, au_sigen(sb)); + if (!err) { + npositive = au_lkup_dentry(dentry, au_dbstart(parent), -+ /*type*/0, flags); ++ /*type*/0); + err = npositive; + } + di_read_unlock(parent, AuLock_IR); @@ -15545,6 +15601,13 @@ + } + + ret = d_splice_alias(inode, dentry); ++#if 0 ++ if (unlikely(d_need_lookup(dentry))) { ++ spin_lock(&dentry->d_lock); ++ dentry->d_flags &= ~DCACHE_NEED_LOOKUP; ++ spin_unlock(&dentry->d_lock); ++ } else ++#endif + if (unlikely(IS_ERR(ret) && inode)) { + ii_write_unlock(inode); + iput(inode); @@ -16248,7 +16311,7 @@ + } buf; + + err = -ENOMEM; -+ buf.k = __getname_gfp(GFP_NOFS); ++ buf.k = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!buf.k)) + goto out; + @@ -16273,7 +16336,7 @@ + } + +out_name: -+ __putname(buf.k); ++ free_page((unsigned long)buf.k); +out: + AuTraceErr(err); + return ERR_PTR(err); @@ -16282,7 +16345,11 @@ +static void aufs_put_link(struct dentry *dentry __maybe_unused, + struct nameidata *nd, void *cookie __maybe_unused) +{ -+ __putname(nd_get_link(nd)); ++ char *p; ++ ++ p = nd_get_link(nd); ++ if (!IS_ERR_OR_NULL(p)) ++ free_page((unsigned long)p); +} + +/* ---------------------------------------------------------------------- */ @@ -16349,10 +16416,10 @@ + .update_time = aufs_update_time +}; --- /dev/null -+++ linux-3.6/fs/aufs/i_op_del.c 2012-11-13 16:10:20.242660798 -0500 -@@ -0,0 +1,478 @@ ++++ linux-3.7/fs/aufs/i_op_del.c 2013-01-14 14:19:23.899022641 -0500 +@@ -0,0 +1,477 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -16421,8 +16488,7 @@ + au_di_cp(tmp, dinfo); + au_di_swap(tmp, dinfo); + /* returns the number of positive dentries */ -+ need_wh = au_lkup_dentry(dentry, bstart + 1, /*type*/0, -+ /*flags*/0); ++ need_wh = au_lkup_dentry(dentry, bstart + 1, /*type*/0); + au_di_swap(tmp, dinfo); + au_rw_write_unlock(&tmp->di_rwsem); + au_di_free(tmp); @@ -16830,10 +16896,10 @@ + return err; +} --- /dev/null -+++ linux-3.6/fs/aufs/i_op_ren.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/i_op_ren.c 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,1026 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -17859,7 +17925,7 @@ + return err; +} --- /dev/null -+++ linux-3.6/fs/aufs/Kconfig 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/fs/aufs/Kconfig 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,203 @@ +config AUFS_FS + tristate "Aufs (Advanced multi layered unification filesystem) support" @@ -18065,10 +18131,10 @@ + When aufs supports Magic SysRq, enabled automatically. +endif --- /dev/null -+++ linux-3.6/fs/aufs/loop.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/loop.c 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,133 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -18201,10 +18267,10 @@ + kfree(au_warn_loopback_array); +} --- /dev/null -+++ linux-3.6/fs/aufs/loop.h 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/loop.h 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,50 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -18254,7 +18320,7 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_LOOP_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/magic.mk 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/magic.mk 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,54 @@ + +# defined in ${srctree}/fs/fuse/inode.c @@ -18311,7 +18377,7 @@ +ccflags-y += -DHFSPLUS_SUPER_MAGIC=0x482b +endif --- /dev/null -+++ linux-3.6/fs/aufs/Makefile 2012-11-13 16:10:20.239327465 -0500 ++++ linux-3.7/fs/aufs/Makefile 2013-01-14 14:19:23.895689215 -0500 @@ -0,0 +1,42 @@ + +include ${src}/magic.mk @@ -18356,10 +18422,10 @@ +aufs-$(CONFIG_AUFS_DEBUG) += debug.o +aufs-$(CONFIG_AUFS_MAGIC_SYSRQ) += sysrq.o --- /dev/null -+++ linux-3.6/fs/aufs/module.c 2012-11-13 16:10:20.242660798 -0500 -@@ -0,0 +1,196 @@ ++++ linux-3.7/fs/aufs/module.c 2013-01-14 14:19:23.899022641 -0500 +@@ -0,0 +1,202 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -18425,6 +18491,12 @@ +{ + int i; + ++ /* ++ * Make sure all delayed rcu free inodes are flushed before we ++ * destroy cache. ++ */ ++ rcu_barrier(); ++ + /* excluding AuCache_HNOTIFY */ + BUILD_BUG_ON(AuCache_HNOTIFY + 1 != AuCache_Last); + for (i = 0; i < AuCache_HNOTIFY; i++) @@ -18555,10 +18627,10 @@ +module_init(aufs_init); +module_exit(aufs_exit); --- /dev/null -+++ linux-3.6/fs/aufs/module.h 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/module.h 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,105 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -18663,10 +18735,10 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_MODULE_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/opts.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/opts.c 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,1677 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -20343,10 +20415,10 @@ + return au_mntflags(sb) & AuOptMask_UDBA; +} --- /dev/null -+++ linux-3.6/fs/aufs/opts.h 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/opts.h 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,209 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -20555,10 +20627,10 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_OPTS_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/plink.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/plink.c 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,511 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -21069,10 +21141,10 @@ + } +} --- /dev/null -+++ linux-3.6/fs/aufs/poll.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/poll.c 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,56 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -21128,10 +21200,10 @@ + return mask; +} --- /dev/null -+++ linux-3.6/fs/aufs/procfs.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/procfs.c 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,170 @@ +/* -+ * Copyright (C) 2010-2012 Junjiro R. Okajima ++ * Copyright (C) 2010-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -21301,10 +21373,10 @@ + return err; +} --- /dev/null -+++ linux-3.6/fs/aufs/rdu.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/rdu.c 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,384 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -21688,10 +21760,10 @@ +} +#endif --- /dev/null -+++ linux-3.6/fs/aufs/rwsem.h 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/rwsem.h 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,188 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -21879,10 +21951,10 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_RWSEM_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/sbinfo.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/sbinfo.c 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,343 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -22040,7 +22112,7 @@ + + gen = ++au_sbi(sb)->si_generation; + au_update_digen(sb->s_root); -+ au_update_iigen(sb->s_root->d_inode); ++ au_update_iigen(sb->s_root->d_inode, /*half*/0); + sb->s_root->d_inode->i_version++; + return gen; +} @@ -22225,10 +22297,10 @@ + spin_unlock(&sbinfo->au_si_pid.tree_lock); +} --- /dev/null -+++ linux-3.6/fs/aufs/spl.h 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/spl.h 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,62 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -22290,10 +22362,10 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_SPL_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/super.c 2012-11-13 16:10:20.242660798 -0500 -@@ -0,0 +1,962 @@ ++++ linux-3.7/fs/aufs/super.c 2013-01-14 14:19:23.899022641 -0500 +@@ -0,0 +1,993 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -22711,6 +22783,36 @@ + +/* ---------------------------------------------------------------------- */ + ++static int aufs_sync_fs(struct super_block *sb, int wait) ++{ ++ int err, e; ++ aufs_bindex_t bend, bindex; ++ struct au_branch *br; ++ struct super_block *h_sb; ++ ++ err = 0; ++ si_noflush_read_lock(sb); ++ bend = au_sbend(sb); ++ for (bindex = 0; bindex <= bend; bindex++) { ++ br = au_sbr(sb, bindex); ++ if (!au_br_writable(br->br_perm)) ++ continue; ++ ++ h_sb = au_sbr_sb(sb, bindex); ++ if (h_sb->s_op->sync_fs) { ++ e = h_sb->s_op->sync_fs(h_sb, wait); ++ if (unlikely(e && !err)) ++ err = e; ++ /* go on even if an error happens */ ++ } ++ } ++ si_read_unlock(sb); ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ +/* final actions when unmounting a file system */ +static void aufs_put_super(struct super_block *sb) +{ @@ -22921,7 +23023,7 @@ + sigen = au_sigen(sb); + for (ull = 0; ull < max; ull++) { + inode = array[ull]; -+ if (au_iigen(inode) != sigen) { ++ if (au_iigen(inode, NULL) != sigen) { + ii_write_lock_child(inode); + e = au_refresh_hinode_self(inode); + ii_write_unlock(inode); @@ -23074,6 +23176,7 @@ + .show_options = aufs_show_options, + .statfs = aufs_statfs, + .put_super = aufs_put_super, ++ .sync_fs = aufs_sync_fs, + .remount_fs = aufs_remount_fs +}; + @@ -23255,10 +23358,10 @@ + .owner = THIS_MODULE, +}; --- /dev/null -+++ linux-3.6/fs/aufs/super.h 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/super.h 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,546 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -23804,10 +23907,10 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_SUPER_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/sysaufs.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/sysaufs.c 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,105 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -23912,10 +24015,10 @@ + return err; +} --- /dev/null -+++ linux-3.6/fs/aufs/sysaufs.h 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/sysaufs.h 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,104 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -24019,10 +24122,10 @@ +#endif /* __KERNEL__ */ +#endif /* __SYSAUFS_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/sysfs.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/sysfs.c 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,257 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -24279,10 +24382,10 @@ + } +} --- /dev/null -+++ linux-3.6/fs/aufs/sysrq.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/sysrq.c 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,148 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -24430,10 +24533,10 @@ + pr_err("err %d (ignored)\n", err); +} --- /dev/null -+++ linux-3.6/fs/aufs/vdir.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/vdir.c 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,885 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -24956,7 +25059,7 @@ + AuDebugOn(!au_opt_test(au_mntflags(sb), SHWH)); + + err = -ENOMEM; -+ o = p = __getname_gfp(GFP_NOFS); ++ o = p = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!p)) + goto out; + @@ -24976,7 +25079,7 @@ + } + } + -+ __putname(o); ++ free_page((unsigned long)o); + +out: + AuTraceErr(err); @@ -25318,10 +25421,10 @@ + return 0; +} --- /dev/null -+++ linux-3.6/fs/aufs/vfsub.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/vfsub.c 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,777 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -26098,10 +26201,10 @@ + return err; +} --- /dev/null -+++ linux-3.6/fs/aufs/vfsub.h 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/vfsub.h 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,284 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -26385,10 +26488,10 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_VFSUB_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/wbr_policy.c 2012-11-13 16:10:20.242660798 -0500 ++++ linux-3.7/fs/aufs/wbr_policy.c 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,700 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -27088,10 +27191,10 @@ + } +}; --- /dev/null -+++ linux-3.6/fs/aufs/whout.c 2012-11-13 16:10:20.245994131 -0500 ++++ linux-3.7/fs/aufs/whout.c 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,1042 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -27907,7 +28010,7 @@ + struct au_vdir_destr *str; + + err = -ENOMEM; -+ p = __getname_gfp(GFP_NOFS); ++ p = (void *)__get_free_page(GFP_NOFS); + wh_name.name = p; + if (unlikely(!wh_name.name)) + goto out; @@ -27937,7 +28040,7 @@ + break; + } + } -+ __putname(wh_name.name); ++ free_page((unsigned long)wh_name.name); + +out: + return err; @@ -28133,10 +28236,10 @@ + } +} --- /dev/null -+++ linux-3.6/fs/aufs/whout.h 2012-11-13 16:10:20.245994131 -0500 ++++ linux-3.7/fs/aufs/whout.h 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,88 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -28224,10 +28327,10 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_WHOUT_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/wkq.c 2012-11-13 16:10:20.245994131 -0500 ++++ linux-3.7/fs/aufs/wkq.c 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,214 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -28441,10 +28544,10 @@ + return err; +} --- /dev/null -+++ linux-3.6/fs/aufs/wkq.h 2012-11-13 16:10:20.245994131 -0500 ++++ linux-3.7/fs/aufs/wkq.h 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,92 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -28536,10 +28639,10 @@ +#endif /* __KERNEL__ */ +#endif /* __AUFS_WKQ_H__ */ --- /dev/null -+++ linux-3.6/fs/aufs/xino.c 2012-11-13 16:10:20.245994131 -0500 -@@ -0,0 +1,1264 @@ ++++ linux-3.7/fs/aufs/xino.c 2013-01-14 14:19:23.899022641 -0500 +@@ -0,0 +1,1265 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -28856,7 +28959,8 @@ + + ii_read_unlock(dir); + if (unlikely(err)) -+ pr_warn("err b%d, (%d)\n", bindex, err); ++ pr_warn("err b%d, upper %llu, (%d)\n", ++ bindex, (unsigned long long)br->br_xino_upper, err); + atomic_dec(&br->br_xino_running); + atomic_dec(&br->br_count); + si_write_unlock(sb); @@ -29748,7 +29852,7 @@ + + if (bwr >= 0) { + file = ERR_PTR(-ENOMEM); -+ page = __getname_gfp(GFP_NOFS); ++ page = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!page)) + goto out; + path.mnt = br->br_mnt; @@ -29762,7 +29866,7 @@ + if (!IS_ERR(file)) + au_xino_brid_set(sb, br->br_id); + } -+ __putname(page); ++ free_page((unsigned long)page); + } else { + file = au_xino_create(sb, AUFS_XINO_DEFPATH, /*silent*/0); + if (IS_ERR(file)) @@ -29803,10 +29907,32 @@ + return err; +} --- /dev/null -+++ linux-3.6/include/linux/aufs_type.h 2012-11-13 16:10:20.245994131 -0500 ++++ linux-3.7/include/linux/aufs_type.h 2013-01-14 14:19:23.899022641 -0500 +@@ -0,0 +1,19 @@ ++/* ++ * Copyright (C) 2012-2013 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++#include +--- /dev/null ++++ linux-3.7/include/uapi/linux/aufs_type.h 2013-01-14 14:19:23.899022641 -0500 @@ -0,0 +1,233 @@ +/* -+ * Copyright (C) 2005-2012 Junjiro R. Okajima ++ * Copyright (C) 2005-2013 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -29846,7 +29972,7 @@ + +#include + -+#define AUFS_VERSION "3.6-20121112" ++#define AUFS_VERSION "3.7-20130114" + +/* todo? move this to linux-2.6.19/include/magic.h */ +#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's') diff --git a/linux/config.x86_64 b/linux/config.x86_64 index 3696a6c06..fc6e93918 100644 --- a/linux/config.x86_64 +++ b/linux/config.x86_64 @@ -1,9 +1,8 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86_64 3.6.6 Kernel Configuration +# Linux/x86_64 3.7.2-1 Kernel Configuration # CONFIG_64BIT=y -# CONFIG_X86_32 is not set CONFIG_X86_64=y CONFIG_X86=y CONFIG_INSTRUCTION_DECODER=y @@ -21,7 +20,6 @@ CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_GPIO=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y -# CONFIG_RWSEM_GENERIC_SPINLOCK is not set CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_ARCH_HAS_CPU_RELAX=y @@ -72,13 +70,7 @@ CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y CONFIG_POSIX_MQUEUE_SYSCTL=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_BSD_PROCESS_ACCT_V3=y CONFIG_FHANDLE=y -CONFIG_TASKSTATS=y -CONFIG_TASK_DELAY_ACCT=y -CONFIG_TASK_XACCT=y -CONFIG_TASK_IO_ACCOUNTING=y CONFIG_AUDIT=y CONFIG_AUDITSYSCALL=y CONFIG_AUDIT_WATCH=y @@ -113,11 +105,24 @@ CONFIG_TICK_ONESHOT=y CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_IRQ_TIME_ACCOUNTING is not set +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y + # # RCU Subsystem # CONFIG_TREE_PREEMPT_RCU=y CONFIG_PREEMPT_RCU=y +# CONFIG_RCU_USER_QS is not set CONFIG_RCU_FANOUT=64 CONFIG_RCU_FANOUT_LEAF=16 # CONFIG_RCU_FANOUT_EXACT is not set @@ -155,6 +160,7 @@ CONFIG_IPC_NS=y CONFIG_PID_NS=y CONFIG_NET_NS=y CONFIG_SCHED_AUTOGROUP=y +CONFIG_MM_OWNER=y # CONFIG_SYSFS_DEPRECATED is not set CONFIG_RELAY=y CONFIG_BLK_DEV_INITRD=y @@ -168,8 +174,10 @@ CONFIG_RD_LZO=y CONFIG_SYSCTL=y CONFIG_ANON_INODES=y # CONFIG_EXPERT is not set +CONFIG_HAVE_UID16=y CONFIG_UID16=y # CONFIG_SYSCTL_SYSCALL is not set +CONFIG_SYSCTL_EXCEPTION_TRACE=y CONFIG_KALLSYMS=y # CONFIG_KALLSYMS_ALL is not set CONFIG_HOTPLUG=y @@ -226,6 +234,8 @@ CONFIG_HAVE_HW_BREAKPOINT=y CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y CONFIG_HAVE_USER_RETURN_NOTIFIER=y CONFIG_HAVE_PERF_EVENTS_NMI=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y CONFIG_HAVE_ARCH_JUMP_LABEL=y CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y @@ -233,8 +243,14 @@ CONFIG_HAVE_CMPXCHG_LOCAL=y CONFIG_HAVE_CMPXCHG_DOUBLE=y CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y +CONFIG_GENERIC_KERNEL_THREAD=y +CONFIG_GENERIC_KERNEL_EXECVE=y CONFIG_HAVE_ARCH_SECCOMP_FILTER=y CONFIG_SECCOMP_FILTER=y +CONFIG_HAVE_RCU_USER_QS=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_MODULES_USE_ELF_RELA=y # # GCOV-based kernel profiling @@ -250,6 +266,7 @@ CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y CONFIG_MODVERSIONS=y # CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODULE_SIG is not set CONFIG_STOP_MACHINE=y CONFIG_BLOCK=y CONFIG_BLK_DEV_BSG=y @@ -294,35 +311,8 @@ CONFIG_DEFAULT_CFQ=y CONFIG_DEFAULT_IOSCHED="cfq" CONFIG_PREEMPT_NOTIFIERS=y CONFIG_PADATA=y -# CONFIG_INLINE_SPIN_TRYLOCK is not set -# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set -# CONFIG_INLINE_SPIN_LOCK is not set -# CONFIG_INLINE_SPIN_LOCK_BH is not set -# CONFIG_INLINE_SPIN_LOCK_IRQ is not set -# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set +CONFIG_ASN1=m CONFIG_UNINLINE_SPIN_UNLOCK=y -# CONFIG_INLINE_SPIN_UNLOCK_BH is not set -# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set -# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set -# CONFIG_INLINE_READ_TRYLOCK is not set -# CONFIG_INLINE_READ_LOCK is not set -# CONFIG_INLINE_READ_LOCK_BH is not set -# CONFIG_INLINE_READ_LOCK_IRQ is not set -# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set -# CONFIG_INLINE_READ_UNLOCK is not set -# CONFIG_INLINE_READ_UNLOCK_BH is not set -# CONFIG_INLINE_READ_UNLOCK_IRQ is not set -# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set -# CONFIG_INLINE_WRITE_TRYLOCK is not set -# CONFIG_INLINE_WRITE_LOCK is not set -# CONFIG_INLINE_WRITE_LOCK_BH is not set -# CONFIG_INLINE_WRITE_LOCK_IRQ is not set -# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set -# CONFIG_INLINE_WRITE_UNLOCK is not set -# CONFIG_INLINE_WRITE_UNLOCK_BH is not set -# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set -# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set -# CONFIG_MUTEX_SPIN_ON_OWNER is not set CONFIG_FREEZER=y # @@ -344,7 +334,6 @@ CONFIG_XEN_PVHVM=y CONFIG_XEN_MAX_DOMAIN_MEMORY=500 CONFIG_XEN_SAVE_RESTORE=y # CONFIG_XEN_DEBUG_FS is not set -CONFIG_KVM_CLOCK=y CONFIG_KVM_GUEST=y CONFIG_PARAVIRT=y # CONFIG_PARAVIRT_SPINLOCKS is not set @@ -382,7 +371,6 @@ CONFIG_IOMMU_HELPER=y CONFIG_NR_CPUS=64 CONFIG_SCHED_SMT=y CONFIG_SCHED_MC=y -# CONFIG_IRQ_TIME_ACCOUNTING is not set # CONFIG_PREEMPT_NONE is not set # CONFIG_PREEMPT_VOLUNTARY is not set CONFIG_PREEMPT=y @@ -464,6 +452,7 @@ CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 CONFIG_X86_PAT=y CONFIG_ARCH_USES_PG_UNCACHED=y CONFIG_ARCH_RANDOM=y +CONFIG_X86_SMAP=y CONFIG_EFI=y CONFIG_EFI_STUB=y CONFIG_SECCOMP=y @@ -537,7 +526,7 @@ CONFIG_ACPI_HOTPLUG_MEMORY=m CONFIG_ACPI_SBS=m CONFIG_ACPI_HED=y CONFIG_ACPI_CUSTOM_METHOD=m -CONFIG_ACPI_BGRT=m +CONFIG_ACPI_BGRT=y CONFIG_ACPI_APEI=y CONFIG_ACPI_APEI_GHES=y CONFIG_ACPI_APEI_PCIEAER=y @@ -568,6 +557,7 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m # CONFIG_X86_PCC_CPUFREQ=m CONFIG_X86_ACPI_CPUFREQ=m +CONFIG_X86_ACPI_CPUFREQ_CPB=y CONFIG_X86_POWERNOW_K8=m # CONFIG_X86_SPEEDSTEP_CENTRINO is not set CONFIG_X86_P4_CLOCKMOD=m @@ -596,7 +586,6 @@ CONFIG_PCI_DIRECT=y CONFIG_PCI_MMCONFIG=y CONFIG_PCI_XEN=y CONFIG_PCI_DOMAINS=y -# CONFIG_PCI_CNB20LE_QUIRK is not set CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m CONFIG_PCIEAER=y @@ -641,7 +630,6 @@ CONFIG_PD6729=m CONFIG_I82092=m CONFIG_PCCARD_NONSTATIC=y CONFIG_HOTPLUG_PCI=m -CONFIG_HOTPLUG_PCI_FAKE=m CONFIG_HOTPLUG_PCI_ACPI=m CONFIG_HOTPLUG_PCI_ACPI_IBM=m CONFIG_HOTPLUG_PCI_CPCI=y @@ -669,6 +657,7 @@ CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set # CONFIG_HAVE_AOUT is not set CONFIG_BINFMT_MISC=y +CONFIG_COREDUMP=y CONFIG_IA32_EMULATION=y CONFIG_IA32_AOUT=m CONFIG_X86_X32=y @@ -685,6 +674,7 @@ CONFIG_COMPAT_NETLINK_MESSAGES=y # Networking options # CONFIG_PACKET=y +CONFIG_PACKET_DIAG=m CONFIG_UNIX=y CONFIG_UNIX_DIAG=m CONFIG_XFRM=y @@ -713,7 +703,7 @@ CONFIG_IP_MROUTE=y # CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set CONFIG_IP_PIMSM_V1=y CONFIG_IP_PIMSM_V2=y -# CONFIG_ARPD is not set +CONFIG_ARPD=y CONFIG_SYN_COOKIES=y CONFIG_NET_IPVTI=m CONFIG_INET_AH=m @@ -764,6 +754,7 @@ CONFIG_IPV6_SIT=m CONFIG_IPV6_SIT_6RD=y CONFIG_IPV6_NDISC_NODETYPE=y CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_GRE=m CONFIG_IPV6_MULTIPLE_TABLES=y CONFIG_IPV6_SUBTREES=y # CONFIG_IPV6_MROUTE is not set @@ -809,6 +800,16 @@ CONFIG_NF_CT_NETLINK=m CONFIG_NF_CT_NETLINK_TIMEOUT=m CONFIG_NF_CT_NETLINK_HELPER=m CONFIG_NETFILTER_NETLINK_QUEUE_CT=y +CONFIG_NF_NAT=m +CONFIG_NF_NAT_NEEDED=y +CONFIG_NF_NAT_PROTO_DCCP=m +CONFIG_NF_NAT_PROTO_UDPLITE=m +CONFIG_NF_NAT_PROTO_SCTP=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_SIP=m +CONFIG_NF_NAT_TFTP=m CONFIG_NETFILTER_TPROXY=m CONFIG_NETFILTER_XTABLES=m @@ -835,10 +836,11 @@ CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m CONFIG_NETFILTER_XT_TARGET_LED=m CONFIG_NETFILTER_XT_TARGET_LOG=m CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NETMAP=m CONFIG_NETFILTER_XT_TARGET_NFLOG=m CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -CONFIG_NETFILTER_XT_TARGET_NOTRACK=m CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_REDIRECT=m CONFIG_NETFILTER_XT_TARGET_TEE=m CONFIG_NETFILTER_XT_TARGET_TPROXY=m CONFIG_NETFILTER_XT_TARGET_TRACE=m @@ -959,23 +961,14 @@ CONFIG_IP_NF_MATCH_TTL=m CONFIG_IP_NF_FILTER=m CONFIG_IP_NF_TARGET_REJECT=m CONFIG_IP_NF_TARGET_ULOG=m -CONFIG_NF_NAT=m -CONFIG_NF_NAT_NEEDED=y +CONFIG_NF_NAT_IPV4=m CONFIG_IP_NF_TARGET_MASQUERADE=m CONFIG_IP_NF_TARGET_NETMAP=m CONFIG_IP_NF_TARGET_REDIRECT=m CONFIG_NF_NAT_SNMP_BASIC=m -CONFIG_NF_NAT_PROTO_DCCP=m CONFIG_NF_NAT_PROTO_GRE=m -CONFIG_NF_NAT_PROTO_UDPLITE=m -CONFIG_NF_NAT_PROTO_SCTP=m -CONFIG_NF_NAT_FTP=m -CONFIG_NF_NAT_IRC=m -CONFIG_NF_NAT_TFTP=m -CONFIG_NF_NAT_AMANDA=m CONFIG_NF_NAT_PPTP=m CONFIG_NF_NAT_H323=m -CONFIG_NF_NAT_SIP=m CONFIG_IP_NF_MANGLE=m CONFIG_IP_NF_TARGET_CLUSTERIP=m CONFIG_IP_NF_TARGET_ECN=m @@ -1007,6 +1000,9 @@ CONFIG_IP6_NF_TARGET_REJECT=m CONFIG_IP6_NF_MANGLE=m CONFIG_IP6_NF_RAW=m CONFIG_IP6_NF_SECURITY=m +CONFIG_NF_NAT_IPV6=m +CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_TARGET_NPT=m CONFIG_BRIDGE_NF_EBTABLES=m CONFIG_BRIDGE_EBT_BROUTE=m CONFIG_BRIDGE_EBT_T_FILTER=m @@ -1332,7 +1328,6 @@ CONFIG_NFC_HCI=m # # Near Field Communication (NFC) devices # -CONFIG_PN544_NFC=m CONFIG_NFC_PN533=m CONFIG_NFC_WILINK=m CONFIG_HAVE_BPF_JIT=y @@ -1360,6 +1355,11 @@ CONFIG_REGMAP=y CONFIG_REGMAP_I2C=m CONFIG_REGMAP_IRQ=y CONFIG_DMA_SHARED_BUFFER=y + +# +# Bus devices +# +CONFIG_OMAP_OCP2SCP=m CONFIG_CONNECTOR=y CONFIG_PROC_EVENTS=y CONFIG_MTD=m @@ -1460,7 +1460,6 @@ CONFIG_BCH_CONST_T=4 CONFIG_MTD_NAND_ECC=m CONFIG_MTD_NAND_ECC_SMC=y CONFIG_MTD_NAND=m -# CONFIG_MTD_NAND_VERIFY_WRITE is not set # CONFIG_MTD_NAND_ECC_BCH is not set CONFIG_MTD_SM_COMMON=m # CONFIG_MTD_NAND_MUSEUM_IDS is not set @@ -1485,7 +1484,8 @@ CONFIG_MTD_LPDDR=m CONFIG_MTD_QINFO_PROBE=m CONFIG_MTD_UBI=m CONFIG_MTD_UBI_WL_THRESHOLD=4096 -CONFIG_MTD_UBI_BEB_RESERVE=1 +CONFIG_MTD_UBI_BEB_LIMIT=20 +# CONFIG_MTD_UBI_FASTMAP is not set # CONFIG_MTD_UBI_GLUEBI is not set CONFIG_PARPORT=m CONFIG_PARPORT_PC=m @@ -1523,7 +1523,6 @@ CONFIG_BLK_DEV_NBD=m CONFIG_BLK_DEV_NVME=m CONFIG_BLK_DEV_OSD=m CONFIG_BLK_DEV_SX8=m -# CONFIG_BLK_DEV_UB is not set CONFIG_BLK_DEV_RAM=m CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=16384 @@ -1771,6 +1770,7 @@ CONFIG_ATA_BMDMA=y # SATA SFF controllers with BMDMA # CONFIG_ATA_PIIX=m +CONFIG_SATA_HIGHBANK=m CONFIG_SATA_MV=m CONFIG_SATA_NV=m CONFIG_SATA_PROMISE=m @@ -1853,6 +1853,7 @@ CONFIG_MD_FAULTY=m CONFIG_BLK_DEV_DM=m # CONFIG_DM_DEBUG is not set CONFIG_DM_BUFIO=m +CONFIG_DM_BIO_PRISON=m CONFIG_DM_PERSISTENT_DATA=m CONFIG_DM_CRYPT=m CONFIG_DM_SNAPSHOT=m @@ -1912,9 +1913,6 @@ CONFIG_DUMMY=m CONFIG_EQUALIZER=m # CONFIG_NET_FC is not set CONFIG_MII=m -CONFIG_IEEE802154_DRIVERS=m -CONFIG_IEEE802154_FAKEHARD=m -CONFIG_IEEE802154_FAKELB=m CONFIG_IFB=m CONFIG_NET_TEAM=m CONFIG_NET_TEAM_MODE_BROADCAST=m @@ -1923,6 +1921,7 @@ CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m CONFIG_NET_TEAM_MODE_LOADBALANCE=m CONFIG_MACVLAN=m CONFIG_MACVTAP=m +CONFIG_VXLAN=m CONFIG_NETCONSOLE=m CONFIG_NETCONSOLE_DYNAMIC=y CONFIG_NETPOLL=y @@ -2124,6 +2123,7 @@ CONFIG_SFC=m CONFIG_SFC_MTD=y CONFIG_SFC_MCDI_MON=y CONFIG_SFC_SRIOV=y +CONFIG_SFC_PTP=y CONFIG_NET_VENDOR_SMSC=y CONFIG_PCMCIA_SMC91C92=m CONFIG_EPIC100=m @@ -2165,6 +2165,7 @@ CONFIG_PHYLIB=m # # MII PHY device drivers # +CONFIG_AT803X_PHY=m CONFIG_AMD_PHY=m CONFIG_MARVELL_PHY=m CONFIG_DAVICOM_PHY=m @@ -2316,6 +2317,7 @@ CONFIG_BRCMFMAC=m CONFIG_BRCMFMAC_SDIO=y # CONFIG_BRCMFMAC_SDIO_OOB is not set CONFIG_BRCMFMAC_USB=y +# CONFIG_BRCMISCAN is not set # CONFIG_BRCMDBG is not set CONFIG_HOSTAP=m CONFIG_HOSTAP_FIRMWARE=y @@ -2425,6 +2427,9 @@ CONFIG_WIMAX_I2400M=m CONFIG_WIMAX_I2400M_USB=m CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 # CONFIG_WAN is not set +CONFIG_IEEE802154_DRIVERS=m +CONFIG_IEEE802154_FAKEHARD=m +CONFIG_IEEE802154_FAKELB=m CONFIG_XEN_NETDEV_FRONTEND=m CONFIG_XEN_NETDEV_BACKEND=m CONFIG_VMXNET3=m @@ -2673,7 +2678,6 @@ CONFIG_TOUCHSCREEN_CYTTSP_I2C=m CONFIG_TOUCHSCREEN_DYNAPRO=m CONFIG_TOUCHSCREEN_HAMPSHIRE=m CONFIG_TOUCHSCREEN_EETI=m -CONFIG_TOUCHSCREEN_EGALAX=m CONFIG_TOUCHSCREEN_FUJITSU=m CONFIG_TOUCHSCREEN_ILI210X=m CONFIG_TOUCHSCREEN_GUNZE=m @@ -2803,10 +2807,10 @@ CONFIG_TRACE_SINK=m # Serial drivers # CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_PNP=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_FIX_EARLYCON_MEM=y CONFIG_SERIAL_8250_PCI=y -CONFIG_SERIAL_8250_PNP=y CONFIG_SERIAL_8250_CS=m CONFIG_SERIAL_8250_NR_UARTS=32 CONFIG_SERIAL_8250_RUNTIME_UARTS=4 @@ -2819,6 +2823,7 @@ CONFIG_SERIAL_MFD_HSU=m CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_SCCNXP=m # CONFIG_SERIAL_TIMBERDALE is not set CONFIG_SERIAL_ALTERA_JTAGUART=m CONFIG_SERIAL_ALTERA_UART=m @@ -2846,6 +2851,7 @@ CONFIG_HW_RANDOM_INTEL=m CONFIG_HW_RANDOM_AMD=m CONFIG_HW_RANDOM_VIA=m CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_HW_RANDOM_TPM=m CONFIG_NVRAM=m CONFIG_R3964=m CONFIG_APPLICOM=m @@ -2864,6 +2870,7 @@ CONFIG_HPET_MMAP=y CONFIG_HANGCHECK_TIMER=m CONFIG_TCG_TPM=m CONFIG_TCG_TIS=m +CONFIG_TCG_TIS_I2C_INFINEON=m CONFIG_TCG_NSC=m CONFIG_TCG_ATMEL=m CONFIG_TCG_INFINEON=m @@ -3048,6 +3055,7 @@ CONFIG_SENSORS_ADM1026=m CONFIG_SENSORS_ADM1029=m CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7410=m CONFIG_SENSORS_ADT7411=m CONFIG_SENSORS_ADT7462=m CONFIG_SENSORS_ADT7470=m @@ -3097,6 +3105,7 @@ CONFIG_SENSORS_LM95245=m CONFIG_SENSORS_MAX16065=m CONFIG_SENSORS_MAX1619=m CONFIG_SENSORS_MAX1668=m +CONFIG_SENSORS_MAX197=m CONFIG_SENSORS_MAX6639=m CONFIG_SENSORS_MAX6642=m CONFIG_SENSORS_MAX6650=m @@ -3162,6 +3171,7 @@ CONFIG_SENSORS_ACPI_POWER=m CONFIG_SENSORS_ATK0110=m CONFIG_THERMAL=y CONFIG_THERMAL_HWMON=y +# CONFIG_CPU_THERMAL is not set CONFIG_WATCHDOG=y CONFIG_WATCHDOG_CORE=y # CONFIG_WATCHDOG_NOWAYOUT is not set @@ -3295,16 +3305,28 @@ CONFIG_MEDIA_RADIO_SUPPORT=y CONFIG_MEDIA_RC_SUPPORT=y CONFIG_MEDIA_CONTROLLER=y CONFIG_VIDEO_DEV=m -CONFIG_VIDEO_V4L2_COMMON=m CONFIG_VIDEO_V4L2_SUBDEV_API=y +CONFIG_VIDEO_V4L2=m +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_VIDEO_TUNER=m +CONFIG_V4L2_MEM2MEM_DEV=m +CONFIG_VIDEOBUF_GEN=m +CONFIG_VIDEOBUF_DMA_SG=m +CONFIG_VIDEOBUF_VMALLOC=m +CONFIG_VIDEOBUF_DVB=m +CONFIG_VIDEOBUF2_CORE=m +CONFIG_VIDEOBUF2_MEMOPS=m +CONFIG_VIDEOBUF2_DMA_CONTIG=m +CONFIG_VIDEOBUF2_VMALLOC=m CONFIG_DVB_CORE=m CONFIG_DVB_NET=y +CONFIG_DVB_MAX_ADAPTERS=8 +# CONFIG_DVB_DYNAMIC_MINORS is not set # # Media drivers # -CONFIG_VIDEO_SAA7146=m -CONFIG_VIDEO_SAA7146_VV=m CONFIG_RC_CORE=m CONFIG_RC_MAP=m CONFIG_RC_DECODERS=y @@ -3330,156 +3352,10 @@ CONFIG_IR_REDRAT3=m CONFIG_IR_STREAMZAP=m CONFIG_IR_WINBOND_CIR=m CONFIG_IR_IGUANA=m +CONFIG_IR_TTUSBIR=m CONFIG_RC_LOOPBACK=m CONFIG_IR_GPIO_CIR=m -CONFIG_MEDIA_ATTACH=y -CONFIG_MEDIA_TUNER=m -# CONFIG_MEDIA_TUNER_CUSTOMISE is not set -CONFIG_MEDIA_TUNER_SIMPLE=m -CONFIG_MEDIA_TUNER_TDA8290=m -CONFIG_MEDIA_TUNER_TDA827X=m -CONFIG_MEDIA_TUNER_TDA18271=m -CONFIG_MEDIA_TUNER_TDA9887=m -CONFIG_MEDIA_TUNER_TEA5761=m -CONFIG_MEDIA_TUNER_TEA5767=m -CONFIG_MEDIA_TUNER_MT20XX=m -CONFIG_MEDIA_TUNER_MT2060=m -CONFIG_MEDIA_TUNER_MT2063=m -CONFIG_MEDIA_TUNER_MT2266=m -CONFIG_MEDIA_TUNER_MT2131=m -CONFIG_MEDIA_TUNER_QT1010=m -CONFIG_MEDIA_TUNER_XC2028=m -CONFIG_MEDIA_TUNER_XC5000=m -CONFIG_MEDIA_TUNER_XC4000=m -CONFIG_MEDIA_TUNER_MXL5005S=m -CONFIG_MEDIA_TUNER_MXL5007T=m -CONFIG_MEDIA_TUNER_MC44S803=m -CONFIG_MEDIA_TUNER_MAX2165=m -CONFIG_MEDIA_TUNER_TDA18218=m -CONFIG_MEDIA_TUNER_FC0011=m -CONFIG_MEDIA_TUNER_FC0012=m -CONFIG_MEDIA_TUNER_FC0013=m -CONFIG_MEDIA_TUNER_TDA18212=m -CONFIG_MEDIA_TUNER_TUA9001=m -CONFIG_VIDEO_V4L2=m -CONFIG_VIDEOBUF_GEN=m -CONFIG_VIDEOBUF_DMA_SG=m -CONFIG_VIDEOBUF_VMALLOC=m -CONFIG_VIDEOBUF_DVB=m -CONFIG_VIDEO_BTCX=m -CONFIG_VIDEO_TVEEPROM=m -CONFIG_VIDEO_TUNER=m -CONFIG_V4L2_MEM2MEM_DEV=m -CONFIG_VIDEOBUF2_CORE=m -CONFIG_VIDEOBUF2_MEMOPS=m -CONFIG_VIDEOBUF2_DMA_CONTIG=m -CONFIG_VIDEOBUF2_VMALLOC=m -CONFIG_VIDEO_CAPTURE_DRIVERS=y -# CONFIG_VIDEO_ADV_DEBUG is not set -# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set -# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set -CONFIG_VIDEO_IR_I2C=m - -# -# Encoders, decoders, sensors and other helper chips -# - -# -# Audio decoders, processors and mixers -# -CONFIG_VIDEO_TVAUDIO=m -CONFIG_VIDEO_TDA7432=m -CONFIG_VIDEO_TDA9840=m -CONFIG_VIDEO_TEA6415C=m -CONFIG_VIDEO_TEA6420=m -CONFIG_VIDEO_MSP3400=m -CONFIG_VIDEO_CS5345=m -CONFIG_VIDEO_CS53L32A=m -CONFIG_VIDEO_TLV320AIC23B=m -CONFIG_VIDEO_WM8775=m -CONFIG_VIDEO_WM8739=m -CONFIG_VIDEO_VP27SMPX=m - -# -# RDS decoders -# -CONFIG_VIDEO_SAA6588=m - -# -# Video decoders -# -CONFIG_VIDEO_ADV7180=m -CONFIG_VIDEO_ADV7183=m -CONFIG_VIDEO_BT819=m -CONFIG_VIDEO_BT856=m -CONFIG_VIDEO_BT866=m -CONFIG_VIDEO_KS0127=m -CONFIG_VIDEO_SAA7110=m -CONFIG_VIDEO_SAA711X=m -CONFIG_VIDEO_SAA7191=m -CONFIG_VIDEO_TVP514X=m -CONFIG_VIDEO_TVP5150=m -CONFIG_VIDEO_TVP7002=m -CONFIG_VIDEO_VPX3220=m - -# -# Video and audio decoders -# -CONFIG_VIDEO_SAA717X=m -CONFIG_VIDEO_CX25840=m - -# -# MPEG video encoders -# -CONFIG_VIDEO_CX2341X=m - -# -# Video encoders -# -CONFIG_VIDEO_SAA7127=m -CONFIG_VIDEO_SAA7185=m -CONFIG_VIDEO_ADV7170=m -CONFIG_VIDEO_ADV7175=m -CONFIG_VIDEO_ADV7343=m -CONFIG_VIDEO_ADV7393=m -CONFIG_VIDEO_AK881X=m - -# -# Camera sensor devices -# -CONFIG_VIDEO_APTINA_PLL=m -CONFIG_VIDEO_OV7670=m -CONFIG_VIDEO_VS6624=m -CONFIG_VIDEO_MT9M032=m -CONFIG_VIDEO_MT9P031=m -CONFIG_VIDEO_MT9T001=m -CONFIG_VIDEO_MT9V011=m -CONFIG_VIDEO_MT9V032=m -CONFIG_VIDEO_TCM825X=m -CONFIG_VIDEO_SR030PC30=m -CONFIG_VIDEO_NOON010PC30=m -CONFIG_VIDEO_M5MOLS=m -CONFIG_VIDEO_S5K6AA=m - -# -# Flash devices -# -CONFIG_VIDEO_ADP1653=m -CONFIG_VIDEO_AS3645A=m - -# -# Video improvement chips -# -CONFIG_VIDEO_UPD64031A=m -CONFIG_VIDEO_UPD64083=m - -# -# Miscelaneous helper chips -# -CONFIG_VIDEO_THS7303=m -CONFIG_VIDEO_M52790=m -CONFIG_VIDEO_VIVI=m -CONFIG_V4L_USB_DRIVERS=y +CONFIG_MEDIA_USB_SUPPORT=y # # Webcam devices @@ -3543,15 +3419,7 @@ CONFIG_USB_S2255=m CONFIG_USB_SN9C102=m # -# Webcam and/or TV USB devices -# -CONFIG_VIDEO_EM28XX=m -CONFIG_VIDEO_EM28XX_ALSA=m -CONFIG_VIDEO_EM28XX_DVB=m -CONFIG_VIDEO_EM28XX_RC=m - -# -# TV USB devices +# Analog TV USB devices # CONFIG_VIDEO_AU0828=m CONFIG_VIDEO_PVRUSB2=m @@ -3560,6 +3428,13 @@ CONFIG_VIDEO_PVRUSB2_DVB=y # CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set CONFIG_VIDEO_HDPVR=m CONFIG_VIDEO_TLG2300=m +CONFIG_VIDEO_USBVISION=m +CONFIG_VIDEO_STK1160=m +CONFIG_VIDEO_STK1160_AC97=y + +# +# Analog/digital TV USB devices +# CONFIG_VIDEO_CX231XX=m CONFIG_VIDEO_CX231XX_RC=y CONFIG_VIDEO_CX231XX_ALSA=m @@ -3567,10 +3442,92 @@ CONFIG_VIDEO_CX231XX_DVB=m CONFIG_VIDEO_TM6000=m CONFIG_VIDEO_TM6000_ALSA=m CONFIG_VIDEO_TM6000_DVB=m -CONFIG_VIDEO_USBVISION=m -CONFIG_V4L_PCI_DRIVERS=y -CONFIG_VIDEO_BT848=m -CONFIG_VIDEO_BT848_DVB=y + +# +# Digital TV USB devices +# +CONFIG_DVB_USB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_DIBUSB_MB=m +CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_FRIIO=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_V2=m +CONFIG_DVB_USB_CYPRESS_FIRMWARE=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_AF9035=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_AZ6007=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_IT913X=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_SMS_USB_DRV=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set + +# +# Webcam, TV (analog/digital) USB devices +# +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_VIDEO_EM28XX_RC=m +CONFIG_MEDIA_PCI_SUPPORT=y + +# +# Media capture support +# +CONFIG_VIDEO_MEYE=m + +# +# Media capture/analog TV support +# +CONFIG_VIDEO_IVTV=m +CONFIG_VIDEO_IVTV_ALSA=m +CONFIG_VIDEO_FB_IVTV=m +CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_ZR36060=m +CONFIG_VIDEO_ZORAN_BUZ=m +CONFIG_VIDEO_ZORAN_DC10=m +CONFIG_VIDEO_ZORAN_LML33=m +CONFIG_VIDEO_ZORAN_LML33R10=m +CONFIG_VIDEO_ZORAN_AVS6EYES=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_MXB=m + +# +# Media capture/analog/hybrid TV support +# CONFIG_VIDEO_CX18=m CONFIG_VIDEO_CX18_ALSA=m CONFIG_VIDEO_CX23885=m @@ -3583,29 +3540,48 @@ CONFIG_VIDEO_CX88_BLACKBIRD=m CONFIG_VIDEO_CX88_DVB=m CONFIG_VIDEO_CX88_VP3054=m CONFIG_VIDEO_CX88_MPEG=m -CONFIG_VIDEO_HEXIUM_GEMINI=m -CONFIG_VIDEO_HEXIUM_ORION=m -CONFIG_VIDEO_IVTV=m -CONFIG_VIDEO_FB_IVTV=m -CONFIG_VIDEO_MEYE=m -CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_BT848=m +CONFIG_DVB_BT8XX=m CONFIG_VIDEO_SAA7134=m CONFIG_VIDEO_SAA7134_ALSA=m CONFIG_VIDEO_SAA7134_RC=y CONFIG_VIDEO_SAA7134_DVB=m CONFIG_VIDEO_SAA7164=m -CONFIG_VIDEO_ZORAN=m -CONFIG_VIDEO_ZORAN_DC30=m -CONFIG_VIDEO_ZORAN_ZR36060=m -CONFIG_VIDEO_ZORAN_BUZ=m -CONFIG_VIDEO_ZORAN_DC10=m -CONFIG_VIDEO_ZORAN_LML33=m -CONFIG_VIDEO_ZORAN_LML33R10=m -CONFIG_VIDEO_ZORAN_AVS6EYES=m -# CONFIG_V4L_ISA_PARPORT_DRIVERS is not set + +# +# Media digital TV PCI Adapters +# +CONFIG_TTPCI_EEPROM=m +CONFIG_DVB_AV7110=m +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_BUDGET_CORE=m +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_BUDGET_PATCH=m +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set +CONFIG_DVB_PLUTO2=m +CONFIG_DVB_DM1105=m +CONFIG_DVB_PT1=m +CONFIG_MANTIS_CORE=m +CONFIG_DVB_MANTIS=m +CONFIG_DVB_HOPPER=m +CONFIG_DVB_NGENE=m +CONFIG_DVB_DDBRIDGE=m # CONFIG_V4L_PLATFORM_DRIVERS is not set CONFIG_V4L_MEM2MEM_DRIVERS=y -CONFIG_VIDEO_MEM2MEM_TESTDEV=m +CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m +# CONFIG_V4L_TEST_DRIVERS is not set + +# +# Supported MMC/SDIO adapters +# +CONFIG_SMS_SDIO_DRV=m +CONFIG_MEDIA_PARPORT_SUPPORT=y +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CQCAM=m +CONFIG_VIDEO_W9966=m CONFIG_RADIO_ADAPTERS=y CONFIG_RADIO_SI470X=y CONFIG_USB_SI470X=m @@ -3627,128 +3603,129 @@ CONFIG_RADIO_WL1273=m # Texas Instruments WL128x FM driver (ST based) # CONFIG_RADIO_WL128X=m -CONFIG_DVB_MAX_ADAPTERS=8 -# CONFIG_DVB_DYNAMIC_MINORS is not set -CONFIG_DVB_CAPTURE_DRIVERS=y - -# -# Supported SAA7146 based PCI Adapters -# -CONFIG_TTPCI_EEPROM=m -CONFIG_DVB_AV7110=m -CONFIG_DVB_AV7110_OSD=y -CONFIG_DVB_BUDGET_CORE=m -CONFIG_DVB_BUDGET=m -CONFIG_DVB_BUDGET_CI=m -CONFIG_DVB_BUDGET_AV=m -CONFIG_DVB_BUDGET_PATCH=m - -# -# Supported USB Adapters -# -CONFIG_DVB_USB=m -# CONFIG_DVB_USB_DEBUG is not set -CONFIG_DVB_USB_A800=m -CONFIG_DVB_USB_DIBUSB_MB=m -CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y -CONFIG_DVB_USB_DIBUSB_MC=m -CONFIG_DVB_USB_DIB0700=m -CONFIG_DVB_USB_UMT_010=m -CONFIG_DVB_USB_CXUSB=m -CONFIG_DVB_USB_M920X=m -CONFIG_DVB_USB_GL861=m -CONFIG_DVB_USB_AU6610=m -CONFIG_DVB_USB_DIGITV=m -CONFIG_DVB_USB_VP7045=m -CONFIG_DVB_USB_VP702X=m -CONFIG_DVB_USB_GP8PSK=m -CONFIG_DVB_USB_NOVA_T_USB2=m -CONFIG_DVB_USB_TTUSB2=m -CONFIG_DVB_USB_DTT200U=m -CONFIG_DVB_USB_OPERA1=m -CONFIG_DVB_USB_AF9005=m -CONFIG_DVB_USB_AF9005_REMOTE=m -CONFIG_DVB_USB_PCTV452E=m -CONFIG_DVB_USB_DW2102=m -CONFIG_DVB_USB_CINERGY_T2=m -CONFIG_DVB_USB_ANYSEE=m -CONFIG_DVB_USB_DTV5100=m -CONFIG_DVB_USB_AF9015=m -CONFIG_DVB_USB_CE6230=m -CONFIG_DVB_USB_FRIIO=m -CONFIG_DVB_USB_EC168=m -CONFIG_DVB_USB_AZ6007=m -CONFIG_DVB_USB_AZ6027=m -CONFIG_DVB_USB_LME2510=m -CONFIG_DVB_USB_TECHNISAT_USB2=m -CONFIG_DVB_USB_IT913X=m -CONFIG_DVB_USB_MXL111SF=m -CONFIG_DVB_USB_RTL28XXU=m -CONFIG_DVB_USB_AF9035=m -CONFIG_DVB_TTUSB_BUDGET=m -CONFIG_DVB_TTUSB_DEC=m -CONFIG_SMS_SIANO_MDTV=m - -# -# Siano module components -# -CONFIG_SMS_USB_DRV=m -CONFIG_SMS_SDIO_DRV=m - -# -# Supported FlexCopII (B2C2) Adapters -# -CONFIG_DVB_B2C2_FLEXCOP=m -CONFIG_DVB_B2C2_FLEXCOP_PCI=m -CONFIG_DVB_B2C2_FLEXCOP_USB=m -# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set - -# -# Supported BT878 Adapters -# -CONFIG_DVB_BT8XX=m - -# -# Supported Pluto2 Adapters -# -CONFIG_DVB_PLUTO2=m - -# -# Supported SDMC DM1105 Adapters -# -CONFIG_DVB_DM1105=m # # Supported FireWire (IEEE 1394) Adapters # CONFIG_DVB_FIREDTV=m CONFIG_DVB_FIREDTV_INPUT=y +CONFIG_DVB_B2C2_FLEXCOP=m +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_SMS_SIANO_MDTV=m +CONFIG_MEDIA_SUBDRV_AUTOSELECT=y # -# Supported Earthsoft PT1 Adapters +# Media ancillary drivers (tuners, sensors, i2c, frontends) # -CONFIG_DVB_PT1=m +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_IR_I2C=m # -# Supported Mantis Adapters +# Audio decoders, processors and mixers # -CONFIG_MANTIS_CORE=m -CONFIG_DVB_MANTIS=m -CONFIG_DVB_HOPPER=m +CONFIG_VIDEO_TVAUDIO=m +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_CS5345=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_VP27SMPX=m # -# Supported nGene Adapters +# RDS decoders # -CONFIG_DVB_NGENE=m +CONFIG_VIDEO_SAA6588=m # -# Supported ddbridge ('Octopus') Adapters +# Video decoders # -CONFIG_DVB_DDBRIDGE=m +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT856=m +CONFIG_VIDEO_BT866=m +CONFIG_VIDEO_KS0127=m +CONFIG_VIDEO_SAA7110=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_VPX3220=m # -# Supported DVB Frontends +# Video and audio decoders # +CONFIG_VIDEO_SAA717X=m +CONFIG_VIDEO_CX25840=m + +# +# MPEG video encoders +# +CONFIG_VIDEO_CX2341X=m + +# +# Video encoders +# +CONFIG_VIDEO_SAA7127=m +CONFIG_VIDEO_SAA7185=m +CONFIG_VIDEO_ADV7170=m +CONFIG_VIDEO_ADV7175=m + +# +# Camera sensor devices +# +CONFIG_VIDEO_MT9V011=m + +# +# Flash devices +# + +# +# Video improvement chips +# +CONFIG_VIDEO_UPD64031A=m +CONFIG_VIDEO_UPD64083=m + +# +# Miscelaneous helper chips +# +CONFIG_VIDEO_M52790=m + +# +# Sensors used on soc_camera driver +# +CONFIG_MEDIA_ATTACH=y +CONFIG_MEDIA_TUNER=m +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2063=m +CONFIG_MEDIA_TUNER_MT2266=m +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC5000=m +CONFIG_MEDIA_TUNER_XC4000=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_MEDIA_TUNER_MAX2165=m +CONFIG_MEDIA_TUNER_TDA18218=m +CONFIG_MEDIA_TUNER_FC0011=m +CONFIG_MEDIA_TUNER_FC0012=m +CONFIG_MEDIA_TUNER_FC0013=m +CONFIG_MEDIA_TUNER_TDA18212=m +CONFIG_MEDIA_TUNER_E4000=m +CONFIG_MEDIA_TUNER_FC2580=m +CONFIG_MEDIA_TUNER_TUA9001=m # # Multistandard (satellite) frontends @@ -3898,8 +3875,9 @@ CONFIG_DRM_R128=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_KMS=y CONFIG_DRM_NOUVEAU=m +CONFIG_NOUVEAU_DEBUG=5 +CONFIG_NOUVEAU_DEBUG_DEFAULT=3 CONFIG_DRM_NOUVEAU_BACKLIGHT=y -CONFIG_DRM_NOUVEAU_DEBUG=y # # I2C encoder or helper chips @@ -4002,14 +3980,16 @@ CONFIG_LCD_PLATFORM=m CONFIG_BACKLIGHT_CLASS_DEVICE=y # CONFIG_BACKLIGHT_GENERIC is not set CONFIG_BACKLIGHT_LM3533=m -CONFIG_BACKLIGHT_PROGEAR=m CONFIG_BACKLIGHT_APPLE=m # CONFIG_BACKLIGHT_SAHARA is not set # CONFIG_BACKLIGHT_ADP8860 is not set # CONFIG_BACKLIGHT_ADP8870 is not set CONFIG_BACKLIGHT_PCF50633=m +# CONFIG_BACKLIGHT_LM3630 is not set +# CONFIG_BACKLIGHT_LM3639 is not set # CONFIG_BACKLIGHT_LP855X is not set # CONFIG_BACKLIGHT_OT200 is not set +# CONFIG_BACKLIGHT_TPS65217 is not set # # Console display driver support @@ -4152,7 +4132,6 @@ CONFIG_SND_HDA_CODEC_CA0132=y CONFIG_SND_HDA_CODEC_CMEDIA=y CONFIG_SND_HDA_CODEC_SI3054=y CONFIG_SND_HDA_GENERIC=y -CONFIG_SND_HDA_POWER_SAVE=y CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 CONFIG_SND_HDSP=m CONFIG_SND_HDSPM=m @@ -4255,7 +4234,9 @@ CONFIG_HID_PICOLCD_FB=y CONFIG_HID_PICOLCD_BACKLIGHT=y CONFIG_HID_PICOLCD_LCD=y CONFIG_HID_PICOLCD_LEDS=y +CONFIG_HID_PICOLCD_CIR=y CONFIG_HID_PRIMAX=m +CONFIG_HID_PS3REMOTE=m CONFIG_HID_ROCCAT=m CONFIG_HID_SAITEK=m CONFIG_HID_SAMSUNG=m @@ -4277,6 +4258,7 @@ CONFIG_HID_WIIMOTE_EXT=y CONFIG_HID_ZEROPLUS=m CONFIG_ZEROPLUS_FF=y CONFIG_HID_ZYDACRON=m +CONFIG_HID_SENSOR_HUB=m # # USB HID support @@ -4377,8 +4359,6 @@ CONFIG_USB_STORAGE_ONETOUCH=m CONFIG_USB_STORAGE_KARMA=m CONFIG_USB_STORAGE_CYPRESS_ATACB=m CONFIG_USB_STORAGE_ENE_UB6250=m -CONFIG_USB_UAS=m -# CONFIG_USB_LIBUSUAL is not set # # USB Imaging devices @@ -4391,7 +4371,6 @@ CONFIG_USB_MICROTEK=m # CONFIG_USB_USS720=m CONFIG_USB_SERIAL=m -CONFIG_USB_EZUSB=y CONFIG_USB_SERIAL_GENERIC=y CONFIG_USB_SERIAL_AIRCABLE=m CONFIG_USB_SERIAL_ARK3116=m @@ -4456,6 +4435,7 @@ CONFIG_USB_SERIAL_OMNINET=m CONFIG_USB_SERIAL_OPTICON=m CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m CONFIG_USB_SERIAL_ZIO=m +CONFIG_USB_SERIAL_ZTE=m CONFIG_USB_SERIAL_SSU100=m CONFIG_USB_SERIAL_QT2=m # CONFIG_USB_SERIAL_DEBUG is not set @@ -4484,10 +4464,12 @@ CONFIG_USB_IOWARRIOR=m CONFIG_USB_TEST=m CONFIG_USB_ISIGHTFW=m CONFIG_USB_YUREX=m +CONFIG_USB_EZUSB_FX2=m # # USB Physical Layer drivers # +CONFIG_OMAP_USB2=m CONFIG_USB_ISP1301=m CONFIG_USB_ATM=m CONFIG_USB_SPEEDTOUCH=m @@ -4516,8 +4498,7 @@ CONFIG_USB_NET2280=m CONFIG_USB_GOKU=m CONFIG_USB_EG20T=m CONFIG_USB_DUMMY_HCD=m -CONFIG_USB_GADGET_DUALSPEED=y -CONFIG_USB_GADGET_SUPERSPEED=y +CONFIG_USB_LIBCOMPOSITE=m # CONFIG_USB_ZERO is not set CONFIG_USB_AUDIO=m # CONFIG_GADGET_UAC1 is not set @@ -4608,6 +4589,7 @@ CONFIG_LEDS_CLASS=y # CONFIG_LEDS_LM3530=m CONFIG_LEDS_LM3533=m +CONFIG_LEDS_LM3642=m CONFIG_LEDS_PCA9532=m # CONFIG_LEDS_PCA9532_GPIO is not set # CONFIG_LEDS_GPIO is not set @@ -4623,7 +4605,7 @@ CONFIG_LEDS_LT3593=m CONFIG_LEDS_DELL_NETBOOKS=m CONFIG_LEDS_MC13783=m CONFIG_LEDS_TCA6507=m -CONFIG_LEDS_LM3556=m +CONFIG_LEDS_LM355x=m CONFIG_LEDS_OT200=m CONFIG_LEDS_BLINKM=m CONFIG_LEDS_TRIGGERS=y @@ -4635,6 +4617,7 @@ CONFIG_LEDS_TRIGGER_TIMER=m CONFIG_LEDS_TRIGGER_ONESHOT=m CONFIG_LEDS_TRIGGER_HEARTBEAT=m CONFIG_LEDS_TRIGGER_BACKLIGHT=m +# CONFIG_LEDS_TRIGGER_CPU is not set CONFIG_LEDS_TRIGGER_GPIO=m CONFIG_LEDS_TRIGGER_DEFAULT_ON=m @@ -4727,6 +4710,7 @@ CONFIG_RTC_DRV_MSM6242=m CONFIG_RTC_DRV_BQ4802=m CONFIG_RTC_DRV_RP5C01=m CONFIG_RTC_DRV_V3020=m +CONFIG_RTC_DRV_DS2404=m CONFIG_RTC_DRV_PCF50633=m # @@ -4768,7 +4752,6 @@ CONFIG_UIO_PCI_GENERIC=m CONFIG_UIO_NETX=m # CONFIG_VFIO is not set CONFIG_VIRTIO=m -CONFIG_VIRTIO_RING=m # # Virtio drivers @@ -4827,6 +4810,7 @@ CONFIG_COMEDI_PARPORT=m CONFIG_COMEDI_SERIAL2002=m CONFIG_COMEDI_SKEL=m CONFIG_COMEDI_PCI_DRIVERS=y +CONFIG_COMEDI_8255_PCI=m CONFIG_COMEDI_ADDI_APCI_035=m CONFIG_COMEDI_ADDI_APCI_1032=m CONFIG_COMEDI_ADDI_APCI_1500=m @@ -4841,9 +4825,7 @@ CONFIG_COMEDI_ADDI_APCI_3120=m CONFIG_COMEDI_ADDI_APCI_3501=m CONFIG_COMEDI_ADDI_APCI_3XXX=m CONFIG_COMEDI_ADL_PCI6208=m -CONFIG_COMEDI_ADL_PCI7230=m -CONFIG_COMEDI_ADL_PCI7296=m -CONFIG_COMEDI_ADL_PCI7432=m +CONFIG_COMEDI_ADL_PCI7X3X=m CONFIG_COMEDI_ADL_PCI8164=m CONFIG_COMEDI_ADL_PCI9111=m CONFIG_COMEDI_ADL_PCI9118=m @@ -4869,7 +4851,6 @@ CONFIG_COMEDI_KE_COUNTER=m CONFIG_COMEDI_CB_PCIDAS64=m CONFIG_COMEDI_CB_PCIDAS=m CONFIG_COMEDI_CB_PCIDDA=m -CONFIG_COMEDI_CB_PCIDIO=m CONFIG_COMEDI_CB_PCIMDAS=m CONFIG_COMEDI_CB_PCIMDDA=m CONFIG_COMEDI_ME4000=m @@ -4978,8 +4959,6 @@ CONFIG_DVB_CXD2099=m CONFIG_VIDEO_DT3155=m CONFIG_DT3155_CCIR=y CONFIG_DT3155_STREAMING=y -CONFIG_EASYCAP=m -# CONFIG_EASYCAP_DEBUG is not set CONFIG_VIDEO_GO7007=m CONFIG_VIDEO_GO7007_USB=m # CONFIG_VIDEO_GO7007_USB_S2250_BOARD is not set @@ -5000,7 +4979,6 @@ CONFIG_LIRC_SASEM=m CONFIG_LIRC_SERIAL=m CONFIG_LIRC_SERIAL_TRANSMITTER=y CONFIG_LIRC_SIR=m -CONFIG_LIRC_TTUSBIR=m CONFIG_LIRC_ZILOG=m # @@ -5020,6 +4998,11 @@ CONFIG_WIMAX_GDM72XX_USB=y # CONFIG_WIMAX_GDM72XX_SDIO is not set CONFIG_WIMAX_GDM72XX_USB_PM=y CONFIG_CSR_WIFI=m +CONFIG_NET_VENDOR_SILICOM=y +CONFIG_SBYPASS=m +CONFIG_BPCTL=m +CONFIG_CED1401=m +CONFIG_DGRP=m CONFIG_X86_PLATFORM_DEVICES=y CONFIG_ACER_WMI=m CONFIG_ACERHDF=m @@ -5087,6 +5070,8 @@ CONFIG_IRQ_REMAP=y # # Remoteproc drivers (EXPERIMENTAL) # +CONFIG_REMOTEPROC=m +CONFIG_STE_MODEM_RPROC=m # # Rpmsg drivers (EXPERIMENTAL) @@ -5292,7 +5277,11 @@ CONFIG_NFS_V3=m CONFIG_NFS_V3_ACL=y CONFIG_NFS_V4=m # CONFIG_NFS_SWAP is not set -# CONFIG_NFS_V4_1 is not set +CONFIG_NFS_V4_1=y +CONFIG_PNFS_FILE_LAYOUT=m +CONFIG_PNFS_BLOCK=m +CONFIG_PNFS_OBJLAYOUT=m +CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" CONFIG_NFS_FSCACHE=y # CONFIG_NFS_USE_LEGACY_DNS is not set CONFIG_NFS_USE_KERNEL_DNS=y @@ -5308,6 +5297,7 @@ CONFIG_NFS_ACL_SUPPORT=m CONFIG_NFS_COMMON=y CONFIG_SUNRPC=m CONFIG_SUNRPC_GSS=m +CONFIG_SUNRPC_BACKCHANNEL=y CONFIG_RPCSEC_GSS_KRB5=m # CONFIG_SUNRPC_DEBUG is not set CONFIG_CEPH_FS=m @@ -5318,10 +5308,11 @@ CONFIG_CIFS_WEAK_PW_HASH=y CONFIG_CIFS_UPCALL=y CONFIG_CIFS_XATTR=y CONFIG_CIFS_POSIX=y +CONFIG_CIFS_ACL=y # CONFIG_CIFS_DEBUG2 is not set CONFIG_CIFS_DFS_UPCALL=y +CONFIG_CIFS_SMB2=y CONFIG_CIFS_FSCACHE=y -CONFIG_CIFS_ACL=y CONFIG_NCP_FS=m # CONFIG_NCPFS_PACKET_SIGNING is not set # CONFIG_NCPFS_IOCTL_LOCKING is not set @@ -5428,6 +5419,7 @@ CONFIG_TIMER_STATS=y # CONFIG_DEBUG_OBJECTS is not set # CONFIG_SLUB_DEBUG_ON is not set # CONFIG_SLUB_STATS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y # CONFIG_DEBUG_KMEMLEAK is not set # CONFIG_DEBUG_PREEMPT is not set # CONFIG_DEBUG_RT_MUTEXES is not set @@ -5436,6 +5428,7 @@ CONFIG_TIMER_STATS=y CONFIG_DEBUG_MUTEXES=y # CONFIG_DEBUG_LOCK_ALLOC is not set # CONFIG_PROVE_LOCKING is not set +# CONFIG_PROVE_RCU_DELAY is not set # CONFIG_SPARSE_RCU_POINTER is not set # CONFIG_LOCK_STAT is not set # CONFIG_DEBUG_ATOMIC_SLEEP is not set @@ -5481,8 +5474,10 @@ CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y CONFIG_HAVE_DYNAMIC_FTRACE=y CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_FENTRY=y CONFIG_HAVE_C_RECORDMCOUNT=y CONFIG_TRACER_MAX_TRACE=y +CONFIG_TRACE_CLOCK=y CONFIG_RING_BUFFER=y CONFIG_EVENT_TRACING=y CONFIG_EVENT_POWER_TRACING_DEPRECATED=y @@ -5513,9 +5508,11 @@ CONFIG_FTRACE_MCOUNT_RECORD=y CONFIG_MMIOTRACE=y # CONFIG_MMIOTRACE_TEST is not set CONFIG_RING_BUFFER_BENCHMARK=m +# CONFIG_RBTREE_TEST is not set +# CONFIG_INTERVAL_TREE_TEST is not set # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set # CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set -# CONFIG_DYNAMIC_DEBUG is not set +CONFIG_DYNAMIC_DEBUG=y # CONFIG_DMA_API_DEBUG is not set # CONFIG_ATOMIC64_SELFTEST is not set CONFIG_ASYNC_RAID6_TEST=m @@ -5672,7 +5669,7 @@ CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m # # Ciphers # -CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_AES=y CONFIG_CRYPTO_AES_X86_64=m CONFIG_CRYPTO_AES_NI_INTEL=m CONFIG_CRYPTO_ANUBIS=m @@ -5683,7 +5680,9 @@ CONFIG_CRYPTO_BLOWFISH_X86_64=m CONFIG_CRYPTO_CAMELLIA=m CONFIG_CRYPTO_CAMELLIA_X86_64=m CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST5_AVX_X86_64=m CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_CAST6_AVX_X86_64=m CONFIG_CRYPTO_DES=m CONFIG_CRYPTO_FCRYPT=m CONFIG_CRYPTO_KHAZAD=m @@ -5718,6 +5717,10 @@ CONFIG_CRYPTO_HW=y CONFIG_CRYPTO_DEV_PADLOCK=m CONFIG_CRYPTO_DEV_PADLOCK_AES=m CONFIG_CRYPTO_DEV_PADLOCK_SHA=m +CONFIG_ASYMMETRIC_KEY_TYPE=m +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m +CONFIG_PUBLIC_KEY_ALGO_RSA=m +CONFIG_X509_CERTIFICATE_PARSER=m CONFIG_HAVE_KVM=y CONFIG_HAVE_KVM_IRQCHIP=y CONFIG_HAVE_KVM_EVENTFD=y @@ -5725,6 +5728,7 @@ CONFIG_KVM_APIC_ARCHITECTURE=y CONFIG_KVM_MMIO=y CONFIG_KVM_ASYNC_PF=y CONFIG_HAVE_KVM_MSI=y +CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y CONFIG_VIRTUALIZATION=y CONFIG_KVM=m CONFIG_KVM_INTEL=m @@ -5798,5 +5802,8 @@ CONFIG_NLATTR=y CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y CONFIG_LRU_CACHE=m CONFIG_AVERAGE=y +CONFIG_CLZ_TAB=y CONFIG_CORDIC=m CONFIG_DDR=y +CONFIG_MPILIB=m +CONFIG_OID_REGISTRY=m diff --git a/linux/create-aufs.sh b/linux/create-aufs.sh old mode 100644 new mode 100755 index 80dc59b87..d98538570 --- a/linux/create-aufs.sh +++ b/linux/create-aufs.sh @@ -5,7 +5,7 @@ rm -Rf aufs3-standalone git clone git://aufs.git.sourceforge.net/gitroot/aufs/aufs3-standalone.git cd aufs3-standalone git branch -r -git checkout origin/aufs3.6 +git checkout origin/aufs3.7 # modify what you want @@ -15,16 +15,16 @@ git checkout origin/aufs3.6 rm -v $(find . -type f -name '*.orig') grep -qse 'EXPORT_SYMBOL(' aufs3-standalone.patch && \ sed -i-old -e 's|EXPORT_SYMBOL(|EXPORT_SYMBOL_GPL(|' aufs3-standalone.patch -rm -rf ../tmp/linux-3.6 -mkdir -p ../tmp/linux-3.6 -cp -a fs ../tmp/linux-3.6 -cp -a include ../tmp/linux-3.6 -cp -a Documentation ../tmp/linux-3.6 -rm ../tmp/linux-3.6/include/linux/Kbuild +rm -rf ../tmp/linux-3.7 +mkdir -p ../tmp/linux-3.7 +cp -a fs ../tmp/linux-3.7 +cp -a include ../tmp/linux-3.7 +cp -a Documentation ../tmp/linux-3.7 +rm ../tmp/linux-3.7/include/uapi/linux/Kbuild cd ../tmp -diff -Naur null linux-3.6 | filterdiff | \ -sed -e 's|null\(/include/linux/Kbuild\)|linux-3.6-old\1|;s|^--- null.*|--- /dev/null|;\|linux-3.6/include/linux/Kbuild|,${\|@@ -0,0 +1 @@|,$d}' \ -| bzip2 > aufs$(sed -ne 's|#define.*AUFS_VERSION.*"\(.*\)"|\1|p' linux-3.6/include/linux/aufs_type.h).patch.bz2 +diff -Naur null linux-3.7 | filterdiff | \ +sed -e 's|null\(/include/uapi/linux/Kbuild\)|linux-3.7-old\1|;s|^--- null.*|--- /dev/null|;\|linux-3.7/include/uapi/linux/Kbuild|,${\|@@ -0,0 +1 @@|,$d}' \ +| bzip2 > aufs$(sed -ne 's|#define.*AUFS_VERSION.*"\(.*\)"|\1|p' linux-3.7/include/linux/aufs_type.h).patch.bz2 mv *.bz2 $OLDPWD cd $OLDPWD mv *patch* .. diff --git a/linux/drm-fix-track-free-areas-3.7.patch b/linux/drm-fix-track-free-areas-3.7.patch new file mode 100644 index 000000000..6d00c6d3e --- /dev/null +++ b/linux/drm-fix-track-free-areas-3.7.patch @@ -0,0 +1,153 @@ +From 9ff0ab9881bd47f7d8a95c07a2fa61f594a91d0a Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Sun, 16 Dec 2012 16:15:00 +0000 +Subject: [PATCH] drm: Only evict the blocks required to create the requested + hole + +Avoid clobbering adjacent blocks if they happen to expire earlier and +amalgamate together to form the requested hole. + +In passing this fixes a regression from +commit ea7b1dd44867e9cd6bac67e7c9fc3f128b5b255c +Author: Daniel Vetter +Date: Fri Feb 18 17:59:12 2011 +0100 + + drm: mm: track free areas implicitly + +which swaps the end address for size (with a potential overflow) and +effectively causes the eviction code to clobber almost all earlier +buffers above the evictee. + +v2: Check the original hole not the adjusted as the coloring may confuse +us when later searching for the overlapping nodes. Also make sure that +we do apply the range restriction and color adjustment in the same +order for both scanning, searching and insertion. + +Signed-off-by: Chris Wilson +Cc: Daniel Vetter +--- + drivers/gpu/drm/drm_mm.c | 45 +++++++++++++++++---------------------------- + include/drm/drm_mm.h | 2 +- + 2 files changed, 18 insertions(+), 29 deletions(-) + +diff --git a/drivers/gpu/drm/drm_mm.c b/drivers/gpu/drm/drm_mm.c +index 0761a03..665553c 100644 +--- a/drivers/gpu/drm/drm_mm.c ++++ b/drivers/gpu/drm/drm_mm.c +@@ -213,11 +213,13 @@ static void drm_mm_insert_helper_range(struct drm_mm_node *hole_node, + + BUG_ON(!hole_node->hole_follows || node->allocated); + +- if (mm->color_adjust) +- mm->color_adjust(hole_node, color, &adj_start, &adj_end); +- + if (adj_start < start) + adj_start = start; ++ if (adj_end > end) ++ adj_end = end; ++ ++ if (mm->color_adjust) ++ mm->color_adjust(hole_node, color, &adj_start, &adj_end); + + if (alignment) { + unsigned tmp = adj_start % alignment; +@@ -489,7 +491,7 @@ void drm_mm_init_scan(struct drm_mm *mm, + mm->scan_size = size; + mm->scanned_blocks = 0; + mm->scan_hit_start = 0; +- mm->scan_hit_size = 0; ++ mm->scan_hit_end = 0; + mm->scan_check_range = 0; + mm->prev_scanned_node = NULL; + } +@@ -516,7 +518,7 @@ void drm_mm_init_scan_with_range(struct drm_mm *mm, + mm->scan_size = size; + mm->scanned_blocks = 0; + mm->scan_hit_start = 0; +- mm->scan_hit_size = 0; ++ mm->scan_hit_end = 0; + mm->scan_start = start; + mm->scan_end = end; + mm->scan_check_range = 1; +@@ -535,8 +537,7 @@ int drm_mm_scan_add_block(struct drm_mm_node *node) + struct drm_mm *mm = node->mm; + struct drm_mm_node *prev_node; + unsigned long hole_start, hole_end; +- unsigned long adj_start; +- unsigned long adj_end; ++ unsigned long adj_start, adj_end; + + mm->scanned_blocks++; + +@@ -553,14 +554,8 @@ int drm_mm_scan_add_block(struct drm_mm_node *node) + node->node_list.next = &mm->prev_scanned_node->node_list; + mm->prev_scanned_node = node; + +- hole_start = drm_mm_hole_node_start(prev_node); +- hole_end = drm_mm_hole_node_end(prev_node); +- +- adj_start = hole_start; +- adj_end = hole_end; +- +- if (mm->color_adjust) +- mm->color_adjust(prev_node, mm->scan_color, &adj_start, &adj_end); ++ adj_start = hole_start = drm_mm_hole_node_start(prev_node); ++ adj_end = hole_end = drm_mm_hole_node_end(prev_node); + + if (mm->scan_check_range) { + if (adj_start < mm->scan_start) +@@ -569,11 +564,14 @@ int drm_mm_scan_add_block(struct drm_mm_node *node) + adj_end = mm->scan_end; + } + ++ if (mm->color_adjust) ++ mm->color_adjust(prev_node, mm->scan_color, ++ &adj_start, &adj_end); ++ + if (check_free_hole(adj_start, adj_end, + mm->scan_size, mm->scan_alignment)) { + mm->scan_hit_start = hole_start; +- mm->scan_hit_size = hole_end; +- ++ mm->scan_hit_end = hole_end; + return 1; + } + +@@ -609,19 +607,10 @@ int drm_mm_scan_remove_block(struct drm_mm_node *node) + node_list); + + prev_node->hole_follows = node->scanned_preceeds_hole; +- INIT_LIST_HEAD(&node->node_list); + list_add(&node->node_list, &prev_node->node_list); + +- /* Only need to check for containement because start&size for the +- * complete resulting free block (not just the desired part) is +- * stored. */ +- if (node->start >= mm->scan_hit_start && +- node->start + node->size +- <= mm->scan_hit_start + mm->scan_hit_size) { +- return 1; +- } +- +- return 0; ++ return (drm_mm_hole_node_end(node) > mm->scan_hit_start && ++ node->start < mm->scan_hit_end); + } + EXPORT_SYMBOL(drm_mm_scan_remove_block); + +diff --git a/include/drm/drm_mm.h b/include/drm/drm_mm.h +index 06d7f79..a1b66b7 100644 +--- a/include/drm/drm_mm.h ++++ b/include/drm/drm_mm.h +@@ -70,7 +70,7 @@ struct drm_mm { + unsigned long scan_color; + unsigned long scan_size; + unsigned long scan_hit_start; +- unsigned scan_hit_size; ++ unsigned long scan_hit_end; + unsigned scanned_blocks; + unsigned long scan_start; + unsigned long scan_end; +-- +1.7.10.4 + diff --git a/linux/fat-3.6.x.patch b/linux/fat-3.6.x.patch new file mode 100644 index 000000000..d8deeb788 --- /dev/null +++ b/linux/fat-3.6.x.patch @@ -0,0 +1,33 @@ +From: Dave Reisner +Date: Thu, 29 Nov 2012 03:18:52 +0000 (+1100) +Subject: fs/fat: strip "cp" prefix from codepage in display +X-Git-Tag: next-20121130~1^2~97 +X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fnext%2Flinux-next.git;a=commitdiff_plain;h=f15914873184cc3f2a8d590fa4f7e32ab0a8a405 + +fs/fat: strip "cp" prefix from codepage in display + +Option parsing code expects an unsigned integer for the codepage option, +but prefixes and stores this option with "cp" before passing to +load_nls(). This makes the displayed option in /proc an invalid one. +Strip the prefix when printing so that the displayed option is valid for +reuse. + +Signed-off-by: Dave Reisner +Acked-by: OGAWA Hirofumi +Signed-off-by: Andrew Morton +--- + +diff --git a/fs/fat/inode.c b/fs/fat/inode.c +index 3b733a7..3580681 100644 +--- a/fs/fat/inode.c ++++ b/fs/fat/inode.c +@@ -726,7 +726,8 @@ static int fat_show_options(struct seq_file *m, struct dentry *root) + if (opts->allow_utime) + seq_printf(m, ",allow_utime=%04o", opts->allow_utime); + if (sbi->nls_disk) +- seq_printf(m, ",codepage=%s", sbi->nls_disk->charset); ++ /* strip "cp" prefix from displayed option */ ++ seq_printf(m, ",codepage=%s", &sbi->nls_disk->charset[2]); + if (isvfat) { + if (sbi->nls_io) + seq_printf(m, ",iocharset=%s", sbi->nls_io->charset); diff --git a/linux/fix-watchdog-3.7.patch b/linux/fix-watchdog-3.7.patch new file mode 100644 index 000000000..fe4431604 --- /dev/null +++ b/linux/fix-watchdog-3.7.patch @@ -0,0 +1,38 @@ +X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git;a=blobdiff_plain;f=kernel%2Fwatchdog.c;h=75a2ab3d0b0208dfa51e40339ffd00206622732e;hp=997c6a16ec2278969a10f251f63f237e7559d42e;hb=3935e89505a1c3ab3f3b0c7ef0eae54124f48905;hpb=74779e22261172ea728b989310f6ecc991b57d62 + +diff --git a/kernel/watchdog.c b/kernel/watchdog.c +index 997c6a1..75a2ab3 100644 +--- a/kernel/watchdog.c ++++ b/kernel/watchdog.c +@@ -344,6 +344,10 @@ static void watchdog_enable(unsigned int cpu) + { + struct hrtimer *hrtimer = &__raw_get_cpu_var(watchdog_hrtimer); + ++ /* kick off the timer for the hardlockup detector */ ++ hrtimer_init(hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); ++ hrtimer->function = watchdog_timer_fn; ++ + if (!watchdog_enabled) { + kthread_park(current); + return; +@@ -352,10 +356,6 @@ static void watchdog_enable(unsigned int cpu) + /* Enable the perf event */ + watchdog_nmi_enable(cpu); + +- /* kick off the timer for the hardlockup detector */ +- hrtimer_init(hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); +- hrtimer->function = watchdog_timer_fn; +- + /* done here because hrtimer_start can only pin to smp_processor_id() */ + hrtimer_start(hrtimer, ns_to_ktime(sample_period), + HRTIMER_MODE_REL_PINNED); +@@ -369,9 +369,6 @@ static void watchdog_disable(unsigned int cpu) + { + struct hrtimer *hrtimer = &__raw_get_cpu_var(watchdog_hrtimer); + +- if (!watchdog_enabled) +- return; +- + watchdog_set_prio(SCHED_NORMAL, 0); + hrtimer_cancel(hrtimer); + /* disable the perf event */ diff --git a/linux/linux.install b/linux/linux.install index 0c69ecb09..a618565ea 100644 --- a/linux/linux.install +++ b/linux/linux.install @@ -2,7 +2,7 @@ # arg 2: the old package version KERNEL_NAME= -KERNEL_VERSION=3.6.6-1-CHAKRA +KERNEL_VERSION=3.7.2-1-CHAKRA # set a sane PATH to ensure that critical utils like depmod will be found export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'