Push to branch refs/heads/master:
a3ceb2b57fa71c91079f86c1092553f14c63c2d2 -->
  2fb4b2cae16e4276e05fda61f3d1043563c42cab

 .mailmap                                           |    5 +
 CREDITS                                            |    7 +-
 Documentation/filesystems/00-INDEX                 |    2 +
 Documentation/filesystems/unionfs/00-INDEX         |   10 +
 Documentation/filesystems/unionfs/concepts.txt     |  287 +++++
 Documentation/filesystems/unionfs/issues.txt       |   28 +
 Documentation/filesystems/unionfs/rename.txt       |   31 +
 Documentation/filesystems/unionfs/usage.txt        |  134 +++
 MAINTAINERS                                        |   11 +-
 Makefile                                           |    2 +-
 arch/arm/boot/dts/hi3620.dtsi                      |    2 +-
 arch/arm/boot/dts/omap3-n900.dts                   |    2 +-
 arch/arm/boot/dts/r8a7791.dtsi                     |    4 +-
 arch/arm/crypto/aesbs-glue.c                       |   10 +-
 arch/arm/include/asm/mach/arch.h                   |    1 +
 arch/arm/kernel/devtree.c                          |    8 +-
 arch/arm/mach-exynos/exynos.c                      |   10 +
 arch/arm/mach-omap2/gpmc-nand.c                    |   18 +-
 arch/arm/mach-omap2/omap4-common.c                 |    4 +
 arch/arm/xen/grant-table.c                         |    5 +
 arch/arm64/crypto/aes-glue.c                       |   12 +-
 arch/powerpc/kernel/rtas_flash.c                   |    6 +-
 arch/powerpc/perf/core-book3s.c                    |    6 +-
 arch/powerpc/platforms/powernv/opal-elog.c         |    4 +-
 arch/x86/kernel/cpu/intel.c                        |   22 +-
 arch/x86/kernel/cpu/intel_cacheinfo.c              |   12 +
 arch/x86/kernel/cpu/mcheck/mce.c                   |   10 +-
 arch/x86/kernel/cpu/perf_event.c                   |    3 +
 arch/x86/kernel/cpu/perf_event.h                   |   12 +-
 arch/x86/kernel/cpu/perf_event_intel.c             |   69 +-
 arch/x86/kernel/cpu/perf_event_intel_ds.c          |    6 +-
 arch/x86/kernel/cpu/perf_event_intel_uncore.c      |   11 +-
 arch/x86/kernel/entry_32.S                         |    9 +-
 arch/x86/kernel/kprobes/core.c                     |    3 +
 arch/x86/xen/grant-table.c                         |  148 ++-
 crypto/af_alg.c                                    |    2 +
 drivers/clk/ti/clk-7xx.c                           |    7 +-
 drivers/firewire/ohci.c                            |    4 +-
 drivers/isdn/gigaset/bas-gigaset.c                 |    1 +
 drivers/net/can/c_can/c_can_platform.c             |    3 +-
 drivers/net/ethernet/amd/xgbe/xgbe-main.c          |    3 +-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x.h        |    1 +
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c    |    9 +
 .../net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c    |    1 +
 drivers/net/ethernet/broadcom/genet/bcmgenet.c     |    5 +
 drivers/net/ethernet/sun/sunvnet.c                 |   22 +-
 drivers/net/hyperv/netvsc.c                        |    4 +-
 drivers/net/phy/mdio_bus.c                         |    1 +
 drivers/net/phy/phy_device.c                       |   15 +-
 drivers/net/usb/cdc_ether.c                        |   16 +
 drivers/net/usb/r8152.c                            |    7 +-
 drivers/net/vxlan.c                                |    2 +-
 drivers/net/wireless/ath/ath9k/xmit.c              |    9 +
 drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c        |   15 +-
 drivers/net/wireless/iwlwifi/mvm/mac80211.c        |    7 -
 drivers/of/fdt.c                                   |   66 +-
 drivers/pnp/pnpacpi/core.c                         |    3 +-
 drivers/rapidio/devices/tsi721_dma.c               |    8 +-
 drivers/scsi/scsi_lib.c                            |    8 +
 drivers/xen/grant-table.c                          |    9 +-
 fs/Kconfig                                         |    1 +
 fs/Makefile                                        |    1 +
 fs/afs/main.c                                      |    4 +-
 fs/direct-io.c                                     |   14 +-
 fs/namei.c                                         |    3 +-
 fs/splice.c                                        |   22 +-
 fs/unionfs/Kconfig                                 |   23 +
 fs/unionfs/Makefile                                |   17 +
 fs/unionfs/commonfops.c                            |  957 +++++++++++++++++
 fs/unionfs/copyup.c                                |  899 ++++++++++++++++
 fs/unionfs/debug.c                                 |  531 ++++++++++
 fs/unionfs/dentry.c                                |  398 +++++++
 fs/unionfs/dirfops.c                               |  306 ++++++
 fs/unionfs/dirhelper.c                             |  157 +++
 fs/unionfs/fanout.h                                |  407 +++++++
 fs/unionfs/file.c                                  |  386 +++++++
 fs/unionfs/inode.c                                 | 1110 ++++++++++++++++++++
 fs/unionfs/lookup.c                                |  501 +++++++++
 fs/unionfs/main.c                                  |  764 ++++++++++++++
 fs/unionfs/mmap.c                                  |  125 +++
 fs/unionfs/rdstate.c                               |  285 +++++
 fs/unionfs/rename.c                                |  518 +++++++++
 fs/unionfs/sioq.c                                  |  101 ++
 fs/unionfs/sioq.h                                  |   91 ++
 fs/unionfs/subr.c                                  |   95 ++
 fs/unionfs/super.c                                 | 1030 ++++++++++++++++++
 fs/unionfs/union.h                                 |  668 ++++++++++++
 fs/unionfs/unlink.c                                |  278 +++++
 fs/unionfs/whiteout.c                              |  573 ++++++++++
 fs/unionfs/xattr.c                                 |  173 +++
 include/dt-bindings/pinctrl/dra.h                  |    7 +-
 include/linux/hugetlb.h                            |    1 +
 include/linux/namei.h                              |    2 +
 include/linux/of_fdt.h                             |    3 +
 include/linux/splice.h                             |    5 +
 include/linux/union_fs.h                           |   22 +
 include/net/ip.h                                   |   11 +-
 include/uapi/linux/magic.h                         |    2 +
 include/xen/grant_table.h                          |    1 +
 kernel/events/core.c                               |   32 +-
 kernel/kexec.c                                     |    4 +
 kernel/kprobes.c                                   |   14 +-
 kernel/rcu/rcutorture.c                            |    4 +-
 mm/filemap.c                                       |   13 +-
 mm/hugetlb.c                                       |    2 +-
 mm/memcontrol.c                                    |    4 +
 mm/memory-failure.c                                |   14 +-
 mm/memory.c                                        |   21 +-
 mm/page-writeback.c                                |    6 +-
 mm/page_alloc.c                                    |   31 +-
 net/compat.c                                       |    9 +-
 net/core/iovec.c                                   |    6 +-
 net/core/neighbour.c                               |    2 +-
 net/ipv4/route.c                                   |   32 +-
 net/ipv6/ip6_output.c                              |    2 +
 net/mac80211/cfg.c                                 |    5 +-
 net/mac80211/tx.c                                  |   20 +-
 net/netfilter/ipvs/ip_vs_conn.c                    |    1 -
 net/sctp/associola.c                               |    1 +
 net/wireless/trace.h                               |    3 +-
 net/xfrm/xfrm_policy.c                             |    2 +
 net/xfrm/xfrm_user.c                               |    7 +-
 security/security.c                                |    1 +
 virt/kvm/arm/vgic.c                                |   24 +-
 124 files changed, 11629 insertions(+), 265 deletions(-)

commit 2fb4b2cae16e4276e05fda61f3d1043563c42cab
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Aug 1 23:06:47 2014 -0400

    Unionfs: update unionfs_fsync
    
    In v3.16 generic_file_fsync will access ->i_sb->s_bdev->bd_disk, but
    s_bdev is NULL for unionfs inode.  This will trigger a kernel panic in
    xfstests generic/075, generic/091, etc. as of  kernel v3.16-rc1.
    
    This patch fixes this issue by using __generic_file_fsync, a new
    interface introduced in v3.16.
    
    Signed-off-by: Mengyang Li <li.mengy...@stonybrook.edu>
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 9f71ca51d6d12a6a63f89d81677a564bdd205a0c
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Thu May 15 00:54:09 2014 -0400

    Unionfs: implement vm_ops->page_mkwrite
    
    Some file systems (e.g., ext4) require it.  Reported by Ted Ts'o.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 70c4c2818ba30726491014d141f5a9ab7e5b3784
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri May 9 14:58:20 2014 -0400

    Unionfs: fix ->readdir
    
    It's enough to use llseek to set lower dir pos.  No need to also set
    lower_file->f_pos directly, as it breaks readdir for ext4 and other
    ext-based file systems.  Reported by Vaibhav Nagarnaik and Ted Ts'o.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 86b5c14330848cc4e1d43f1a0fb4cbf32b026445
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sun Apr 27 00:20:57 2014 -0400

    Unionfs: use new vfs_rename prototype
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit ed3bc59b950eaa1362edd26beecc52da5de0031c
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Thu Apr 3 14:30:21 2014 -0400

    Unionfs: update maintainers
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit a72dbfefb77fd982347b0df5166f4c40d845de98
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Mar 28 12:01:32 2014 -0400

    Unionfs: Release 2.5.13
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 198584234c37b6fd6d76f346001ae904f3b911de
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Jan 21 01:43:58 2014 -0500

    Unionfs: 2014 Copyright update
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 9aeb0acd486448fb7e4ae055791a28055c3d4d43
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Wed Dec 11 23:56:40 2013 -0500

    Unionfs: use new %pd printf for printing dentry name
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit cf4bc3ae005d1a0931bd7791431684f266e20b22
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Dec 2 16:19:41 2013 -0500

    Unionfs: Release 2.5.12
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 1b98ad2ae6f01383a86f6047fddd5911aab0f1a4
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Wed Nov 27 20:01:01 2013 -0500

    Unionfs: Release 2.5.12
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 13d8ee2ac8e468dbeffa409e5060773cd18f1391
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Wed Nov 27 20:01:00 2013 -0500

    Unionfs: copyright update for 2013
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 782d314c56e0a0b9d5d2f6d0d9270231cf9dc6d4
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Wed Nov 27 20:00:53 2013 -0500

    Unionfs: port to 3.13-rc1
    
    Use file_inode helper.
    
    Add NULL extra arg to vfs_* methods and notify_change where it takes a
    delegated inode.
    
    Check DCACHE_OP_REVALIDATE flag in ->d_revalidate.
    
    ->setattr implemented, but not used yet.
    
    Force our root dentry to be of type DIR.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 8ee1ddeb6cd99fbd176de5051c8ec2402e8b3d4e
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 26 22:01:34 2013 -0500

    Unionfs: port to 3.12
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit f58df424f8458baea1f8e6245c3ab85d66f9ff8a
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 26 22:01:34 2013 -0500

    Unionfs: port to 3.11
    
    Readdir VFS interface overhauled between 3.10 and 3.11.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 9f964ba19c4dfaa22913a8801d67af32b9971c5a
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 26 22:01:34 2013 -0500

    Unionfs: port to 3.10
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 2f64b891c4e349d155ec55c57e9beb8e2a14a2e4
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 26 22:01:34 2013 -0500

    Unionfs: port to 3.9
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 275f5f3f642f5bb13ebc4a83f73df027e600be35
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 26 22:01:34 2013 -0500

    Unionfs: port to 3.8
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 064a132c023534d25270d5363a94111a009410d9
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 26 22:01:34 2013 -0500

    Unionfs: port to 3.6
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit d150f3134e29617ec2f5e90a926962c3e1042738
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 26 22:01:34 2013 -0500

    Uniofs: port to 3.5
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit cb591510075745637a979e584afc6e02cb07d52a
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 26 22:01:34 2013 -0500

    Unionfs: namei fixes and misc
    
    Updated lookup_one_len_nd(), update MAINTAINERS, remove old comments and
    copyrights.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 446a4ebedd2efeae399ef8e1e8ceeba3792fb90b
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 26 22:01:34 2013 -0500

    Unionfs: port to 3.4
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit d37e928ab5cd37ae16590020747679119a91ced9
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Feb 10 16:12:48 2012 -0500

    Unionfs: Release 2.5.11
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 571c7b1e03326fa7a470cfa9825b63a8f8a1797a
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Feb 10 15:36:44 2012 -0500

    Unionfs: properly check for error in ->mount
    
    Record dev_name correctly for branch-management.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 1e713bac0ef818bffe3c9463278667dcce493b3f
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Feb 10 15:36:44 2012 -0500

    Unionfs: update ->show_options prototype
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit e317d90adb7b5d0477ec56ed6b4f4190886f6d83
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Feb 10 15:36:43 2012 -0500

    patch unionfs-debug-fixes.patch

commit 883308646359ec7e0c4b5c1ea627942d34de1317
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Feb 10 15:36:36 2012 -0500

    Unionfs: use mode_t
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit a981f1bfe0f4d9f39e47c2287f06ae2a1f83a1dd
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Feb 10 15:36:33 2012 -0500

    Unionfs: use set_nlinks
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit a4eebf14b96eec49b4f0e45b935a35cec609d1ec
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Wed Sep 7 00:51:50 2011 -0400

    Unionfs: Release 2.5.10
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit a85393a056ef3268a62249bf3c65131c6db8c7ee
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Sep 6 01:06:42 2011 -0400

    Unionfs: debug - don't complain when d_deleted dentries
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 064f8b5734f362ad6097ecb23a7d4a590efb6af1
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Sep 6 01:05:42 2011 -0400

    Unionfs: define some debug macros to noop if DEBUG is off
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 352204f9c19e5b9f5e795fd9e65b9eea9fd2532e
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Sep 6 01:04:42 2011 -0400

    Unionfs: ->open cleanup and fixes
    
    Cleanup the code from repeated references the same dentry/mnt.
    In __open_dir get lower_mnt from parent if can't find it from child.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 6b4e44a91d56be74372859cc814fd49f1910526d
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Sep 6 01:03:42 2011 -0400

    Unionfs: fix oops bug in file_revalidate
    
    Reverses commit "3e9b8b599aa6832e464f86872ca37840090de630" (in unionfs-3.1
    tree) which did this:
    
       ``Unionfs: revalidate files which are open but unlinked
    
       Need to re-open the file if the starting dentry is on a higher priority
       branch than the currently opened file (which could happen when we 
ftruncate
       an opened, but unlinked file).''
    
    That fix caused oopses in file_revalidate for some people.  So, I'm
    reversing that old fix: it's possible that bug is already fixed thanks to
    other code changes.  If not, we'll need to test and fix revalidation of
    open/unlinked files differently and carefully.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit dfb5a5252fb8679f26120e61a2be09859c4aa98d
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Sep 6 01:02:42 2011 -0400

    Wrapfs: use d_alloc_root
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 663c9cb64f8fd71b6bef0d167bb0da108b5af976
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Sep 6 01:01:42 2011 -0400

    Unionfs: use d_set_d_op
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 58e89d04f62dbf6a0cfe7d8d410933caac8e30e5
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Sep 6 01:00:42 2011 -0400

    Unionfs: use updated vfs_path_lookup prototype
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 9e0b9a36483f219c50c4d340e3f7f2652f613d37
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Sep 6 00:59:42 2011 -0400

    Unionfs: support LOOKUP_RCU in ->d_revalidate
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 38c1c2d9c6f4ea8e95ce3e5baaf7096126998739
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Sep 6 00:58:42 2011 -0400

    Unionfs: new ->permission prototype and fixes
    
    Also remove lookup and locking of dentry in unionfs_permission.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 485fa033ca48fb0dfd07089d35e0ac6e5015e722
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Sep 6 00:57:42 2011 -0400

    Unionfs: ->fsync updates for new prototype
    
    Also use lockdep_off/on in unionfs_fsync.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 9b2e3cf7cd1332b1b7a3d34480d44153c412e377
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Jun 25 19:08:02 2011 -0400

    Unionfs: Release 2.5.9.2
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit fac17078429b9677b706ab569537c22c189c812d
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri May 13 22:25:01 2011 -0400

    Unionfs: Release 2.5.9.1
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit c3341c4dd6a52500ab745a99bf4e0bda3c87083c
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue May 3 22:42:17 2011 -0400

    Unionfs: compat_ioctl fixes
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit dfd0a7422db71d78c437cd4a269ec392b6e5ff16
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sun May 1 01:15:26 2011 -0400

    Unionfs: Release 2.5.9
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 1d101c77504a1e4395c2cb7c111d2cd043e2bfa9
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sun May 1 01:14:26 2011 -0400

    Unionfs: copyright update for 2011
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit e06ff218b630f73f64dbcc596593ad351dbea58f
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Apr 30 01:46:57 2011 -0400

    Unionfs: avoid lockdep warnings in show_options
    
    Due to namespace_sem lock taken.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 76871500bdfbb0c4d8c1f8ca455d55c2e82293e4
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Apr 30 01:34:00 2011 -0400

    Unionfs: pass nameidata when lower file system is NFS
    
    Use new lookup_one_len_nd() and pass nameidata, now required by NFS3, else
    you get an oops.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit c644733f5b66f74e1e55ab5e013e297bc75e3065
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Apr 30 01:34:00 2011 -0400

    Unionfs: reorder initializations in ->permission
    
    First igrab, then reference the inode in question; and do all this after
    checking for IPERM_FLAG_RCU.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 33827b92688aa072adbc1a04a5fe896b63b61031
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Apr 30 01:33:59 2011 -0400

    Unionfs: cleanup state in ->permission before returning ECHILD
    
    Fixes bugs that cased leftover dentries upon unmount, causing oopses.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit d3b734f948abc6acb542454cfce357bb9a2ea63e
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Apr 30 01:33:58 2011 -0400

    Unionfs: remove unused fgen in file_release
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 81296a3dd8bfbe095a87d2668bbd93a22e5d98d2
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Apr 30 01:33:58 2011 -0400

    VFS: introduce lookup_one_len_nd
    
    Just like lookup_one_len() but passes a nameidata parameter, which is now
    required by NFS3, else you get an oops.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 17740dfff0797a10d8d1cf3f001dc0a0c71965bc
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Apr 30 01:33:57 2011 -0400

    Unionfs: force only one open lower file after copyup in open(2)
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 7256d64e2abab254015bd991ac0543e193182ad6
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Apr 30 01:33:57 2011 -0400

    Unionfs: revalidate files which are open but unlinked
    
    Need to re-open the file if the starting dentry is on a higher priority
    branch than the currently opened file (which could happen when we ftruncate
    an opened, but unlinked file).
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 5b6879fa588556f1749d2d2664d88a03f0f0e537
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Apr 30 01:33:56 2011 -0400

    Unionfs: remove whiteout if regular file also exists
    
    We used to return EIO then, but it's safer to cleanup such a situation, if
    it occurs, in check_unlink_whiteout, because we know for a fact that we want
    to delete a whiteout if one exists.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 66b40c119d69f5f182416a43047fb49467d1ab08
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Apr 30 01:33:55 2011 -0400

    Unionfs: remove whiteout of opened but unlinked file from readonly branch
    
    If we unlink an opened file in a readonly branch, then we create a whiteout.
    But then if if ftruncate it, we copyup a zero-length file.  So we have to
    delete the whiteout.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 831464a7f11d77714957ed2778ae612954d759ee
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Apr 30 01:33:55 2011 -0400

    Unionfs: find lower inode of unlinked opened files in setattr
    
    To find the inode of a lower file that's open but unlinked, we cannot find
    it via unionfs_lower_inode as that's NULL; but we can get it properly from
    lower_dentry->d_inode.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 5110cbda2c342a65aad13c327fb940cb736fada8
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Apr 30 01:33:19 2011 -0400

    Unionfs: port to 2.6.39
    
    Remove lock/unlock_kernel in ->fasync.
    Convert from ->get_sb to ->mount op.
    Remove include to smp_lock.h, added sched.h.
    Convert from path_lookup(nd) to kern_path(path).
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 1ea03c02bebcb31ea97467ae3a3c43c35920d0f4
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Apr 30 01:32:19 2011 -0400

    Unionfs: Release 2.5.8
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 3e56c1c6b70179c5c22baf5017f942acb07350b3
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Apr 30 01:32:18 2011 -0400

    Unionfs: implement replacement for mnt_get_count
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit c6ad4c48c12a8ddf229d01dc62b43ca1127867fa
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Apr 30 01:32:17 2011 -0400

    Unionfs: update ->permission prototye and code for new iperm flag
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit c153f0ac350f6bc504d690da2b034cd2350ae054
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Apr 30 01:32:16 2011 -0400

    Unionfs: update name of macro for embedded dentry name length
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 7926c8fa3cd83b30478a785ae993b9c7c947f8c4
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Apr 30 01:31:29 2011 -0400

    Unionfs: ->setattr fixes
    
    Call inode_check_ok first thing on our inode.
    Pass lower_file in struct iattr to lower file system.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit f014a12dc67208f2a4408fd38c52f5b604496e42
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Apr 30 01:30:29 2011 -0400

    Unionfs: don't dereference null pointers if dir="" was given
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 4799b7e4023ed78ecf3465d020f2382774bd2f76
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Thu Nov 4 01:07:41 2010 -0400

    Unionfs: Release 2.5.7
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit b9691139c8805550f43c86491740707b11207d70
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 2 18:47:42 2010 -0400

    Unionfs: call truncate_inode_pages+end_writeback in ->evict_inode
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 14256ec7eca1ec05dd9e10ebd3f0e8f074fb86b0
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Sep 24 01:25:04 2010 -0400

    Unionfs: Release 2.5.6
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 1d2f06b23e703f6e5468ffdcf5393fcaabd57750
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Sep 24 03:10:09 2010 -0400

    Unionfs: pass valid vfsmount to vfs_statfs
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit b5129f0472a1732c57b027baa63099c6e08937ac
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Sep 24 02:21:08 2010 -0400

    Unionfs: run check_nd only if nd is valid in ->put_link
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit f1c63caf7961c725c92f0e186621eeb9c0ba9d30
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Sep 24 02:27:44 2010 -0400

    Unionfs: support ->unlocked_ioctl and ->compat_ioctl
    
    Old ->ioctl was split into ->unlocked_ioctl and ->compat_ioctl.  Compat
    version doesn't need to lock_kernel any longer.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 01cad9646fa6205429990cc4b592e343f8fff032
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Wed Aug 11 02:13:49 2010 -0400

    Unionfs: Release 2.5.5
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit b2f0c4a928f2f6b8de2ba35ab4fce92b4e9cdb32
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Wed Aug 11 01:30:28 2010 -0400

    Unionfs: new vfs_statfs and ->evict_inode prototypes
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 13e64bb69e14ecac2c7e9fd8d197ec76ca890e36
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Aug 6 01:48:52 2010 -0400

    Unionfs: update fsync prototype
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 613a8f3699adfe70a94945595cf60439fefc3965
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Aug 6 01:48:45 2010 -0400

    Unionfs: update write_inode prototype
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 7a048eb0cc7e986d9f233a3e720b40b404c7a431
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Thu Feb 25 20:36:28 2010 -0500

    Unionfs: Release 2.5.4
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 42969a584dd55117afcce6ab9e53709bb8134385
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Thu Feb 25 20:23:27 2010 -0500

    Unionfs: update copyright year to 2010
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 46d05638b7da09749d6cfac829c865ec60e1a21a
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Thu Dec 3 21:23:24 2009 -0500

    patch unionfs-remove-unnecessary-lockdep-off-on-in-rmdir.patch

commit 208b2c1ddff326e266ed48420f79b89766ba2d94
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Thu Dec 3 20:58:43 2009 -0500

    patch unionfs-remove-unnecessary-lockdep-off-on-in-rename.patch

commit c0e1cda9f0e916d88dda62975cef2361e1e2d0e3
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sun Nov 8 18:18:56 2009 -0500

    Unionfs: unlock lower parent inode correctly on error path
    
    Bug fix: on some errors, lower directory inode may remain locked and hold a
    reference.  This was in ->create, ->symlink, and ->mknod.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit a671ec2fe8e8a5ca461258f8759daa0120502be9
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Thu Dec 3 18:51:37 2009 -0500

    Unionfs: make our lower_vm_ops pointer a const, to match VFS
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 76d3d322738ec90a64a12d22f30d505e9c70567e
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Sep 22 18:22:19 2009 -0400

    Unionfs: Release 2.5.3
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit e10120b43c66d079636fdbd07cdbeb21e9b9371e
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Sep 22 17:27:30 2009 -0400

    Unionfs: handle an open-unlink-ftruncate sequence
    
    If someone calls open(), then unlink(), then ftruncate() on a file (rare,
    but possible), then it's possible for unionfs to get an unlinked inode which
    doesn't have an inode->i_sb and its inode->i_ino is zero.  Don't oops in
    that case.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 4f2a70328f09c89837df9e7b53cd9aa43a0a69cb
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Sep 22 17:27:23 2009 -0400

    Unionfs: fix readonly nfs2/3 permission handling
    
    In unionfs_permission: NFSv2/3 return EACCES on readonly-exported, locally
    readonly-mounted file systems, instead of EROFS like other file systems do.
    So we have no choice here but to intercept this and ignore it for NFS
    branches marked readonly.  Specifically, we avoid using NFS's own "broken"
    ->permission method, and rely on generic_permission() to do basic checking
    for us.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit ac0ae03add4f7796c8cf48573781454559b59e4a
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Thu Aug 6 15:26:01 2009 -0400

    Unionfs: Release 2.5.2
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit a68e9c8d1ec28c2413cad84fae84ddfb0da01ec8
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon May 25 23:15:17 2009 -0400

    Unionfs: prevent lockdep false positives in mmap
    
    Due to a new (and probably overzealous) lockdep-enabled might_fault().
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 70492d5dbfbdead24f7d99b8dcb64668ef02d076
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Thu May 21 21:02:31 2009 -0400

    Unionfs: lock base inode mutex around lookup_one_len
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit ba901c57e0f63faa3ac22c935495b49aa411b4c5
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue May 26 00:52:48 2009 -0400

    Unionfs: merge fixes from rebasing to 2.6.29.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 655e3d715907dea51a48bef50a8b3e81b0420c9a
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sun Jan 18 21:22:29 2009 -0500

    Unionfs: release 2.5.1
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit abe03b16ddbc9d6129a09230de9decf5efc1585e
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 19 00:38:32 2009 -0500

    Unionfs: update maintainers
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit edf9b49bbe261351df77e10aa9080257462b4edc
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sun Jan 18 22:22:06 2009 -0500

    Unionfs: update copyrights for 2009
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 9f65194c3492d7e49c74c6010f035e71cb2ce312
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sun Jan 18 21:00:46 2009 -0500

    Unionfs: create whiteout in correct dir after rename with copyup
    
    Fixes bug #625: a file renamed/moved into a directory, if resulted in a
    copyup with a whiteout creation, could cause the whiteout to be created in
    the wrong dir.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 8470b45c3beb39db9fea99e64610f7c363d30e34
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Jan 17 03:27:51 2009 -0500

    Unionfs: prevent lockdep false positives in mmap
    
    Due to a new (and probably overzealous) lockdep-enabled might_fault().
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit ac72fe1eb30e3bdebcc4140dbf8a837dabe9f85d
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Nov 7 16:49:48 2008 -0500

    Unionfs: use path_put in mount code
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit d90bf4edeca08e781d115af077ed9dc6e83c4162
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Nov 7 16:50:16 2008 -0500

    Unionfs: handle partial copyup errors gracefully
    
    Don't leave any dentries behind if copying up the inode (or setting its
    permission, i.e., using TOMOYO) failed.
    
    CC: Tetsuo Handa <penguin-ker...@i-love.sakura.ne.jp>
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit bec56da79a4d0bb2f89b442911334663abc5ce5b
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 12 22:02:11 2009 -0500

    Unionfs: use the new struct cred API
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 291162a8c9f8b677c96e16b2c93892c5fafbc2be
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 12 22:01:15 2009 -0500

    Unionfs: dentry_open takes a struct cred now
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 3b8974ce9a41fb63ee06bb76d5b63aebbc300350
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 12 22:16:46 2009 -0500

    Security/VFS: re-export security_inode_permission symbol
    
    Unionfs needs it because it has to do everything in there, but skip the
    EROFS test (so copyup can be triggered).  There's no easy way to execute
    parts of security_inode_permission() without copying  and duplicating much
    of its functionality, so exporting the symbol seems the simplest.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit c855d5cb22124557a3e6a4531ec33e122fc76408
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Sep 20 10:54:59 2008 -0400

    Unionfs: release 2.5
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 18728fff4fe77d20b86c5181d0c4736bdb958db3
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Thu Sep 18 19:55:19 2008 -0400

    Unionfs: unionfs_permission locking fixes
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 04d6c889ff5a90fbade64d7dd75c6df548be1079
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Sep 19 00:44:00 2008 -0400

    Unionfs: file/dentry revalidation fixes
    
    Cleanup unnecessary code, merge functions together, and handle situation
    where parent dentry may not be valid.

commit 08b4b67a98225566f47ee9d2a221808819856e35
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Wed Sep 17 13:52:17 2008 -0400

    Unionfs: remove unused nameidata parameters
    
    In preparation for the VFS removing most/all nameidata from file systems's
    view.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 8096dc063de2341d0e9c0d6b9a2f55448633bf5c
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Wed Sep 17 11:41:28 2008 -0400

    Unionfs: file_release must always succeed
    
    Why does f_op->release return an int if the VFS ignores it?!
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit f695e6cc70c648a7d15ff75736967d028430a1d7
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Wed Sep 17 03:29:35 2008 -0400

    Unionfs: remove redundant file-invariant check in file_revalidate
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

diff --git a/.mailmap b/.mailmap
index df1baba..1ad6873 100644
--- a/.mailmap
+++ b/.mailmap
@@ -62,6 +62,11 @@ Jeff Garzik <jgar...@pretzel.yyz.us>
 Jens Axboe <ax...@suse.de>
 Jens Osterkamp <jens.osterk...@de.ibm.com>
 John Stultz <johns...@us.ibm.com>
+<j...@joshtriplett.org> <j...@freedesktop.org>
+<j...@joshtriplett.org> <j...@kernel.org>
+<j...@joshtriplett.org> <jo...@linux.vnet.ibm.com>
+<j...@joshtriplett.org> <jo...@us.ibm.com>
+<j...@joshtriplett.org> <jo...@vnet.ibm.com>
 Juha Yrjola <at solidboot.com>
 Juha Yrjola <juha.yrj...@nokia.com>
 Juha Yrjola <juha.yrj...@solidboot.com>
diff --git a/CREDITS b/CREDITS
index 28ee151..a80b667 100644
--- a/CREDITS
+++ b/CREDITS
@@ -3511,10 +3511,11 @@ S: MacGregor A.C.T 2615
 S: Australia
 
 N: Josh Triplett
-E: j...@freedesktop.org
-P: 1024D/D0FE7AFB B24A 65C9 1D71 2AC2 DE87  CA26 189B 9946 D0FE 7AFB
-D: rcutorture maintainer
+E: j...@joshtriplett.org
+P: 4096R/8AFF873D 758E 5042 E397 4BA3 3A9C  1E67 0ED9 A3DF 8AFF 873D
+D: RCU and rcutorture
 D: lock annotations, finding and fixing lock bugs
+D: kernel tinification
 
 N: Winfried Trümper
 E: wi...@xpilot.org
diff --git a/MAINTAINERS b/MAINTAINERS
index 718a2bf..5a6051d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -7424,7 +7424,7 @@ S:        Orphan
 F:     drivers/net/wireless/ray*
 
 RCUTORTURE MODULE
-M:     Josh Triplett <j...@freedesktop.org>
+M:     Josh Triplett <j...@joshtriplett.org>
 M:     "Paul E. McKenney" <paul...@linux.vnet.ibm.com>
 L:     linux-ker...@vger.kernel.org
 S:     Supported
diff --git a/Makefile b/Makefile
index 5147f3f..f6a7794 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 VERSION = 3
 PATCHLEVEL = 16
 SUBLEVEL = 0
-EXTRAVERSION = -rc6
+EXTRAVERSION = -rc7
 NAME = Shuffling Zombie Juror
 
 # *DOCUMENTATION*
diff --git a/arch/arm/boot/dts/hi3620.dtsi b/arch/arm/boot/dts/hi3620.dtsi
index ab1116d..83a5b86 100644
--- a/arch/arm/boot/dts/hi3620.dtsi
+++ b/arch/arm/boot/dts/hi3620.dtsi
@@ -73,7 +73,7 @@
 
                L2: l2-cache {
                        compatible = "arm,pl310-cache";
-                       reg = <0xfc10000 0x100000>;
+                       reg = <0x100000 0x100000>;
                        interrupts = <0 15 4>;
                        cache-unified;
                        cache-level = <2>;
diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts
index 1fe45d1..b15f1a7 100644
--- a/arch/arm/boot/dts/omap3-n900.dts
+++ b/arch/arm/boot/dts/omap3-n900.dts
@@ -353,7 +353,7 @@
        };
 
        twl_power: power {
-               compatible = "ti,twl4030-power-n900", 
"ti,twl4030-power-idle-osc-off";
+               compatible = "ti,twl4030-power-n900";
                ti,use_poweroff;
        };
 };
diff --git a/arch/arm/boot/dts/r8a7791.dtsi b/arch/arm/boot/dts/r8a7791.dtsi
index 8d7ffae..79f68ac 100644
--- a/arch/arm/boot/dts/r8a7791.dtsi
+++ b/arch/arm/boot/dts/r8a7791.dtsi
@@ -540,9 +540,9 @@
                        #clock-cells = <0>;
                        clock-output-names = "sd1";
                };
-               sd2_clk: sd3_clk@e615007c {
+               sd2_clk: sd3_clk@e615026c {
                        compatible = "renesas,r8a7791-div6-clock", 
"renesas,cpg-div6-clock";
-                       reg = <0 0xe615007c 0 4>;
+                       reg = <0 0xe615026c 0 4>;
                        clocks = <&pll1_div2_clk>;
                        #clock-cells = <0>;
                        clock-output-names = "sd2";
diff --git a/arch/arm/crypto/aesbs-glue.c b/arch/arm/crypto/aesbs-glue.c
index 4522366..15468fb 100644
--- a/arch/arm/crypto/aesbs-glue.c
+++ b/arch/arm/crypto/aesbs-glue.c
@@ -137,7 +137,7 @@ static int aesbs_cbc_encrypt(struct blkcipher_desc *desc,
                                dst += AES_BLOCK_SIZE;
                        } while (--blocks);
                }
-               err = blkcipher_walk_done(desc, &walk, 0);
+               err = blkcipher_walk_done(desc, &walk, walk.nbytes % 
AES_BLOCK_SIZE);
        }
        return err;
 }
@@ -158,7 +158,7 @@ static int aesbs_cbc_decrypt(struct blkcipher_desc *desc,
                bsaes_cbc_encrypt(walk.src.virt.addr, walk.dst.virt.addr,
                                  walk.nbytes, &ctx->dec, walk.iv);
                kernel_neon_end();
-               err = blkcipher_walk_done(desc, &walk, 0);
+               err = blkcipher_walk_done(desc, &walk, walk.nbytes % 
AES_BLOCK_SIZE);
        }
        while (walk.nbytes) {
                u32 blocks = walk.nbytes / AES_BLOCK_SIZE;
@@ -182,7 +182,7 @@ static int aesbs_cbc_decrypt(struct blkcipher_desc *desc,
                        dst += AES_BLOCK_SIZE;
                        src += AES_BLOCK_SIZE;
                } while (--blocks);
-               err = blkcipher_walk_done(desc, &walk, 0);
+               err = blkcipher_walk_done(desc, &walk, walk.nbytes % 
AES_BLOCK_SIZE);
        }
        return err;
 }
@@ -268,7 +268,7 @@ static int aesbs_xts_encrypt(struct blkcipher_desc *desc,
                bsaes_xts_encrypt(walk.src.virt.addr, walk.dst.virt.addr,
                                  walk.nbytes, &ctx->enc, walk.iv);
                kernel_neon_end();
-               err = blkcipher_walk_done(desc, &walk, 0);
+               err = blkcipher_walk_done(desc, &walk, walk.nbytes % 
AES_BLOCK_SIZE);
        }
        return err;
 }
@@ -292,7 +292,7 @@ static int aesbs_xts_decrypt(struct blkcipher_desc *desc,
                bsaes_xts_decrypt(walk.src.virt.addr, walk.dst.virt.addr,
                                  walk.nbytes, &ctx->dec, walk.iv);
                kernel_neon_end();
-               err = blkcipher_walk_done(desc, &walk, 0);
+               err = blkcipher_walk_done(desc, &walk, walk.nbytes % 
AES_BLOCK_SIZE);
        }
        return err;
 }
diff --git a/arch/arm/include/asm/mach/arch.h b/arch/arm/include/asm/mach/arch.h
index 060a75e..0406cb3 100644
--- a/arch/arm/include/asm/mach/arch.h
+++ b/arch/arm/include/asm/mach/arch.h
@@ -50,6 +50,7 @@ struct machine_desc {
        struct smp_operations   *smp;           /* SMP operations       */
        bool                    (*smp_init)(void);
        void                    (*fixup)(struct tag *, char **);
+       void                    (*dt_fixup)(void);
        void                    (*init_meminfo)(void);
        void                    (*reserve)(void);/* reserve mem blocks  */
        void                    (*map_io)(void);/* IO mapping function  */
diff --git a/arch/arm/kernel/devtree.c b/arch/arm/kernel/devtree.c
index e94a157..11c54de 100644
--- a/arch/arm/kernel/devtree.c
+++ b/arch/arm/kernel/devtree.c
@@ -212,7 +212,7 @@ const struct machine_desc * __init 
setup_machine_fdt(unsigned int dt_phys)
        mdesc_best = &__mach_desc_GENERIC_DT;
 #endif
 
-       if (!dt_phys || !early_init_dt_scan(phys_to_virt(dt_phys)))
+       if (!dt_phys || !early_init_dt_verify(phys_to_virt(dt_phys)))
                return NULL;
 
        mdesc = of_flat_dt_match_machine(mdesc_best, arch_get_next_mach);
@@ -237,6 +237,12 @@ const struct machine_desc * __init 
setup_machine_fdt(unsigned int dt_phys)
                dump_machine_table(); /* does not return */
        }
 
+       /* We really don't want to do this, but sometimes firmware provides 
buggy data */
+       if (mdesc->dt_fixup)
+               mdesc->dt_fixup();
+
+       early_init_dt_scan_nodes();
+
        /* Change machine number to match the mdesc we're using */
        __machine_arch_type = mdesc->nr;
 
diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
index 46d893f..66c9b96 100644
--- a/arch/arm/mach-exynos/exynos.c
+++ b/arch/arm/mach-exynos/exynos.c
@@ -335,6 +335,15 @@ static void __init exynos_reserve(void)
 #endif
 }
 
+static void __init exynos_dt_fixup(void)
+{
+       /*
+        * Some versions of uboot pass garbage entries in the memory node,
+        * use the old CONFIG_ARM_NR_BANKS
+        */
+       of_fdt_limit_memory(8);
+}
+
 DT_MACHINE_START(EXYNOS_DT, "SAMSUNG EXYNOS (Flattened Device Tree)")
        /* Maintainer: Thomas Abraham <thomas.abra...@linaro.org> */
        /* Maintainer: Kukjin Kim <kgene....@samsung.com> */
@@ -348,4 +357,5 @@ DT_MACHINE_START(EXYNOS_DT, "SAMSUNG EXYNOS (Flattened 
Device Tree)")
        .dt_compat      = exynos_dt_compat,
        .restart        = exynos_restart,
        .reserve        = exynos_reserve,
+       .dt_fixup       = exynos_dt_fixup,
 MACHINE_END
diff --git a/arch/arm/mach-omap2/gpmc-nand.c b/arch/arm/mach-omap2/gpmc-nand.c
index 17cd393..93914d2 100644
--- a/arch/arm/mach-omap2/gpmc-nand.c
+++ b/arch/arm/mach-omap2/gpmc-nand.c
@@ -50,6 +50,16 @@ static bool gpmc_hwecc_bch_capable(enum omap_ecc ecc_opt)
                 soc_is_omap54xx() || soc_is_dra7xx())
                return 1;
 
+       if (ecc_opt == OMAP_ECC_BCH4_CODE_HW_DETECTION_SW ||
+                ecc_opt == OMAP_ECC_BCH8_CODE_HW_DETECTION_SW) {
+               if (cpu_is_omap24xx())
+                       return 0;
+               else if (cpu_is_omap3630() && (GET_OMAP_REVISION() == 0))
+                       return 0;
+               else
+                       return 1;
+       }
+
        /* OMAP3xxx do not have ELM engine, so cannot support ECC schemes
         * which require H/W based ECC error detection */
        if ((cpu_is_omap34xx() || cpu_is_omap3630()) &&
@@ -57,14 +67,6 @@ static bool gpmc_hwecc_bch_capable(enum omap_ecc ecc_opt)
                 (ecc_opt == OMAP_ECC_BCH8_CODE_HW)))
                return 0;
 
-       /*
-        * For now, assume 4-bit mode is only supported on OMAP3630 ES1.x, x>=1
-        * and AM33xx derivates. Other chips may be added if confirmed to work.
-        */
-       if ((ecc_opt == OMAP_ECC_BCH4_CODE_HW_DETECTION_SW) &&
-           (!cpu_is_omap3630() || (GET_OMAP_REVISION() == 0)))
-               return 0;
-
        /* legacy platforms support only HAM1 (1-bit Hamming) ECC scheme */
        if (ecc_opt == OMAP_ECC_HAM1_CODE_HW)
                return 1;
diff --git a/arch/arm/mach-omap2/omap4-common.c 
b/arch/arm/mach-omap2/omap4-common.c
index 539e810..a0fe747 100644
--- a/arch/arm/mach-omap2/omap4-common.c
+++ b/arch/arm/mach-omap2/omap4-common.c
@@ -168,6 +168,10 @@ static void omap4_l2c310_write_sec(unsigned long val, 
unsigned reg)
                smc_op = OMAP4_MON_L2X0_PREFETCH_INDEX;
                break;
 
+       case L310_POWER_CTRL:
+               pr_info_once("OMAP L2C310: ROM does not support power control 
setting\n");
+               return;
+
        default:
                WARN_ONCE(1, "OMAP L2C310: ignoring write to reg 0x%x\n", reg);
                return;
diff --git a/arch/arm/xen/grant-table.c b/arch/arm/xen/grant-table.c
index 859a9bb..91cf08b 100644
--- a/arch/arm/xen/grant-table.c
+++ b/arch/arm/xen/grant-table.c
@@ -51,3 +51,8 @@ int arch_gnttab_map_status(uint64_t *frames, unsigned long 
nr_gframes,
 {
        return -ENOSYS;
 }
+
+int arch_gnttab_init(unsigned long nr_shared, unsigned long nr_status)
+{
+       return 0;
+}
diff --git a/arch/arm64/crypto/aes-glue.c b/arch/arm64/crypto/aes-glue.c
index 60f2f4c..79cd911 100644
--- a/arch/arm64/crypto/aes-glue.c
+++ b/arch/arm64/crypto/aes-glue.c
@@ -106,7 +106,7 @@ static int ecb_encrypt(struct blkcipher_desc *desc, struct 
scatterlist *dst,
        for (first = 1; (blocks = (walk.nbytes / AES_BLOCK_SIZE)); first = 0) {
                aes_ecb_encrypt(walk.dst.virt.addr, walk.src.virt.addr,
                                (u8 *)ctx->key_enc, rounds, blocks, first);
-               err = blkcipher_walk_done(desc, &walk, 0);
+               err = blkcipher_walk_done(desc, &walk, walk.nbytes % 
AES_BLOCK_SIZE);
        }
        kernel_neon_end();
        return err;
@@ -128,7 +128,7 @@ static int ecb_decrypt(struct blkcipher_desc *desc, struct 
scatterlist *dst,
        for (first = 1; (blocks = (walk.nbytes / AES_BLOCK_SIZE)); first = 0) {
                aes_ecb_decrypt(walk.dst.virt.addr, walk.src.virt.addr,
                                (u8 *)ctx->key_dec, rounds, blocks, first);
-               err = blkcipher_walk_done(desc, &walk, 0);
+               err = blkcipher_walk_done(desc, &walk, walk.nbytes % 
AES_BLOCK_SIZE);
        }
        kernel_neon_end();
        return err;
@@ -151,7 +151,7 @@ static int cbc_encrypt(struct blkcipher_desc *desc, struct 
scatterlist *dst,
                aes_cbc_encrypt(walk.dst.virt.addr, walk.src.virt.addr,
                                (u8 *)ctx->key_enc, rounds, blocks, walk.iv,
                                first);
-               err = blkcipher_walk_done(desc, &walk, 0);
+               err = blkcipher_walk_done(desc, &walk, walk.nbytes % 
AES_BLOCK_SIZE);
        }
        kernel_neon_end();
        return err;
@@ -174,7 +174,7 @@ static int cbc_decrypt(struct blkcipher_desc *desc, struct 
scatterlist *dst,
                aes_cbc_decrypt(walk.dst.virt.addr, walk.src.virt.addr,
                                (u8 *)ctx->key_dec, rounds, blocks, walk.iv,
                                first);
-               err = blkcipher_walk_done(desc, &walk, 0);
+               err = blkcipher_walk_done(desc, &walk, walk.nbytes % 
AES_BLOCK_SIZE);
        }
        kernel_neon_end();
        return err;
@@ -243,7 +243,7 @@ static int xts_encrypt(struct blkcipher_desc *desc, struct 
scatterlist *dst,
                aes_xts_encrypt(walk.dst.virt.addr, walk.src.virt.addr,
                                (u8 *)ctx->key1.key_enc, rounds, blocks,
                                (u8 *)ctx->key2.key_enc, walk.iv, first);
-               err = blkcipher_walk_done(desc, &walk, 0);
+               err = blkcipher_walk_done(desc, &walk, walk.nbytes % 
AES_BLOCK_SIZE);
        }
        kernel_neon_end();
 
@@ -267,7 +267,7 @@ static int xts_decrypt(struct blkcipher_desc *desc, struct 
scatterlist *dst,
                aes_xts_decrypt(walk.dst.virt.addr, walk.src.virt.addr,
                                (u8 *)ctx->key1.key_dec, rounds, blocks,
                                (u8 *)ctx->key2.key_enc, walk.iv, first);
-               err = blkcipher_walk_done(desc, &walk, 0);
+               err = blkcipher_walk_done(desc, &walk, walk.nbytes % 
AES_BLOCK_SIZE);
        }
        kernel_neon_end();
 
diff --git a/arch/powerpc/kernel/rtas_flash.c b/arch/powerpc/kernel/rtas_flash.c
index 658e89d..db2b482 100644
--- a/arch/powerpc/kernel/rtas_flash.c
+++ b/arch/powerpc/kernel/rtas_flash.c
@@ -611,17 +611,19 @@ static void rtas_flash_firmware(int reboot_type)
        for (f = flist; f; f = next) {
                /* Translate data addrs to absolute */
                for (i = 0; i < f->num_blocks; i++) {
-                       f->blocks[i].data = (char *)__pa(f->blocks[i].data);
+                       f->blocks[i].data = (char 
*)cpu_to_be64(__pa(f->blocks[i].data));
                        image_size += f->blocks[i].length;
+                       f->blocks[i].length = cpu_to_be64(f->blocks[i].length);
                }
                next = f->next;
                /* Don't translate NULL pointer for last entry */
                if (f->next)
-                       f->next = (struct flash_block_list *)__pa(f->next);
+                       f->next = (struct flash_block_list 
*)cpu_to_be64(__pa(f->next));
                else
                        f->next = NULL;
                /* make num_blocks into the version/length field */
                f->num_blocks = (FLASH_BLOCK_LIST_VERSION << 56) | 
((f->num_blocks+1)*16);
+               f->num_blocks = cpu_to_be64(f->num_blocks);
        }
 
        printk(KERN_ALERT "FLASH: flash image is %ld bytes\n", image_size);
diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c
index 6b0641c..fe52db2 100644
--- a/arch/powerpc/perf/core-book3s.c
+++ b/arch/powerpc/perf/core-book3s.c
@@ -1307,6 +1307,9 @@ static void power_pmu_enable(struct pmu *pmu)
  out_enable:
        pmao_restore_workaround(ebb);
 
+       if (ppmu->flags & PPMU_ARCH_207S)
+               mtspr(SPRN_MMCR2, 0);
+
        mmcr0 = ebb_switch_in(ebb, cpuhw->mmcr[0]);
 
        mb();
@@ -1315,9 +1318,6 @@ static void power_pmu_enable(struct pmu *pmu)
 
        write_mmcr0(cpuhw, mmcr0);
 
-       if (ppmu->flags & PPMU_ARCH_207S)
-               mtspr(SPRN_MMCR2, 0);
-
        /*
         * Enable instruction sampling if necessary
         */
diff --git a/arch/powerpc/platforms/powernv/opal-elog.c 
b/arch/powerpc/platforms/powernv/opal-elog.c
index 10268c4..0ad533b 100644
--- a/arch/powerpc/platforms/powernv/opal-elog.c
+++ b/arch/powerpc/platforms/powernv/opal-elog.c
@@ -249,7 +249,7 @@ static void elog_work_fn(struct work_struct *work)
 
        rc = opal_get_elog_size(&id, &size, &type);
        if (rc != OPAL_SUCCESS) {
-               pr_err("ELOG: Opal log read failed\n");
+               pr_err("ELOG: OPAL log info read failed\n");
                return;
        }
 
@@ -257,7 +257,7 @@ static void elog_work_fn(struct work_struct *work)
        log_id = be64_to_cpu(id);
        elog_type = be64_to_cpu(type);
 
-       BUG_ON(elog_size > OPAL_MAX_ERRLOG_SIZE);
+       WARN_ON(elog_size > OPAL_MAX_ERRLOG_SIZE);
 
        if (elog_size >= OPAL_MAX_ERRLOG_SIZE)
                elog_size  =  OPAL_MAX_ERRLOG_SIZE;
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
index a800290..f9e4fdd 100644
--- a/arch/x86/kernel/cpu/intel.c
+++ b/arch/x86/kernel/cpu/intel.c
@@ -370,6 +370,17 @@ static void init_intel(struct cpuinfo_x86 *c)
         */
        detect_extended_topology(c);
 
+       if (!cpu_has(c, X86_FEATURE_XTOPOLOGY)) {
+               /*
+                * let's use the legacy cpuid vector 0x1 and 0x4 for topology
+                * detection.
+                */
+               c->x86_max_cores = intel_num_cpu_cores(c);
+#ifdef CONFIG_X86_32
+               detect_ht(c);
+#endif
+       }
+
        l2 = init_intel_cacheinfo(c);
        if (c->cpuid_level > 9) {
                unsigned eax = cpuid_eax(10);
@@ -438,17 +449,6 @@ static void init_intel(struct cpuinfo_x86 *c)
                set_cpu_cap(c, X86_FEATURE_P3);
 #endif
 
-       if (!cpu_has(c, X86_FEATURE_XTOPOLOGY)) {
-               /*
-                * let's use the legacy cpuid vector 0x1 and 0x4 for topology
-                * detection.
-                */
-               c->x86_max_cores = intel_num_cpu_cores(c);
-#ifdef CONFIG_X86_32
-               detect_ht(c);
-#endif
-       }
-
        /* Work around errata */
        srat_detect_node(c);
 
diff --git a/arch/x86/kernel/cpu/intel_cacheinfo.c 
b/arch/x86/kernel/cpu/intel_cacheinfo.c
index a952e9c..9c8f739 100644
--- a/arch/x86/kernel/cpu/intel_cacheinfo.c
+++ b/arch/x86/kernel/cpu/intel_cacheinfo.c
@@ -730,6 +730,18 @@ unsigned int init_intel_cacheinfo(struct cpuinfo_x86 *c)
 #endif
        }
 
+#ifdef CONFIG_X86_HT
+       /*
+        * If cpu_llc_id is not yet set, this means cpuid_level < 4 which in
+        * turns means that the only possibility is SMT (as indicated in
+        * cpuid1). Since cpuid2 doesn't specify shared caches, and we know
+        * that SMT shares all caches, we can unconditionally set cpu_llc_id to
+        * c->phys_proc_id.
+        */
+       if (per_cpu(cpu_llc_id, cpu) == BAD_APICID)
+               per_cpu(cpu_llc_id, cpu) = c->phys_proc_id;
+#endif
+
        c->x86_cache_size = l3 ? l3 : (l2 ? l2 : (l1i+l1d));
 
        return l2;
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
index bb92f38..9a79c8d 100644
--- a/arch/x86/kernel/cpu/mcheck/mce.c
+++ b/arch/x86/kernel/cpu/mcheck/mce.c
@@ -2451,6 +2451,12 @@ static __init int mcheck_init_device(void)
        for_each_online_cpu(i) {
                err = mce_device_create(i);
                if (err) {
+                       /*
+                        * Register notifier anyway (and do not unreg it) so
+                        * that we don't leave undeleted timers, see notifier
+                        * callback above.
+                        */
+                       __register_hotcpu_notifier(&mce_cpu_notifier);
                        cpu_notifier_register_done();
                        goto err_device_create;
                }
@@ -2471,10 +2477,6 @@ static __init int mcheck_init_device(void)
 err_register:
        unregister_syscore_ops(&mce_syscore_ops);
 
-       cpu_notifier_register_begin();
-       __unregister_hotcpu_notifier(&mce_cpu_notifier);
-       cpu_notifier_register_done();
-
 err_device_create:
        /*
         * We didn't keep track of which devices were created above, but
diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
index 2bdfbff..2879ecd 100644
--- a/arch/x86/kernel/cpu/perf_event.c
+++ b/arch/x86/kernel/cpu/perf_event.c
@@ -118,6 +118,9 @@ static int x86_pmu_extra_regs(u64 config, struct perf_event 
*event)
                        continue;
                if (event->attr.config1 & ~er->valid_mask)
                        return -EINVAL;
+               /* Check if the extra msrs can be safely accessed*/
+               if (!er->extra_msr_access)
+                       return -ENXIO;
 
                reg->idx = er->idx;
                reg->config = event->attr.config1;
diff --git a/arch/x86/kernel/cpu/perf_event.h b/arch/x86/kernel/cpu/perf_event.h
index 3b2f9bd..8ade931 100644
--- a/arch/x86/kernel/cpu/perf_event.h
+++ b/arch/x86/kernel/cpu/perf_event.h
@@ -295,14 +295,16 @@ struct extra_reg {
        u64                     config_mask;
        u64                     valid_mask;
        int                     idx;  /* per_xxx->regs[] reg index */
+       bool                    extra_msr_access;
 };
 
 #define EVENT_EXTRA_REG(e, ms, m, vm, i) {     \
-       .event = (e),           \
-       .msr = (ms),            \
-       .config_mask = (m),     \
-       .valid_mask = (vm),     \
-       .idx = EXTRA_REG_##i,   \
+       .event = (e),                   \
+       .msr = (ms),                    \
+       .config_mask = (m),             \
+       .valid_mask = (vm),             \
+       .idx = EXTRA_REG_##i,           \
+       .extra_msr_access = true,       \
        }
 
 #define INTEL_EVENT_EXTRA_REG(event, msr, vm, idx)     \
diff --git a/arch/x86/kernel/cpu/perf_event_intel.c 
b/arch/x86/kernel/cpu/perf_event_intel.c
index 07846d7..2502d0d 100644
--- a/arch/x86/kernel/cpu/perf_event_intel.c
+++ b/arch/x86/kernel/cpu/perf_event_intel.c
@@ -2182,6 +2182,41 @@ static void intel_snb_check_microcode(void)
        }
 }
 
+/*
+ * Under certain circumstances, access certain MSR may cause #GP.
+ * The function tests if the input MSR can be safely accessed.
+ */
+static bool check_msr(unsigned long msr, u64 mask)
+{
+       u64 val_old, val_new, val_tmp;
+
+       /*
+        * Read the current value, change it and read it back to see if it
+        * matches, this is needed to detect certain hardware emulators
+        * (qemu/kvm) that don't trap on the MSR access and always return 0s.
+        */
+       if (rdmsrl_safe(msr, &val_old))
+               return false;
+
+       /*
+        * Only change the bits which can be updated by wrmsrl.
+        */
+       val_tmp = val_old ^ mask;
+       if (wrmsrl_safe(msr, val_tmp) ||
+           rdmsrl_safe(msr, &val_new))
+               return false;
+
+       if (val_new != val_tmp)
+               return false;
+
+       /* Here it's sure that the MSR can be safely accessed.
+        * Restore the old value and return.
+        */
+       wrmsrl(msr, val_old);
+
+       return true;
+}
+
 static __init void intel_sandybridge_quirk(void)
 {
        x86_pmu.check_microcode = intel_snb_check_microcode;
@@ -2271,7 +2306,8 @@ __init int intel_pmu_init(void)
        union cpuid10_ebx ebx;
        struct event_constraint *c;
        unsigned int unused;
-       int version;
+       struct extra_reg *er;
+       int version, i;
 
        if (!cpu_has(&boot_cpu_data, X86_FEATURE_ARCH_PERFMON)) {
                switch (boot_cpu_data.x86) {
@@ -2474,6 +2510,9 @@ __init int intel_pmu_init(void)
        case 62: /* IvyBridge EP */
                memcpy(hw_cache_event_ids, snb_hw_cache_event_ids,
                       sizeof(hw_cache_event_ids));
+               /* dTLB-load-misses on IVB is different than SNB */
+               hw_cache_event_ids[C(DTLB)][C(OP_READ)][C(RESULT_MISS)] = 
0x8108; /* DTLB_LOAD_MISSES.DEMAND_LD_MISS_CAUSES_A_WALK */
+
                memcpy(hw_cache_extra_regs, snb_hw_cache_extra_regs,
                       sizeof(hw_cache_extra_regs));
 
@@ -2574,6 +2613,34 @@ __init int intel_pmu_init(void)
                }
        }
 
+       /*
+        * Access LBR MSR may cause #GP under certain circumstances.
+        * E.g. KVM doesn't support LBR MSR
+        * Check all LBT MSR here.
+        * Disable LBR access if any LBR MSRs can not be accessed.
+        */
+       if (x86_pmu.lbr_nr && !check_msr(x86_pmu.lbr_tos, 0x3UL))
+               x86_pmu.lbr_nr = 0;
+       for (i = 0; i < x86_pmu.lbr_nr; i++) {
+               if (!(check_msr(x86_pmu.lbr_from + i, 0xffffUL) &&
+                     check_msr(x86_pmu.lbr_to + i, 0xffffUL)))
+                       x86_pmu.lbr_nr = 0;
+       }
+
+       /*
+        * Access extra MSR may cause #GP under certain circumstances.
+        * E.g. KVM doesn't support offcore event
+        * Check all extra_regs here.
+        */
+       if (x86_pmu.extra_regs) {
+               for (er = x86_pmu.extra_regs; er->msr; er++) {
+                       er->extra_msr_access = check_msr(er->msr, 0x1ffUL);
+                       /* Disable LBR select mapping */
+                       if ((er->idx == EXTRA_REG_LBR) && !er->extra_msr_access)
+                               x86_pmu.lbr_sel_map = NULL;
+               }
+       }
+
        /* Support full width counters using alternative MSR range */
        if (x86_pmu.intel_cap.full_width_write) {
                x86_pmu.max_period = x86_pmu.cntval_mask;
diff --git a/arch/x86/kernel/cpu/perf_event_intel_ds.c 
b/arch/x86/kernel/cpu/perf_event_intel_ds.c
index 980970c..696ade3 100644
--- a/arch/x86/kernel/cpu/perf_event_intel_ds.c
+++ b/arch/x86/kernel/cpu/perf_event_intel_ds.c
@@ -311,9 +311,11 @@ static int alloc_bts_buffer(int cpu)
        if (!x86_pmu.bts)
                return 0;
 
-       buffer = kzalloc_node(BTS_BUFFER_SIZE, GFP_KERNEL, node);
-       if (unlikely(!buffer))
+       buffer = kzalloc_node(BTS_BUFFER_SIZE, GFP_KERNEL | __GFP_NOWARN, node);
+       if (unlikely(!buffer)) {
+               WARN_ONCE(1, "%s: BTS buffer allocation failure\n", __func__);
                return -ENOMEM;
+       }
 
        max = BTS_BUFFER_SIZE / BTS_RECORD_SIZE;
        thresh = max / 16;
diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.c 
b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
index 65bbbea..ae6552a 100644
--- a/arch/x86/kernel/cpu/perf_event_intel_uncore.c
+++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
@@ -550,16 +550,16 @@ static struct extra_reg snbep_uncore_cbox_extra_regs[] = {
        SNBEP_CBO_EVENT_EXTRA_REG(0x4134, 0xffff, 0x6),
        SNBEP_CBO_EVENT_EXTRA_REG(0x0135, 0xffff, 0x8),
        SNBEP_CBO_EVENT_EXTRA_REG(0x0335, 0xffff, 0x8),
-       SNBEP_CBO_EVENT_EXTRA_REG(0x4135, 0xffff, 0xc),
-       SNBEP_CBO_EVENT_EXTRA_REG(0x4335, 0xffff, 0xc),
+       SNBEP_CBO_EVENT_EXTRA_REG(0x4135, 0xffff, 0xa),
+       SNBEP_CBO_EVENT_EXTRA_REG(0x4335, 0xffff, 0xa),
        SNBEP_CBO_EVENT_EXTRA_REG(0x4435, 0xffff, 0x2),
        SNBEP_CBO_EVENT_EXTRA_REG(0x4835, 0xffff, 0x2),
        SNBEP_CBO_EVENT_EXTRA_REG(0x4a35, 0xffff, 0x2),
        SNBEP_CBO_EVENT_EXTRA_REG(0x5035, 0xffff, 0x2),
        SNBEP_CBO_EVENT_EXTRA_REG(0x0136, 0xffff, 0x8),
        SNBEP_CBO_EVENT_EXTRA_REG(0x0336, 0xffff, 0x8),
-       SNBEP_CBO_EVENT_EXTRA_REG(0x4136, 0xffff, 0xc),
-       SNBEP_CBO_EVENT_EXTRA_REG(0x4336, 0xffff, 0xc),
+       SNBEP_CBO_EVENT_EXTRA_REG(0x4136, 0xffff, 0xa),
+       SNBEP_CBO_EVENT_EXTRA_REG(0x4336, 0xffff, 0xa),
        SNBEP_CBO_EVENT_EXTRA_REG(0x4436, 0xffff, 0x2),
        SNBEP_CBO_EVENT_EXTRA_REG(0x4836, 0xffff, 0x2),
        SNBEP_CBO_EVENT_EXTRA_REG(0x4a36, 0xffff, 0x2),
@@ -1222,6 +1222,7 @@ static struct extra_reg ivt_uncore_cbox_extra_regs[] = {
        SNBEP_CBO_EVENT_EXTRA_REG(SNBEP_CBO_PMON_CTL_TID_EN,
                                  SNBEP_CBO_PMON_CTL_TID_EN, 0x1),
        SNBEP_CBO_EVENT_EXTRA_REG(0x1031, 0x10ff, 0x2),
+
        SNBEP_CBO_EVENT_EXTRA_REG(0x1134, 0xffff, 0x4),
        SNBEP_CBO_EVENT_EXTRA_REG(0x4134, 0xffff, 0xc),
        SNBEP_CBO_EVENT_EXTRA_REG(0x5134, 0xffff, 0xc),
@@ -1245,7 +1246,7 @@ static struct extra_reg ivt_uncore_cbox_extra_regs[] = {
        SNBEP_CBO_EVENT_EXTRA_REG(0x8335, 0xffff, 0x10),
        SNBEP_CBO_EVENT_EXTRA_REG(0x0136, 0xffff, 0x10),
        SNBEP_CBO_EVENT_EXTRA_REG(0x0336, 0xffff, 0x10),
-       SNBEP_CBO_EVENT_EXTRA_REG(0x2336, 0xffff, 0x10),
+       SNBEP_CBO_EVENT_EXTRA_REG(0x2136, 0xffff, 0x10),
        SNBEP_CBO_EVENT_EXTRA_REG(0x2336, 0xffff, 0x10),
        SNBEP_CBO_EVENT_EXTRA_REG(0x4136, 0xffff, 0x18),
        SNBEP_CBO_EVENT_EXTRA_REG(0x4336, 0xffff, 0x18),
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
index dbaa23e..0d0c9d4 100644
--- a/arch/x86/kernel/entry_32.S
+++ b/arch/x86/kernel/entry_32.S
@@ -425,8 +425,8 @@ sysenter_do_call:
        cmpl $(NR_syscalls), %eax
        jae sysenter_badsys
        call *sys_call_table(,%eax,4)
-       movl %eax,PT_EAX(%esp)
 sysenter_after_call:
+       movl %eax,PT_EAX(%esp)
        LOCKDEP_SYS_EXIT
        DISABLE_INTERRUPTS(CLBR_ANY)
        TRACE_IRQS_OFF
@@ -502,6 +502,7 @@ ENTRY(system_call)
        jae syscall_badsys
 syscall_call:
        call *sys_call_table(,%eax,4)
+syscall_after_call:
        movl %eax,PT_EAX(%esp)          # store the return value
 syscall_exit:
        LOCKDEP_SYS_EXIT
@@ -675,12 +676,12 @@ syscall_fault:
 END(syscall_fault)
 
 syscall_badsys:
-       movl $-ENOSYS,PT_EAX(%esp)
-       jmp syscall_exit
+       movl $-ENOSYS,%eax
+       jmp syscall_after_call
 END(syscall_badsys)
 
 sysenter_badsys:
-       movl $-ENOSYS,PT_EAX(%esp)
+       movl $-ENOSYS,%eax
        jmp sysenter_after_call
 END(syscall_badsys)
        CFI_ENDPROC
diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c
index 7596df6..67e6d19 100644
--- a/arch/x86/kernel/kprobes/core.c
+++ b/arch/x86/kernel/kprobes/core.c
@@ -574,6 +574,9 @@ int kprobe_int3_handler(struct pt_regs *regs)
        struct kprobe *p;
        struct kprobe_ctlblk *kcb;
 
+       if (user_mode_vm(regs))
+               return 0;
+
        addr = (kprobe_opcode_t *)(regs->ip - sizeof(kprobe_opcode_t));
        /*
         * We don't want to be preempted for the entire
diff --git a/arch/x86/xen/grant-table.c b/arch/x86/xen/grant-table.c
index c985835..ebfa9b2 100644
--- a/arch/x86/xen/grant-table.c
+++ b/arch/x86/xen/grant-table.c
@@ -36,99 +36,133 @@
 
 #include <linux/sched.h>
 #include <linux/mm.h>
+#include <linux/slab.h>
 #include <linux/vmalloc.h>
 
 #include <xen/interface/xen.h>
 #include <xen/page.h>
 #include <xen/grant_table.h>
+#include <xen/xen.h>
 
 #include <asm/pgtable.h>
 
-static int map_pte_fn(pte_t *pte, struct page *pmd_page,
-                     unsigned long addr, void *data)
+static struct gnttab_vm_area {
+       struct vm_struct *area;
+       pte_t **ptes;
+} gnttab_shared_vm_area, gnttab_status_vm_area;
+
+int arch_gnttab_map_shared(unsigned long *frames, unsigned long nr_gframes,
+                          unsigned long max_nr_gframes,
+                          void **__shared)
 {
-       unsigned long **frames = (unsigned long **)data;
+       void *shared = *__shared;
+       unsigned long addr;
+       unsigned long i;
 
-       set_pte_at(&init_mm, addr, pte, mfn_pte((*frames)[0], PAGE_KERNEL));
-       (*frames)++;
-       return 0;
-}
+       if (shared == NULL)
+               *__shared = shared = gnttab_shared_vm_area.area->addr;
 
-/*
- * This function is used to map shared frames to store grant status. It is
- * different from map_pte_fn above, the frames type here is uint64_t.
- */
-static int map_pte_fn_status(pte_t *pte, struct page *pmd_page,
-                            unsigned long addr, void *data)
-{
-       uint64_t **frames = (uint64_t **)data;
+       addr = (unsigned long)shared;
+
+       for (i = 0; i < nr_gframes; i++) {
+               set_pte_at(&init_mm, addr, gnttab_shared_vm_area.ptes[i],
+                          mfn_pte(frames[i], PAGE_KERNEL));
+               addr += PAGE_SIZE;
+       }
 
-       set_pte_at(&init_mm, addr, pte, mfn_pte((*frames)[0], PAGE_KERNEL));
-       (*frames)++;
        return 0;
 }
 
-static int unmap_pte_fn(pte_t *pte, struct page *pmd_page,
-                       unsigned long addr, void *data)
+int arch_gnttab_map_status(uint64_t *frames, unsigned long nr_gframes,
+                          unsigned long max_nr_gframes,
+                          grant_status_t **__shared)
 {
+       grant_status_t *shared = *__shared;
+       unsigned long addr;
+       unsigned long i;
+
+       if (shared == NULL)
+               *__shared = shared = gnttab_status_vm_area.area->addr;
+
+       addr = (unsigned long)shared;
+
+       for (i = 0; i < nr_gframes; i++) {
+               set_pte_at(&init_mm, addr, gnttab_status_vm_area.ptes[i],
+                          mfn_pte(frames[i], PAGE_KERNEL));
+               addr += PAGE_SIZE;
+       }
 
-       set_pte_at(&init_mm, addr, pte, __pte(0));
        return 0;
 }
 
-int arch_gnttab_map_shared(unsigned long *frames, unsigned long nr_gframes,
-                          unsigned long max_nr_gframes,
-                          void **__shared)
+void arch_gnttab_unmap(void *shared, unsigned long nr_gframes)
 {
-       int rc;
-       void *shared = *__shared;
+       pte_t **ptes;
+       unsigned long addr;
+       unsigned long i;
 
-       if (shared == NULL) {
-               struct vm_struct *area =
-                       alloc_vm_area(PAGE_SIZE * max_nr_gframes, NULL);
-               BUG_ON(area == NULL);
-               shared = area->addr;
-               *__shared = shared;
-       }
+       if (shared == gnttab_status_vm_area.area->addr)
+               ptes = gnttab_status_vm_area.ptes;
+       else
+               ptes = gnttab_shared_vm_area.ptes;
 
-       rc = apply_to_page_range(&init_mm, (unsigned long)shared,
-                                PAGE_SIZE * nr_gframes,
-                                map_pte_fn, &frames);
-       return rc;
+       addr = (unsigned long)shared;
+
+       for (i = 0; i < nr_gframes; i++) {
+               set_pte_at(&init_mm, addr, ptes[i], __pte(0));
+               addr += PAGE_SIZE;
+       }
 }
 
-int arch_gnttab_map_status(uint64_t *frames, unsigned long nr_gframes,
-                          unsigned long max_nr_gframes,
-                          grant_status_t **__shared)
+static int arch_gnttab_valloc(struct gnttab_vm_area *area, unsigned nr_frames)
 {
-       int rc;
-       grant_status_t *shared = *__shared;
+       area->ptes = kmalloc(sizeof(pte_t *) * nr_frames, GFP_KERNEL);
+       if (area->ptes == NULL)
+               return -ENOMEM;
 
-       if (shared == NULL) {
-               /* No need to pass in PTE as we are going to do it
-                * in apply_to_page_range anyhow. */
-               struct vm_struct *area =
-                       alloc_vm_area(PAGE_SIZE * max_nr_gframes, NULL);
-               BUG_ON(area == NULL);
-               shared = area->addr;
-               *__shared = shared;
+       area->area = alloc_vm_area(PAGE_SIZE * nr_frames, area->ptes);
+       if (area->area == NULL) {
+               kfree(area->ptes);
+               return -ENOMEM;
        }
 
-       rc = apply_to_page_range(&init_mm, (unsigned long)shared,
-                                PAGE_SIZE * nr_gframes,
-                                map_pte_fn_status, &frames);
-       return rc;
+       return 0;
 }
 
-void arch_gnttab_unmap(void *shared, unsigned long nr_gframes)
+static void arch_gnttab_vfree(struct gnttab_vm_area *area)
+{
+       free_vm_area(area->area);
+       kfree(area->ptes);
+}
+
+int arch_gnttab_init(unsigned long nr_shared, unsigned long nr_status)
 {
-       apply_to_page_range(&init_mm, (unsigned long)shared,
-                           PAGE_SIZE * nr_gframes, unmap_pte_fn, NULL);
+       int ret;
+
+       if (!xen_pv_domain())
+               return 0;
+
+       ret = arch_gnttab_valloc(&gnttab_shared_vm_area, nr_shared);
+       if (ret < 0)
+               return ret;
+
+       /*
+        * Always allocate the space for the status frames in case
+        * we're migrated to a host with V2 support.
+        */
+       ret = arch_gnttab_valloc(&gnttab_status_vm_area, nr_status);
+       if (ret < 0)
+               goto err;
+
+       return 0;
+  err:
+       arch_gnttab_vfree(&gnttab_shared_vm_area);
+       return -ENOMEM;
 }
+
 #ifdef CONFIG_XEN_PVH
 #include <xen/balloon.h>
 #include <xen/events.h>
-#include <xen/xen.h>
 #include <linux/slab.h>
 static int __init xlated_setup_gnttab_pages(void)
 {
diff --git a/crypto/af_alg.c b/crypto/af_alg.c
index 966f893..6a3ad80 100644
--- a/crypto/af_alg.c
+++ b/crypto/af_alg.c
@@ -21,6 +21,7 @@
 #include <linux/module.h>
 #include <linux/net.h>
 #include <linux/rwsem.h>
+#include <linux/security.h>
 
 struct alg_type_list {
        const struct af_alg_type *type;
@@ -243,6 +244,7 @@ int af_alg_accept(struct sock *sk, struct socket *newsock)
 
        sock_init_data(newsock, sk2);
        sock_graft(sk2, newsock);
+       security_sk_clone(sk, sk2);
 
        err = type->accept(ask->private, sk2);
        if (err) {
diff --git a/drivers/clk/ti/clk-7xx.c b/drivers/clk/ti/clk-7xx.c
index e158133..cb8e6f1 100644
--- a/drivers/clk/ti/clk-7xx.c
+++ b/drivers/clk/ti/clk-7xx.c
@@ -16,7 +16,7 @@
 #include <linux/clkdev.h>
 #include <linux/clk/ti.h>
 
-#define DRA7_DPLL_ABE_DEFFREQ                          361267200
+#define DRA7_DPLL_ABE_DEFFREQ                          180633600
 #define DRA7_DPLL_GMAC_DEFFREQ                         1000000000
 
 
@@ -322,6 +322,11 @@ int __init dra7xx_dt_clk_init(void)
        if (rc)
                pr_err("%s: failed to configure ABE DPLL!\n", __func__);
 
+       dpll_ck = clk_get_sys(NULL, "dpll_abe_m2x2_ck");
+       rc = clk_set_rate(dpll_ck, DRA7_DPLL_ABE_DEFFREQ * 2);
+       if (rc)
+               pr_err("%s: failed to configure ABE DPLL m2x2!\n", __func__);
+
        dpll_ck = clk_get_sys(NULL, "dpll_gmac_ck");
        rc = clk_set_rate(dpll_ck, DRA7_DPLL_GMAC_DEFFREQ);
        if (rc)
diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c
index 5798541..a66a321 100644
--- a/drivers/firewire/ohci.c
+++ b/drivers/firewire/ohci.c
@@ -336,10 +336,10 @@ static const struct {
                QUIRK_CYCLE_TIMER | QUIRK_IR_WAKE},

_______________________________________________
unionfs-cvs mailing list: http://unionfs.filesystems.org/
unionfs-cvs@fsl.cs.sunysb.edu
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs-cvs

Reply via email to