Merge branch 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 22 Nov 2013 03:46:00 +0000 (19:46 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 22 Nov 2013 03:46:00 +0000 (19:46 -0800)
Pull security subsystem updates from James Morris:
 "In this patchset, we finally get an SELinux update, with Paul Moore
  taking over as maintainer of that code.

  Also a significant update for the Keys subsystem, as well as
  maintenance updates to Smack, IMA, TPM, and Apparmor"

and since I wanted to know more about the updates to key handling,
here's the explanation from David Howells on that:

 "Okay.  There are a number of separate bits.  I'll go over the big bits
  and the odd important other bit, most of the smaller bits are just
  fixes and cleanups.  If you want the small bits accounting for, I can
  do that too.

   (1) Keyring capacity expansion.

        KEYS: Consolidate the concept of an 'index key' for key access
        KEYS: Introduce a search context structure
        KEYS: Search for auth-key by name rather than target key ID
        Add a generic associative array implementation.
        KEYS: Expand the capacity of a keyring

     Several of the patches are providing an expansion of the capacity of a
     keyring.  Currently, the maximum size of a keyring payload is one page.
     Subtract a small header and then divide up into pointers, that only gives
     you ~500 pointers on an x86_64 box.  However, since the NFS idmapper uses
     a keyring to store ID mapping data, that has proven to be insufficient to
     the cause.

     Whatever data structure I use to handle the keyring payload, it can only
     store pointers to keys, not the keys themselves because several keyrings
     may point to a single key.  This precludes inserting, say, and rb_node
     struct into the key struct for this purpose.

     I could make an rbtree of records such that each record has an rb_node
     and a key pointer, but that would use four words of space per key stored
     in the keyring.  It would, however, be able to use much existing code.

     I selected instead a non-rebalancing radix-tree type approach as that
     could have a better space-used/key-pointer ratio.  I could have used the
     radix tree implementation that we already have and insert keys into it by
     their serial numbers, but that means any sort of search must iterate over
     the whole radix tree.  Further, its nodes are a bit on the capacious side
     for what I want - especially given that key serial numbers are randomly
     allocated, thus leaving a lot of empty space in the tree.

     So what I have is an associative array that internally is a radix-tree
     with 16 pointers per node where the index key is constructed from the key
     type pointer and the key description.  This means that an exact lookup by
     type+description is very fast as this tells us how to navigate directly to
     the target key.

     I made the data structure general in lib/assoc_array.c as far as it is
     concerned, its index key is just a sequence of bits that leads to a
     pointer.  It's possible that someone else will be able to make use of it
     also.  FS-Cache might, for example.

   (2) Mark keys as 'trusted' and keyrings as 'trusted only'.

        KEYS: verify a certificate is signed by a 'trusted' key
        KEYS: Make the system 'trusted' keyring viewable by userspace
        KEYS: Add a 'trusted' flag and a 'trusted only' flag
        KEYS: Separate the kernel signature checking keyring from module signing

     These patches allow keys carrying asymmetric public keys to be marked as
     being 'trusted' and allow keyrings to be marked as only permitting the
     addition or linkage of trusted keys.

     Keys loaded from hardware during kernel boot or compiled into the kernel
     during build are marked as being trusted automatically.  New keys can be
     loaded at runtime with add_key().  They are checked against the system
     keyring contents and if their signatures can be validated with keys that
     are already marked trusted, then they are marked trusted also and can
     thus be added into the master keyring.

     Patches from Mimi Zohar make this usable with the IMA keyrings also.

   (3) Remove the date checks on the key used to validate a module signature.

        X.509: Remove certificate date checks

     It's not reasonable to reject a signature just because the key that it was
     generated with is no longer valid datewise - especially if the kernel
     hasn't yet managed to set the system clock when the first module is
     loaded - so just remove those checks.

   (4) Make it simpler to deal with additional X.509 being loaded into the kernel.

        KEYS: Load *.x509 files into kernel keyring
        KEYS: Have make canonicalise the paths of the X.509 certs better to deduplicate

     The builder of the kernel now just places files with the extension ".x509"
     into the kernel source or build trees and they're concatenated by the
     kernel build and stuffed into the appropriate section.

   (5) Add support for userspace kerberos to use keyrings.

        KEYS: Add per-user_namespace registers for persistent per-UID kerberos caches
        KEYS: Implement a big key type that can save to tmpfs

     Fedora went to, by default, storing kerberos tickets and tokens in tmpfs.
     We looked at storing it in keyrings instead as that confers certain
     advantages such as tickets being automatically deleted after a certain
     amount of time and the ability for the kernel to get at these tokens more
     easily.

     To make this work, two things were needed:

     (a) A way for the tickets to persist beyond the lifetime of all a user's
         sessions so that cron-driven processes can still use them.

         The problem is that a user's session keyrings are deleted when the
         session that spawned them logs out and the user's user keyring is
         deleted when the UID is deleted (typically when the last log out
         happens), so neither of these places is suitable.

         I've added a system keyring into which a 'persistent' keyring is
         created for each UID on request.  Each time a user requests their
         persistent keyring, the expiry time on it is set anew.  If the user
         doesn't ask for it for, say, three days, the keyring is automatically
         expired and garbage collected using the existing gc.  All the kerberos
         tokens it held are then also gc'd.

     (b) A key type that can hold really big tickets (up to 1MB in size).

         The problem is that Active Directory can return huge tickets with lots
         of auxiliary data attached.  We don't, however, want to eat up huge
         tracts of unswappable kernel space for this, so if the ticket is
         greater than a certain size, we create a swappable shmem file and dump
         the contents in there and just live with the fact we then have an
         inode and a dentry overhead.  If the ticket is smaller than that, we
         slap it in a kmalloc()'d buffer"

* 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (121 commits)
  KEYS: Fix keyring content gc scanner
  KEYS: Fix error handling in big_key instantiation
  KEYS: Fix UID check in keyctl_get_persistent()
  KEYS: The RSA public key algorithm needs to select MPILIB
  ima: define '_ima' as a builtin 'trusted' keyring
  ima: extend the measurement list to include the file signature
  kernel/system_certificate.S: use real contents instead of macro GLOBAL()
  KEYS: fix error return code in big_key_instantiate()
  KEYS: Fix keyring quota misaccounting on key replacement and unlink
  KEYS: Fix a race between negating a key and reading the error set
  KEYS: Make BIG_KEYS boolean
  apparmor: remove the "task" arg from may_change_ptraced_domain()
  apparmor: remove parent task info from audit logging
  apparmor: remove tsk field from the apparmor_audit_struct
  apparmor: fix capability to not use the current task, during reporting
  Smack: Ptrace access check mode
  ima: provide hash algo info in the xattr
  ima: enable support for larger default filedata hash algorithms
  ima: define kernel parameter 'ima_template=' to change configured default
  ima: add Kconfig default measurement list template
  ...

1  2 
Documentation/kernel-parameters.txt
MAINTAINERS
crypto/Kconfig
drivers/char/tpm/xen-tpmfront.c
init/Kconfig
kernel/Makefile
lib/Kconfig
lib/Makefile
security/selinux/hooks.c

index 9ca3e74a10e128b4103d00dc8d06c12e6127d4c8,1e8761c89a2cead76dfb0d4c35c7d1d2feef0d5d..50680a59a2ff9a913e449a1d71ced9fab3004fe4
@@@ -480,10 -480,6 +480,10 @@@ bytes respectively. Such letter suffixe
                        Format: <io>,<irq>,<mode>
                        See header of drivers/net/hamradio/baycom_ser_hdx.c.
  
 +      blkdevparts=    Manual partition parsing of block device(s) for
 +                      embedded devices based on command line input.
 +                      See Documentation/block/cmdline-partition.txt
 +
        boot_delay=     Milliseconds to delay each printk during boot.
                        Values larger than 10 seconds (10000) are changed to
                        no delay (0).
  
        earlyprintk=    [X86,SH,BLACKFIN,ARM]
                        earlyprintk=vga
 +                      earlyprintk=efi
                        earlyprintk=xen
                        earlyprintk=serial[,ttySn[,baudrate]]
                        earlyprintk=serial[,0x...[,baudrate]]
                        Append ",keep" to not disable it when the real console
                        takes over.
  
 -                      Only vga or serial or usb debug port at a time.
 +                      Only one of vga, efi, serial, or usb debug port can
 +                      be used at a time.
  
                        Currently only ttyS0 and ttyS1 may be specified by
                        name.  Other I/O ports may be explicitly specified
                        Interaction with the standard serial driver is not
                        very good.
  
 -                      The VGA output is eventually overwritten by the real
 -                      console.
 +                      The VGA and EFI output is eventually overwritten by
 +                      the real console.
  
                        The xen output can only be used by Xen PV guests.
  
                                VIA, nVidia)
                        verbose: show contents of HPET registers during setup
  
 +      hpet_mmap=      [X86, HPET_MMAP] Allow userspace to mmap HPET
 +                      registers.  Default set by CONFIG_HPET_MMAP_DEFAULT.
 +
        hugepages=      [HW,X86-32,IA-64] HugeTLB pages to allocate at boot.
        hugepagesz=     [HW,IA-64,PPC,X86-64] The size of the HugeTLB pages.
                        On x86-64 and powerpc, this option can be specified
                        owned by uid=0.
  
        ima_hash=       [IMA]
-                       Format: { "sha1" | "md5" }
+                       Format: { md5 | sha1 | rmd160 | sha256 | sha384
+                                  | sha512 | ... }
                        default: "sha1"
  
+                       The list of supported hash algorithms is defined
+                       in crypto/hash_info.h.
        ima_tcb         [IMA]
                        Load a policy which meets the needs of the Trusted
                        Computing Base.  This means IMA will measure all
                        programs exec'd, files mmap'd for exec, and all files
                        opened for read by uid=0.
  
+       ima_template=   [IMA]
+                       Select one of defined IMA measurements template formats.
+                       Formats: { "ima" | "ima-ng" }
+                       Default: "ima-ng"
        init=           [KNL]
                        Format: <full_path>
                        Run specified binary instead of /sbin/init as init
                        pages. In the event, a node is too small to have both
                        kernelcore and Movable pages, kernelcore pages will
                        take priority and other nodes will have a larger number
 -                      of kernelcore pages.  The Movable zone is used for the
 +                      of Movable pages.  The Movable zone is used for the
                        allocation of pages that may be reclaimed or moved
                        by the page migration subsystem.  This means that
                        HugeTLB pages may not be allocated from this zone.
                        that the amount of memory usable for all allocations
                        is not too small.
  
 +      movable_node    [KNL,X86] Boot-time switch to enable the effects
 +                      of CONFIG_MOVABLE_NODE=y. See mm/Kconfig for details.
 +
        MTD_Partition=  [MTD]
                        Format: <name>,<region-number>,<size>,<offset>
  
        ramdisk_size=   [RAM] Sizes of RAM disks in kilobytes
                        See Documentation/blockdev/ramdisk.txt.
  
 -      rcu_nocbs=      [KNL,BOOT]
 +      rcu_nocbs=      [KNL]
                        In kernels built with CONFIG_RCU_NOCB_CPU=y, set
                        the specified list of CPUs to be no-callback CPUs.
                        Invocation of these CPUs' RCU callbacks will
                        real-time workloads.  It can also improve energy
                        efficiency for asymmetric multiprocessors.
  
 -      rcu_nocb_poll   [KNL,BOOT]
 +      rcu_nocb_poll   [KNL]
                        Rather than requiring that offloaded CPUs
                        (specified by rcu_nocbs= above) explicitly
                        awaken the corresponding "rcuoN" kthreads,
                        energy efficiency by requiring that the kthreads
                        periodically wake up to do the polling.
  
 -      rcutree.blimit= [KNL,BOOT]
 +      rcutree.blimit= [KNL]
                        Set maximum number of finished RCU callbacks to process
                        in one batch.
  
 -      rcutree.fanout_leaf=    [KNL,BOOT]
 +      rcutree.rcu_fanout_leaf= [KNL]
                        Increase the number of CPUs assigned to each
                        leaf rcu_node structure.  Useful for very large
                        systems.
  
 -      rcutree.jiffies_till_first_fqs= [KNL,BOOT]
 +      rcutree.jiffies_till_first_fqs= [KNL]
                        Set delay from grace-period initialization to
                        first attempt to force quiescent states.
                        Units are jiffies, minimum value is zero,
                        and maximum value is HZ.
  
 -      rcutree.jiffies_till_next_fqs= [KNL,BOOT]
 +      rcutree.jiffies_till_next_fqs= [KNL]
                        Set delay between subsequent attempts to force
                        quiescent states.  Units are jiffies, minimum
                        value is one, and maximum value is HZ.
  
 -      rcutree.qhimark=        [KNL,BOOT]
 +      rcutree.qhimark= [KNL]
                        Set threshold of queued
                        RCU callbacks over which batch limiting is disabled.
  
 -      rcutree.qlowmark=       [KNL,BOOT]
 +      rcutree.qlowmark= [KNL]
                        Set threshold of queued RCU callbacks below which
                        batch limiting is re-enabled.
  
 -      rcutree.rcu_cpu_stall_suppress= [KNL,BOOT]
 -                      Suppress RCU CPU stall warning messages.
 -
 -      rcutree.rcu_cpu_stall_timeout= [KNL,BOOT]
 -                      Set timeout for RCU CPU stall warning messages.
 -
 -      rcutree.rcu_idle_gp_delay=      [KNL,BOOT]
 +      rcutree.rcu_idle_gp_delay= [KNL]
                        Set wakeup interval for idle CPUs that have
                        RCU callbacks (RCU_FAST_NO_HZ=y).
  
 -      rcutree.rcu_idle_lazy_gp_delay= [KNL,BOOT]
 +      rcutree.rcu_idle_lazy_gp_delay= [KNL]
                        Set wakeup interval for idle CPUs that have
                        only "lazy" RCU callbacks (RCU_FAST_NO_HZ=y).
                        Lazy RCU callbacks are those which RCU can
                        prove do nothing more than free memory.
  
 -      rcutorture.fqs_duration= [KNL,BOOT]
 +      rcutorture.fqs_duration= [KNL]
                        Set duration of force_quiescent_state bursts.
  
 -      rcutorture.fqs_holdoff= [KNL,BOOT]
 +      rcutorture.fqs_holdoff= [KNL]
                        Set holdoff time within force_quiescent_state bursts.
  
 -      rcutorture.fqs_stutter= [KNL,BOOT]
 +      rcutorture.fqs_stutter= [KNL]
                        Set wait time between force_quiescent_state bursts.
  
 -      rcutorture.irqreader= [KNL,BOOT]
 -                      Test RCU readers from irq handlers.
 +      rcutorture.gp_exp= [KNL]
 +                      Use expedited update-side primitives.
 +
 +      rcutorture.gp_normal= [KNL]
 +                      Use normal (non-expedited) update-side primitives.
 +                      If both gp_exp and gp_normal are set, do both.
 +                      If neither gp_exp nor gp_normal are set, still
 +                      do both.
  
 -      rcutorture.n_barrier_cbs= [KNL,BOOT]
 +      rcutorture.n_barrier_cbs= [KNL]
                        Set callbacks/threads for rcu_barrier() testing.
  
 -      rcutorture.nfakewriters= [KNL,BOOT]
 +      rcutorture.nfakewriters= [KNL]
                        Set number of concurrent RCU writers.  These just
                        stress RCU, they don't participate in the actual
                        test, hence the "fake".
  
 -      rcutorture.nreaders= [KNL,BOOT]
 +      rcutorture.nreaders= [KNL]
                        Set number of RCU readers.
  
 -      rcutorture.onoff_holdoff= [KNL,BOOT]
 +      rcutorture.object_debug= [KNL]
 +                      Enable debug-object double-call_rcu() testing.
 +
 +      rcutorture.onoff_holdoff= [KNL]
                        Set time (s) after boot for CPU-hotplug testing.
  
 -      rcutorture.onoff_interval= [KNL,BOOT]
 +      rcutorture.onoff_interval= [KNL]
                        Set time (s) between CPU-hotplug operations, or
                        zero to disable CPU-hotplug testing.
  
 -      rcutorture.shuffle_interval= [KNL,BOOT]
 +      rcutorture.rcutorture_runnable= [BOOT]
 +                      Start rcutorture running at boot time.
 +
 +      rcutorture.shuffle_interval= [KNL]
                        Set task-shuffle interval (s).  Shuffling tasks
                        allows some CPUs to go into dyntick-idle mode
                        during the rcutorture test.
  
 -      rcutorture.shutdown_secs= [KNL,BOOT]
 +      rcutorture.shutdown_secs= [KNL]
                        Set time (s) after boot system shutdown.  This
                        is useful for hands-off automated testing.
  
 -      rcutorture.stall_cpu= [KNL,BOOT]
 +      rcutorture.stall_cpu= [KNL]
                        Duration of CPU stall (s) to test RCU CPU stall
                        warnings, zero to disable.
  
 -      rcutorture.stall_cpu_holdoff= [KNL,BOOT]
 +      rcutorture.stall_cpu_holdoff= [KNL]
                        Time to wait (s) after boot before inducing stall.
  
 -      rcutorture.stat_interval= [KNL,BOOT]
 +      rcutorture.stat_interval= [KNL]
                        Time (s) between statistics printk()s.
  
 -      rcutorture.stutter= [KNL,BOOT]
 +      rcutorture.stutter= [KNL]
                        Time (s) to stutter testing, for example, specifying
                        five seconds causes the test to run for five seconds,
                        wait for five seconds, and so on.  This tests RCU's
                        ability to transition abruptly to and from idle.
  
 -      rcutorture.test_boost= [KNL,BOOT]
 +      rcutorture.test_boost= [KNL]
                        Test RCU priority boosting?  0=no, 1=maybe, 2=yes.
                        "Maybe" means test if the RCU implementation
                        under test support RCU priority boosting.
  
 -      rcutorture.test_boost_duration= [KNL,BOOT]
 +      rcutorture.test_boost_duration= [KNL]
                        Duration (s) of each individual boost test.
  
 -      rcutorture.test_boost_interval= [KNL,BOOT]
 +      rcutorture.test_boost_interval= [KNL]
                        Interval (s) between each boost test.
  
 -      rcutorture.test_no_idle_hz= [KNL,BOOT]
 +      rcutorture.test_no_idle_hz= [KNL]
                        Test RCU's dyntick-idle handling.  See also the
                        rcutorture.shuffle_interval parameter.
  
 -      rcutorture.torture_type= [KNL,BOOT]
 +      rcutorture.torture_type= [KNL]
                        Specify the RCU implementation to test.
  
 -      rcutorture.verbose= [KNL,BOOT]
 +      rcutorture.verbose= [KNL]
                        Enable additional printk() statements.
  
 +      rcupdate.rcu_expedited= [KNL]
 +                      Use expedited grace-period primitives, for
 +                      example, synchronize_rcu_expedited() instead
 +                      of synchronize_rcu().  This reduces latency,
 +                      but can increase CPU utilization, degrade
 +                      real-time latency, and degrade energy efficiency.
 +
 +      rcupdate.rcu_cpu_stall_suppress= [KNL]
 +                      Suppress RCU CPU stall warning messages.
 +
 +      rcupdate.rcu_cpu_stall_timeout= [KNL]
 +                      Set timeout for RCU CPU stall warning messages.
 +
        rdinit=         [KNL]
                        Format: <full_path>
                        Run specified binary instead of /init from the ramdisk,
                        default x2apic cluster mode on platforms
                        supporting x2apic.
  
 -      x86_mrst_timer= [X86-32,APBT]
 -                      Choose timer option for x86 Moorestown MID platform.
 +      x86_intel_mid_timer= [X86-32,APBT]
 +                      Choose timer option for x86 Intel MID platform.
                        Two valid options are apbt timer only and lapic timer
                        plus one apbt timer for broadcast timer.
 -                      x86_mrst_timer=apbt_only | lapic_and_apbt
 +                      x86_intel_mid_timer=apbt_only | lapic_and_apbt
  
        xen_emul_unplug=                [HW,X86,XEN]
                        Unplug Xen emulated devices
                                the unplug protocol
                        never -- do not unplug even if version check succeeds
  
 +      xen_nopvspin    [X86,XEN]
 +                      Disables the ticketlock slowpath using Xen PV
 +                      optimizations.
 +
        xirc2ps_cs=     [NET,PCMCIA]
                        Format:
                        <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
diff --combined MAINTAINERS
index 63f30484932b1cddbe5f9c5bd05ca6473d612e0b,936adb4e6b39f591659d13a75f06e57f86bff21a..8d98e54f2bf2e0ac56ad5f0f07c201ad47150844
@@@ -237,11 -237,11 +237,11 @@@ F:      drivers/platform/x86/acer-wmi.
  
  ACPI
  M:    Len Brown <lenb@kernel.org>
 -M:    Rafael J. Wysocki <rjw@sisk.pl>
 +M:    Rafael J. Wysocki <rjw@rjwysocki.net>
  L:    linux-acpi@vger.kernel.org
 -W:    http://www.lesswatts.org/projects/acpi/
 -Q:    http://patchwork.kernel.org/project/linux-acpi/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux
 +W:    https://01.org/linux-acpi
 +Q:    https://patchwork.kernel.org/project/linux-acpi/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
  S:    Supported
  F:    drivers/acpi/
  F:    drivers/pnp/pnpacpi/
@@@ -253,38 -253,24 +253,38 @@@ F:      drivers/pci/*acpi
  F:    drivers/pci/*/*acpi*
  F:    drivers/pci/*/*/*acpi*
  
 +ACPI COMPONENT ARCHITECTURE (ACPICA)
 +M:    Robert Moore <robert.moore@intel.com>
 +M:    Lv Zheng <lv.zheng@intel.com>
 +M:    Rafael J. Wysocki <rafael.j.wysocki@intel.com>
 +L:    linux-acpi@vger.kernel.org
 +L:    devel@acpica.org
 +W:    https://acpica.org/
 +W:    https://github.com/acpica/acpica/
 +Q:    https://patchwork.kernel.org/project/linux-acpi/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
 +S:    Supported
 +F:    drivers/acpi/acpica/
 +F:    include/acpi/
 +
  ACPI FAN DRIVER
  M:    Zhang Rui <rui.zhang@intel.com>
  L:    linux-acpi@vger.kernel.org
 -W:    http://www.lesswatts.org/projects/acpi/
 +W:    https://01.org/linux-acpi
  S:    Supported
  F:    drivers/acpi/fan.c
  
  ACPI THERMAL DRIVER
  M:    Zhang Rui <rui.zhang@intel.com>
  L:    linux-acpi@vger.kernel.org
 -W:    http://www.lesswatts.org/projects/acpi/
 +W:    https://01.org/linux-acpi
  S:    Supported
  F:    drivers/acpi/*thermal*
  
  ACPI VIDEO DRIVER
  M:    Zhang Rui <rui.zhang@intel.com>
  L:    linux-acpi@vger.kernel.org
 -W:    http://www.lesswatts.org/projects/acpi/
 +W:    https://01.org/linux-acpi
  S:    Supported
  F:    drivers/acpi/video.c
  
@@@ -777,10 -763,6 +777,10 @@@ W:       http://maxim.org.za/at91_26.htm
  W:    http://www.linux4sam.org
  S:    Supported
  F:    arch/arm/mach-at91/
 +F:    arch/arm/boot/dts/at91*.dts
 +F:    arch/arm/boot/dts/at91*.dtsi
 +F:    arch/arm/boot/dts/sama*.dts
 +F:    arch/arm/boot/dts/sama*.dtsi
  
  ARM/CALXEDA HIGHBANK ARCHITECTURE
  M:    Rob Herring <rob.herring@calxeda.com>
@@@ -842,21 -824,15 +842,21 @@@ S:      Maintaine
  F:    arch/arm/mach-gemini/
  
  ARM/CSR SIRFPRIMA2 MACHINE SUPPORT
 -M:    Barry Song <baohua.song@csr.com>
 +M:    Barry Song <baohua@kernel.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/baohua/linux.git
  S:    Maintained
  F:    arch/arm/mach-prima2/
 +F:    drivers/clk/clk-prima2.c
 +F:    drivers/clocksource/timer-prima2.c
 +F:    drivers/clocksource/timer-marco.c
  F:    drivers/dma/sirf-dma.c
  F:    drivers/i2c/busses/i2c-sirf.c
 +F:    drivers/input/misc/sirfsoc-onkey.c
 +F:    drivers/irqchip/irq-sirfsoc.c
  F:    drivers/mmc/host/sdhci-sirf.c
  F:    drivers/pinctrl/sirf/
 +F:    drivers/rtc/rtc-sirfsoc.c
  F:    drivers/spi/spi-sirf.c
  
  ARM/EBSA110 MACHINE SUPPORT
@@@ -947,7 -923,7 +947,7 @@@ M: Javier Martinez Canillas <javier@dow
  L:    linux-omap@vger.kernel.org
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -F:    arch/arm/mach-omap2/board-igep0020.c
 +F:    arch/arm/boot/dts/omap3-igep*
  
  ARM/INCOME PXA270 SUPPORT
  M:    Marek Vasut <marek.vasut@gmail.com>
@@@ -1027,7 -1003,6 +1027,7 @@@ ARM/Marvell Armada 370 and Armada XP SO
  M:    Jason Cooper <jason@lakedaemon.net>
  M:    Andrew Lunn <andrew@lunn.ch>
  M:    Gregory Clement <gregory.clement@free-electrons.com>
 +M:    Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-mvebu/
  ARM/Marvell Dove/Kirkwood/MV78xx0/Orion SOC support
  M:    Jason Cooper <jason@lakedaemon.net>
  M:    Andrew Lunn <andrew@lunn.ch>
 +M:    Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-dove/
@@@ -1070,6 -1044,7 +1070,6 @@@ S:      Maintaine
  ARM/NOMADIK ARCHITECTURE
  M:    Alessandro Rubini <rubini@unipv.it>
  M:    Linus Walleij <linus.walleij@linaro.org>
 -M:    STEricsson <STEricsson_nomadik_linux@list.st.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-nomadik/
@@@ -1167,12 -1142,10 +1167,12 @@@ F:   drivers/net/ethernet/i825xx/ether1
  F:    drivers/net/ethernet/seeq/ether3*
  F:    drivers/scsi/arm/
  
 -ARM/SHARK MACHINE SUPPORT
 -M:    Alexander Schulz <alex@shark-linux.de>
 -W:    http://www.shark-linux.de/shark.html
 +ARM/Rockchip SoC support
 +M:    Heiko Stuebner <heiko@sntech.de>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 +F:    arch/arm/mach-rockchip/
 +F:    drivers/*/*rockchip*
  
  ARM/SAMSUNG ARM ARCHITECTURES
  M:    Ben Dooks <ben-linux@fluff.org>
@@@ -1181,8 -1154,6 +1181,8 @@@ L:      linux-arm-kernel@lists.infradead.or
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
  W:    http://www.fluff.org/ben/linux/
  S:    Maintained
 +F:    arch/arm/boot/dts/s3c*
 +F:    arch/arm/boot/dts/exynos*
  F:    arch/arm/plat-samsung/
  F:    arch/arm/mach-s3c24*/
  F:    arch/arm/mach-s3c64xx/
@@@ -1425,7 -1396,7 +1425,7 @@@ M:      Wolfram Sang <wsa@the-dreams.de
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
  F:    drivers/misc/eeprom/at24.c
 -F:    include/linux/i2c/at24.h
 +F:    include/linux/platform_data/at24.h
  
  ATA OVER ETHERNET (AOE) DRIVER
  M:    "Ed L. Cashin" <ecashin@coraid.com>
@@@ -1674,15 -1645,16 +1674,15 @@@ S:   Maintaine
  F:    drivers/net/wireless/b43legacy/
  
  BACKLIGHT CLASS/SUBSYSTEM
 -M:    Richard Purdie <rpurdie@rpsys.net>
  M:    Jingoo Han <jg1.han@samsung.com>
  S:    Maintained
  F:    drivers/video/backlight/
  F:    include/linux/backlight.h
  
  BATMAN ADVANCED
 -M:    Marek Lindner <lindner_marek@yahoo.de>
 -M:    Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
 -M:    Antonio Quartulli <ordex@autistici.org>
 +M:    Marek Lindner <mareklindner@neomailbox.ch>
 +M:    Simon Wunderlich <sw@simonwunderlich.de>
 +M:    Antonio Quartulli <antonio@meshcoding.com>
  L:    b.a.t.m.a.n@lists.open-mesh.org
  W:    http://www.open-mesh.org/
  S:    Maintained
@@@ -1813,7 -1785,6 +1813,7 @@@ F:      include/net/bluetooth
  
  BONDING DRIVER
  M:    Jay Vosburgh <fubar@us.ibm.com>
 +M:    Veaceslav Falico <vfalico@redhat.com>
  M:    Andy Gospodarek <andy@greyhouse.net>
  L:    netdev@vger.kernel.org
  W:    http://sourceforge.net/projects/bonding/
@@@ -1835,14 -1806,13 +1835,14 @@@ F:   drivers/net/ethernet/broadcom/bnx2.
  F:    drivers/net/ethernet/broadcom/bnx2_*
  
  BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER
 -M:    Eilon Greenstein <eilong@broadcom.com>
 +M:    Ariel Elior <ariele@broadcom.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/broadcom/bnx2x/
  
  BROADCOM BCM281XX/BCM11XXX ARM ARCHITECTURE
 -M:    Christian Daudt <csd@broadcom.com>
 +M:    Christian Daudt <bcm@fixthebug.org>
 +L:    bcm-kernel-feedback-list@broadcom.com
  T:    git git://git.github.com/broadcom/bcm11351
  S:    Maintained
  F:    arch/arm/mach-bcm/
@@@ -1880,7 -1850,7 +1880,7 @@@ S:      Supporte
  F:    drivers/net/wireless/brcm80211/
  
  BROADCOM BNX2FC 10 GIGABIT FCOE DRIVER
 -M:    Bhanu Prakash Gollapudi <bprakash@broadcom.com>
 +M:    Eddie Wai <eddie.wai@broadcom.com>
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    drivers/scsi/bnx2fc/
@@@ -2323,7 -2293,7 +2323,7 @@@ S:      Maintaine
  F:    drivers/net/ethernet/ti/cpmac.c
  
  CPU FREQUENCY DRIVERS
 -M:    Rafael J. Wysocki <rjw@sisk.pl>
 +M:    Rafael J. Wysocki <rjw@rjwysocki.net>
  M:    Viresh Kumar <viresh.kumar@linaro.org>
  L:    cpufreq@vger.kernel.org
  L:    linux-pm@vger.kernel.org
@@@ -2354,7 -2324,7 +2354,7 @@@ S:      Maintaine
  F:      drivers/cpuidle/cpuidle-big_little.c
  
  CPUIDLE DRIVERS
 -M:    Rafael J. Wysocki <rjw@sisk.pl>
 +M:    Rafael J. Wysocki <rjw@rjwysocki.net>
  M:    Daniel Lezcano <daniel.lezcano@linaro.org>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
@@@ -2385,7 -2355,7 +2385,7 @@@ F:      kernel/cpuset.
  
  CRAMFS FILESYSTEM
  W:    http://sourceforge.net/projects/cramfs/
 -S:    Orphan
 +S:    Orphan / Obsolete
  F:    Documentation/filesystems/cramfs.txt
  F:    fs/cramfs/
  
@@@ -2468,7 -2438,7 +2468,7 @@@ S:      Maintaine
  F:    drivers/media/dvb-frontends/cxd2820r*
  
  CXGB3 ETHERNET DRIVER (CXGB3)
 -M:    Divy Le Ray <divy@chelsio.com>
 +M:    Santosh Raspatur <santosh@chelsio.com>
  L:    netdev@vger.kernel.org
  W:    http://www.chelsio.com
  S:    Supported
@@@ -2660,7 -2630,6 +2660,7 @@@ M:      dm-devel@redhat.co
  L:    dm-devel@redhat.com
  W:    http://sources.redhat.com/dm
  Q:    http://patchwork.kernel.org/project/dm-devel/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git
  T:    quilt http://people.redhat.com/agk/patches/linux/editing/
  S:    Maintained
  F:    Documentation/device-mapper/
@@@ -2670,18 -2639,6 +2670,18 @@@ F:    include/linux/device-mapper.
  F:    include/linux/dm-*.h
  F:    include/uapi/linux/dm-*.h
  
 +DIGI NEO AND CLASSIC PCI PRODUCTS
 +M:    Lidza Louina <lidza.louina@gmail.com>
 +L:    driverdev-devel@linuxdriverproject.org
 +S:    Maintained
 +F:    drivers/staging/dgnc/
 +
 +DIGI EPCA PCI PRODUCTS
 +M:    Lidza Louina <lidza.louina@gmail.com>
 +L:    driverdev-devel@linuxdriverproject.org
 +S:    Maintained
 +F:    drivers/staging/dgap/
 +
  DIOLAN U2C-12 I2C DRIVER
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-i2c@vger.kernel.org
@@@ -2742,8 -2699,6 +2742,8 @@@ T:      git git://git.linaro.org/people/sumi
  DMA GENERIC OFFLOAD ENGINE SUBSYSTEM
  M:    Vinod Koul <vinod.koul@intel.com>
  M:    Dan Williams <dan.j.williams@intel.com>
 +L:    dmaengine@vger.kernel.org
 +Q:    https://patchwork.kernel.org/project/linux-dmaengine/list/
  S:    Supported
  F:    drivers/dma/
  F:    include/linux/dma*
@@@ -2847,10 -2802,8 +2847,10 @@@ M:    Terje Bergström <tbergstrom@nvidia.
  L:    dri-devel@lists.freedesktop.org
  L:    linux-tegra@vger.kernel.org
  T:    git git://anongit.freedesktop.org/tegra/linux.git
 -S:    Maintained
 +S:    Supported
 +F:    drivers/gpu/drm/tegra/
  F:    drivers/gpu/host1x/
 +F:    include/linux/host1x.h
  F:    include/uapi/drm/tegra_drm.h
  F:    Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt
  
@@@ -3063,14 -3016,6 +3063,14 @@@ W:    bluesmoke.sourceforge.ne
  S:    Maintained
  F:    drivers/edac/amd64_edac*
  
 +EDAC-CALXEDA
 +M:    Doug Thompson <dougthompson@xmission.com>
 +M:    Robert Richter <rric@kernel.org>
 +L:    linux-edac@vger.kernel.org
 +W:    bluesmoke.sourceforge.net
 +S:    Maintained
 +F:    drivers/edac/highbank*
 +
  EDAC-CAVIUM
  M:    Ralf Baechle <ralf@linux-mips.org>
  M:    David Daney <david.daney@cavium.com>
@@@ -3152,13 -3097,6 +3152,13 @@@ W:    bluesmoke.sourceforge.ne
  S:    Maintained
  F:    drivers/edac/i82975x_edac.c
  
 +EDAC-MPC85XX
 +M:    Johannes Thumshirn <johannes.thumshirn@men.de>
 +L:    linux-edac@vger.kernel.org
 +W:    bluesmoke.sourceforge.net
 +S:    Maintained
 +F:    drivers/edac/mpc85xx_edac.[ch]
 +
  EDAC-PASEMI
  M:    Egor Martovetsky <egor@pasemi.com>
  L:    linux-edac@vger.kernel.org
@@@ -3596,7 -3534,7 +3596,7 @@@ F:      fs/freevxfs
  
  FREEZER
  M:    Pavel Machek <pavel@ucw.cz>
 -M:    "Rafael J. Wysocki" <rjw@sisk.pl>
 +M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  L:    linux-pm@vger.kernel.org
  S:    Supported
  F:    Documentation/power/freezing-of-tasks.txt
@@@ -3667,12 -3605,6 +3667,12 @@@ L:    linux-scsi@vger.kernel.or
  S:    Odd Fixes (e.g., new signatures)
  F:    drivers/scsi/fdomain.*
  
 +GCOV BASED KERNEL PROFILING
 +M:    Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
 +S:    Maintained
 +F:    kernel/gcov/
 +F:    Documentation/gcov.txt
 +
  GDT SCSI DISK ARRAY CONTROLLER DRIVER
  M:    Achim Leubner <achim_leubner@adaptec.com>
  L:    linux-scsi@vger.kernel.org
@@@ -3722,14 -3654,6 +3722,14 @@@ S:    Maintaine
  F:    include/asm-generic/
  F:    include/uapi/asm-generic/
  
 +GENERIC PHY FRAMEWORK
 +M:    Kishon Vijay Abraham I <kishon@ti.com>
 +L:    linux-kernel@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kishon/linux-phy.git
 +S:    Supported
 +F:    drivers/phy/
 +F:    include/linux/phy/
 +
  GENERIC UIO DRIVER FOR PCI DEVICES
  M:    "Michael S. Tsirkin" <mst@redhat.com>
  L:    kvm@vger.kernel.org
@@@ -3946,7 -3870,7 +3946,7 @@@ F:      drivers/video/hgafb.
  
  HIBERNATION (aka Software Suspend, aka swsusp)
  M:    Pavel Machek <pavel@ucw.cz>
 -M:    "Rafael J. Wysocki" <rjw@sisk.pl>
 +M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  L:    linux-pm@vger.kernel.org
  S:    Supported
  F:    arch/x86/power/
@@@ -4271,7 -4195,7 +4271,7 @@@ S:      Maintaine
  F:    drivers/media/rc/iguanair.c
  
  IIO SUBSYSTEM AND DRIVERS
 -M:    Jonathan Cameron <jic23@cam.ac.uk>
 +M:    Jonathan Cameron <jic23@kernel.org>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
  F:    drivers/iio/
@@@ -4396,7 -4320,7 +4396,7 @@@ F:      drivers/video/i810
  INTEL MENLOW THERMAL DRIVER
  M:    Sujith Thomas <sujith.thomas@intel.com>
  L:    platform-driver-x86@vger.kernel.org
 -W:    http://www.lesswatts.org/projects/acpi/
 +W:    https://01.org/linux-acpi
  S:    Supported
  F:    drivers/platform/x86/intel_menlow.c
  
@@@ -4408,10 -4332,7 +4408,10 @@@ F:    arch/x86/kernel/microcode_intel.
  
  INTEL I/OAT DMA DRIVER
  M:    Dan Williams <dan.j.williams@intel.com>
 -S:    Maintained
 +M:    Dave Jiang <dave.jiang@intel.com>
 +L:    dmaengine@vger.kernel.org
 +Q:    https://patchwork.kernel.org/project/linux-dmaengine/list/
 +S:    Supported
  F:    drivers/dma/ioat*
  
  INTEL IOMMU (VT-d)
@@@ -4470,12 -4391,6 +4470,12 @@@ F:    Documentation/networking/ixgbevf.tx
  F:    Documentation/networking/i40e.txt
  F:    drivers/net/ethernet/intel/
  
 +INTEL-MID GPIO DRIVER
 +M:    David Cohen <david.a.cohen@linux.intel.com>
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/gpio/gpio-intel-mid.c
 +
  INTEL PRO/WIRELESS 2100, 2200BG, 2915ABG NETWORK CONNECTION SUPPORT
  M:    Stanislav Yakovlev <stas.yakovlev@gmail.com>
  L:    linux-wireless@vger.kernel.org
@@@ -4542,13 -4457,6 +4542,13 @@@ L:    linux-serial@vger.kernel.or
  S:    Maintained
  F:    drivers/tty/serial/ioc3_serial.c
  
 +IOMMU DRIVERS
 +M:    Joerg Roedel <joro@8bytes.org>
 +L:    iommu@lists.linux-foundation.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
 +S:    Maintained
 +F:    drivers/iommu/
 +
  IP MASQUERADING
  M:    Juanjo Ciarlante <jjciarla@raiz.uncu.edu.ar>
  S:    Maintained
@@@ -4814,18 -4722,10 +4814,18 @@@ S:   Maintaine
  F:    Documentation/hwmon/k8temp
  F:    drivers/hwmon/k8temp.c
  
 +KTAP
 +M:    Jovi Zhangwei <jovi.zhangwei@gmail.com>
 +W:    http://www.ktap.org
 +L:    ktap@freelists.org
 +S:    Maintained
 +F:    drivers/staging/ktap/
 +
  KCONFIG
 -M:    Michal Marek <mmarek@suse.cz>
 +M:    "Yann E. MORIN" <yann.morin.1998@free.fr>
  L:    linux-kbuild@vger.kernel.org
 -S:    Odd Fixes
 +T:    git://gitorious.org/linux-kconfig/linux-kconfig
 +S:    Maintained
  F:    Documentation/kbuild/kconfig-language.txt
  F:    scripts/kconfig/
  
@@@ -4888,8 -4788,7 +4888,8 @@@ KERNEL VIRTUAL MACHINE (KVM
  M:    Gleb Natapov <gleb@redhat.com>
  M:    Paolo Bonzini <pbonzini@redhat.com>
  L:    kvm@vger.kernel.org
 -W:    http://linux-kvm.org
 +W:    http://www.linux-kvm.org
 +T:    git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
  S:    Supported
  F:    Documentation/*/kvm*.txt
  F:    Documentation/virtual/kvm/
@@@ -5229,7 -5128,6 +5229,7 @@@ M:      Jean Delvare <khali@linux-fr.org
  L:    lm-sensors@lm-sensors.org
  S:    Maintained
  F:    Documentation/hwmon/lm90
 +F:    Documentation/devicetree/bindings/hwmon/lm90.txt
  F:    drivers/hwmon/lm90.c
  
  LM95234 HARDWARE MONITOR DRIVER
@@@ -5408,7 -5306,7 +5408,7 @@@ S:      Orpha
  F:    drivers/net/wireless/libertas/
  
  MARVELL MV643XX ETHERNET DRIVER
 -M:    Lennert Buytenhek <buytenh@wantstofly.org>
 +M:    Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/ethernet/marvell/mv643xx_eth.*
@@@ -6164,12 -6062,6 +6164,12 @@@ L:    linux-omap@vger.kernel.or
  S:    Maintained
  F:    drivers/gpio/gpio-omap.c
  
 +OMAP/NEWFLOW NANOBONE MACHINE SUPPORT
 +M:    Mark Jackson <mpfj@newflow.co.uk>
 +L:    linux-omap@vger.kernel.org
 +S:    Maintained
 +F:    arch/arm/boot/dts/am335x-nano.dts
 +
  OMFS FILESYSTEM
  M:    Bob Copeland <me@bobcopeland.com>
  L:    linux-karma-devel@lists.sourceforge.net
@@@ -6446,7 -6338,6 +6446,7 @@@ S:      Supporte
  F:    Documentation/PCI/
  F:    drivers/pci/
  F:    include/linux/pci*
 +F:    arch/x86/pci/
  
  PCI DRIVER FOR NVIDIA TEGRA
  M:    Thierry Reding <thierry.reding@gmail.com>
@@@ -6455,12 -6346,6 +6455,12 @@@ S:    Supporte
  F:    Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt
  F:    drivers/pci/host/pci-tegra.c
  
 +PCI DRIVER FOR SAMSUNG EXYNOS
 +M:    Jingoo Han <jg1.han@samsung.com>
 +L:    linux-pci@vger.kernel.org
 +S:    Maintained
 +F:    drivers/pci/host/pci-exynos.c
 +
  PCMCIA SUBSYSTEM
  P:    Linux PCMCIA Team
  L:    linux-pcmcia@lists.infradead.org
@@@ -6710,7 -6595,7 +6710,7 @@@ S:      Obsolet
  F:    drivers/net/wireless/prism54/
  
  PROMISE SATA TX2/TX4 CONTROLLER LIBATA DRIVER
 -M:    Mikael Pettersson <mikpe@it.uu.se>
 +M:    Mikael Pettersson <mikpelinux@gmail.com>
  L:    linux-ide@vger.kernel.org
  S:    Maintained
  F:    drivers/ata/sata_promise.*
@@@ -6799,7 -6684,8 +6799,7 @@@ PWM SUBSYSTE
  M:    Thierry Reding <thierry.reding@gmail.com>
  L:    linux-pwm@vger.kernel.org
  S:    Maintained
 -W:    http://gitorious.org/linux-pwm
 -T:    git git://gitorious.org/linux-pwm/linux-pwm.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm.git
  F:    Documentation/pwm.txt
  F:    Documentation/devicetree/bindings/pwm/
  F:    include/linux/pwm.h
@@@ -6930,14 -6816,6 +6930,14 @@@ L:    linux-hexagon@vger.kernel.or
  S:    Supported
  F:    arch/hexagon/
  
 +QUALCOMM WCN36XX WIRELESS DRIVER
 +M:    Eugene Krasnikov <k.eugene.e@gmail.com>
 +L:    wcn36xx@lists.infradead.org
 +W:    http://wireless.kernel.org/en/users/Drivers/wcn36xx
 +T:    git git://github.com/KrasnikovEugene/wcn36xx.git
 +S:    Supported
 +F:    drivers/net/wireless/ath/wcn36xx/
 +
  QUICKCAM PARALLEL PORT WEBCAMS
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
@@@ -7025,7 -6903,7 +7025,7 @@@ M:      "Paul E. McKenney" <paulmck@linux.vn
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
  F:    Documentation/RCU/torture.txt
 -F:    kernel/rcutorture.c
 +F:    kernel/rcu/torture.c
  
  RDC R-321X SoC
  M:    Florian Fainelli <florian@openwrt.org>
@@@ -7052,9 -6930,8 +7052,9 @@@ T:      git git://git.kernel.org/pub/scm/lin
  F:    Documentation/RCU/
  X:    Documentation/RCU/torture.txt
  F:    include/linux/rcu*
 -F:    kernel/rcu*
 -X:    kernel/rcutorture.c
 +X:    include/linux/srcu.h
 +F:    kernel/rcu/
 +X:    kernel/rcu/torture.c
  
  REAL TIME CLOCK (RTC) SUBSYSTEM
  M:    Alessandro Zummo <a.zummo@towertech.it>
@@@ -7367,7 -7244,7 +7367,7 @@@ S:      Odd Fixe
  F:    drivers/media/usb/tlg2300/
  
  SC1200 WDT DRIVER
 -M:    Zwane Mwaikambo <zwane@arm.linux.org.uk>
 +M:    Zwane Mwaikambo <zwanem@gmail.com>
  S:    Maintained
  F:    drivers/watchdog/sc1200wdt.c
  
@@@ -7379,13 -7256,11 +7379,13 @@@ S:   Maintaine
  F:    kernel/sched/
  F:    include/linux/sched.h
  F:    include/uapi/linux/sched.h
 +F:    kernel/wait.c
 +F:    include/linux/wait.h
  
  SCORE ARCHITECTURE
 -M:    Chen Liqin <liqin.chen@sunplusct.com>
 +M:    Chen Liqin <liqin.linux@gmail.com>
  M:    Lennox Wu <lennox.wu@gmail.com>
 -W:    http://www.sunplusct.com
 +W:    http://www.sunplus.com
  S:    Supported
  F:    arch/score/
  
@@@ -7515,9 -7390,10 +7515,10 @@@ SELINUX SECURITY MODUL
  M:    Stephen Smalley <sds@tycho.nsa.gov>
  M:    James Morris <james.l.morris@oracle.com>
  M:    Eric Paris <eparis@parisplace.org>
+ M:    Paul Moore <paul@paul-moore.com>
  L:    selinux@tycho.nsa.gov (subscribers-only, general discussion)
  W:    http://selinuxproject.org
- T:    git git://git.infradead.org/users/eparis/selinux.git
+ T:    git git://git.infradead.org/users/pcmoore/selinux
  S:    Supported
  F:    include/linux/selinux*
  F:    security/selinux/
@@@ -7743,8 -7619,8 +7744,8 @@@ M:      "Paul E. McKenney" <paulmck@linux.vn
  W:    http://www.rdrop.com/users/paulmck/RCU/
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
 -F:    include/linux/srcu*
 -F:    kernel/srcu*
 +F:    include/linux/srcu.h
 +F:    kernel/rcu/srcu.c
  
  SMACK SECURITY MODULE
  M:    Casey Schaufler <casey@schaufler-ca.com>
@@@ -7915,13 -7791,6 +7916,13 @@@ F:    Documentation/sound/alsa/soc
  F:    sound/soc/
  F:    include/sound/soc*
  
 +SOUND - DMAENGINE HELPERS
 +M:    Lars-Peter Clausen <lars@metafoo.de>
 +S:    Supported
 +F:    include/sound/dmaengine_pcm.h
 +F:    sound/core/pcm_dmaengine.c
 +F:    sound/soc/soc-generic-dmaengine-pcm.c
 +
  SPARC + UltraSPARC (sparc/sparc64)
  M:    "David S. Miller" <davem@davemloft.net>
  L:    sparclinux@vger.kernel.org
@@@ -8079,7 -7948,7 +8080,7 @@@ S:      Maintaine
  F:    drivers/staging/media/go7007/
  
  STAGING - INDUSTRIAL IO
 -M:    Jonathan Cameron <jic23@cam.ac.uk>
 +M:    Jonathan Cameron <jic23@kernel.org>
  L:    linux-iio@vger.kernel.org
  S:    Odd Fixes
  F:    drivers/staging/iio/
@@@ -8201,7 -8070,7 +8202,7 @@@ F:      drivers/sh
  SUSPEND TO RAM
  M:    Len Brown <len.brown@intel.com>
  M:    Pavel Machek <pavel@ucw.cz>
 -M:    "Rafael J. Wysocki" <rjw@sisk.pl>
 +M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  L:    linux-pm@vger.kernel.org
  S:    Supported
  F:    Documentation/power/
@@@ -8394,72 -8263,14 +8395,72 @@@ L:   linux-media@vger.kernel.or
  S:    Maintained
  F:    drivers/media/rc/ttusbir.c
  
 -TEGRA SUPPORT
 +TEGRA ARCHITECTURE SUPPORT
  M:    Stephen Warren <swarren@wwwdotorg.org>
 +M:    Thierry Reding <thierry.reding@gmail.com>
  L:    linux-tegra@vger.kernel.org
  Q:    http://patchwork.ozlabs.org/project/linux-tegra/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/swarren/linux-tegra.git
  S:    Supported
  N:    [^a-z]tegra
  
 +TEGRA ASOC DRIVER
 +M:    Stephen Warren <swarren@wwwdotorg.org>
 +S:    Supported
 +F:    sound/soc/tegra/
 +
 +TEGRA CLOCK DRIVER
 +M:    Peter De Schrijver <pdeschrijver@nvidia.com>
 +M:    Prashant Gaikwad <pgaikwad@nvidia.com>
 +S:    Supported
 +F:    drivers/clk/tegra/
 +
 +TEGRA DMA DRIVER
 +M:    Laxman Dewangan <ldewangan@nvidia.com>
 +S:    Supported
 +F:    drivers/dma/tegra20-apb-dma.c
 +
 +TEGRA GPIO DRIVER
 +M:    Stephen Warren <swarren@wwwdotorg.org>
 +S:    Supported
 +F:    drivers/gpio/gpio-tegra.c
 +
 +TEGRA I2C DRIVER
 +M:    Laxman Dewangan <ldewangan@nvidia.com>
 +S:    Supported
 +F:    drivers/i2c/busses/i2c-tegra.c
 +
 +TEGRA IOMMU DRIVERS
 +M:    Hiroshi Doyu <hdoyu@nvidia.com>
 +S:    Supported
 +F:    drivers/iommu/tegra*
 +
 +TEGRA KBC DRIVER
 +M:    Rakesh Iyer <riyer@nvidia.com>
 +M:    Laxman Dewangan <ldewangan@nvidia.com>
 +S:    Supported
 +F:    drivers/input/keyboard/tegra-kbc.c
 +
 +TEGRA PINCTRL DRIVER
 +M:    Stephen Warren <swarren@wwwdotorg.org>
 +S:    Supported
 +F:    drivers/pinctrl/pinctrl-tegra*
 +
 +TEGRA PWM DRIVER
 +M:    Thierry Reding <thierry.reding@gmail.com>
 +S:    Supported
 +F:    drivers/pwm/pwm-tegra.c
 +
 +TEGRA SERIAL DRIVER
 +M:    Laxman Dewangan <ldewangan@nvidia.com>
 +S:    Supported
 +F:    drivers/tty/serial/serial-tegra.c
 +
 +TEGRA SPI DRIVER
 +M:    Laxman Dewangan <ldewangan@nvidia.com>
 +S:    Supported
 +F:    drivers/spi/spi-tegra*
 +
  TEHUTI ETHERNET DRIVER
  M:    Andy Gospodarek <andy@greyhouse.net>
  L:    netdev@vger.kernel.org
@@@ -8664,6 -8475,7 +8665,7 @@@ F:      drivers/media/usb/tm6000
  TPM DEVICE DRIVER
  M:    Leonidas Da Silva Barbosa <leosilva@linux.vnet.ibm.com>
  M:    Ashley Lai <ashley@ashleylai.com>
+ M:    Peter Huewe <peterhuewe@gmx.de>
  M:    Rajiv Andrade <mail@srajiv.net>
  W:    http://tpmdd.sourceforge.net
  M:    Marcel Selhorst <tpmdd@selhorst.net>
@@@ -8760,6 -8572,14 +8762,6 @@@ S:     Maintaine
  F:    arch/m68k/*/*_no.*
  F:    arch/m68k/include/asm/*_no.*
  
 -UCLINUX FOR RENESAS H8/300 (H8300)
 -M:    Yoshinori Sato <ysato@users.sourceforge.jp>
 -W:    http://uclinux-h8.sourceforge.jp/
 -S:    Supported
 -F:    arch/h8300/
 -F:    drivers/ide/ide-h8300.c
 -F:    drivers/net/ethernet/8390/ne-h8300.c
 -
  UDF FILESYSTEM
  M:    Jan Kara <jack@suse.cz>
  S:    Maintained
@@@ -8906,8 -8726,9 +8908,8 @@@ F:      Documentation/hid/hiddev.tx
  F:    drivers/hid/usbhid/
  
  USB/IP DRIVERS
 -M:    Matt Mooney <mfm@muteddisk.com>
  L:    linux-usb@vger.kernel.org
 -S:    Maintained
 +S:    Orphan
  F:    drivers/staging/usbip/
  
  USB ISP116X DRIVER
@@@ -8960,8 -8781,8 +8962,8 @@@ USB PEGASUS DRIVE
  M:    Petko Manolov <petkan@nucleusys.com>
  L:    linux-usb@vger.kernel.org
  L:    netdev@vger.kernel.org
 -T:    git git://git.code.sf.net/p/pegasus2/git
 -W:    http://pegasus2.sourceforge.net/
 +T:    git git://github.com/petkan/pegasus.git
 +W:    https://github.com/petkan/pegasus
  S:    Maintained
  F:    drivers/net/usb/pegasus.*
  
@@@ -8982,19 -8803,66 +8984,19 @@@ USB RTL8150 DRIVE
  M:    Petko Manolov <petkan@nucleusys.com>
  L:    linux-usb@vger.kernel.org
  L:    netdev@vger.kernel.org
 -T:    git git://git.code.sf.net/p/pegasus2/git
 -W:    http://pegasus2.sourceforge.net/
 +T:    git git://github.com/petkan/rtl8150.git
 +W:    https://github.com/petkan/rtl8150
  S:    Maintained
  F:    drivers/net/usb/rtl8150.c
  
 -USB SERIAL BELKIN F5U103 DRIVER
 -M:    William Greathouse <wgreathouse@smva.com>
 -L:    linux-usb@vger.kernel.org
 -S:    Maintained
 -F:    drivers/usb/serial/belkin_sa.*
 -
 -USB SERIAL CYPRESS M8 DRIVER
 -M:    Lonnie Mendez <dignome@gmail.com>
 -L:    linux-usb@vger.kernel.org
 -S:    Maintained
 -W:    http://geocities.com/i0xox0i
 -W:    http://firstlight.net/cvs
 -F:    drivers/usb/serial/cypress_m8.*
 -
 -USB SERIAL CYBERJACK DRIVER
 -M:    Matthias Bruestle and Harald Welte <support@reiner-sct.com>
 -W:    http://www.reiner-sct.de/support/treiber_cyberjack.php
 -S:    Maintained
 -F:    drivers/usb/serial/cyberjack.c
 -
 -USB SERIAL DIGI ACCELEPORT DRIVER
 -M:    Peter Berger <pberger@brimson.com>
 -M:    Al Borchers <alborchers@steinerpoint.com>
 +USB SERIAL SUBSYSTEM
 +M:    Johan Hovold <jhovold@gmail.com>
  L:    linux-usb@vger.kernel.org
  S:    Maintained
 -F:    drivers/usb/serial/digi_acceleport.c
 -
 -USB SERIAL DRIVER
 -M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 -L:    linux-usb@vger.kernel.org
 -S:    Supported
  F:    Documentation/usb/usb-serial.txt
 -F:    drivers/usb/serial/generic.c
 -F:    drivers/usb/serial/usb-serial.c
 +F:    drivers/usb/serial/
  F:    include/linux/usb/serial.h
  
 -USB SERIAL EMPEG EMPEG-CAR MARK I/II DRIVER
 -M:    Gary Brubaker <xavyer@ix.netcom.com>
 -L:    linux-usb@vger.kernel.org
 -S:    Maintained
 -F:    drivers/usb/serial/empeg.c
 -
 -USB SERIAL KEYSPAN DRIVER
 -M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 -L:    linux-usb@vger.kernel.org
 -S:    Maintained
 -F:    drivers/usb/serial/*keyspan*
 -
 -USB SERIAL WHITEHEAT DRIVER
 -M:    Support Department <support@connecttech.com>
 -L:    linux-usb@vger.kernel.org
 -W:    http://www.connecttech.com
 -S:    Supported
 -F:    drivers/usb/serial/whiteheat*
 -
  USB SMSC75XX ETHERNET DRIVER
  M:    Steve Glendinning <steve.glendinning@shawell.net>
  L:    netdev@vger.kernel.org
@@@ -9500,7 -9368,6 +9502,7 @@@ F:      arch/arm64/include/asm/xen
  
  XEN NETWORK BACKEND DRIVER
  M:    Ian Campbell <ian.campbell@citrix.com>
 +M:    Wei Liu <wei.liu2@citrix.com>
  L:    xen-devel@lists.xenproject.org (moderated for non-subscribers)
  L:    netdev@vger.kernel.org
  S:    Supported
diff --combined crypto/Kconfig
index 71f337aefa3905feaca892b7ac3b49b4bcb411e3,ba061b091d9fc4e413e564f9ea6cb90e864710b4..4ae5734fb4733bb8e264565867fa6d73d7b11f6b
@@@ -776,22 -776,6 +776,22 @@@ config CRYPTO_AES_AR
  
          See <http://csrc.nist.gov/encryption/aes/> for more information.
  
 +config CRYPTO_AES_ARM_BS
 +      tristate "Bit sliced AES using NEON instructions"
 +      depends on ARM && KERNEL_MODE_NEON
 +      select CRYPTO_ALGAPI
 +      select CRYPTO_AES_ARM
 +      select CRYPTO_ABLK_HELPER
 +      help
 +        Use a faster and more secure NEON based implementation of AES in CBC,
 +        CTR and XTS modes
 +
 +        Bit sliced AES gives around 45% speedup on Cortex-A15 for CTR mode
 +        and for XTS mode encryption, CBC and XTS mode decryption speedup is
 +        around 25%. (CBC encryption speed is not affected by this driver.)
 +        This implementation does not rely on any lookup tables so it is
 +        believed to be invulnerable to cache timing attacks.
 +
  config CRYPTO_ANUBIS
        tristate "Anubis cipher algorithm"
        select CRYPTO_ALGAPI
@@@ -1402,6 -1386,9 +1402,9 @@@ config CRYPTO_USER_API_SKCIPHE
          This option enables the user-spaces interface for symmetric
          key cipher algorithms.
  
+ config CRYPTO_HASH_INFO
+       bool
  source "drivers/crypto/Kconfig"
  source crypto/asymmetric_keys/Kconfig
  
index 94c280d36e8b3bfaea00ee36c4fe3215818b3c86,9b483705694e9a70e60af545b43b70738bb59ce3..c8ff4df81779f3b66a3e62abab055b4e404b81e7
@@@ -10,7 -10,6 +10,7 @@@
  #include <linux/errno.h>
  #include <linux/err.h>
  #include <linux/interrupt.h>
 +#include <xen/xen.h>
  #include <xen/events.h>
  #include <xen/interface/io/tpmif.h>
  #include <xen/grant_table.h>
@@@ -143,6 -142,32 +143,6 @@@ static int vtpm_recv(struct tpm_chip *c
        return length;
  }
  
 -ssize_t tpm_show_locality(struct device *dev, struct device_attribute *attr,
 -                        char *buf)
 -{
 -      struct tpm_chip *chip = dev_get_drvdata(dev);
 -      struct tpm_private *priv = TPM_VPRIV(chip);
 -      u8 locality = priv->shr->locality;
 -
 -      return sprintf(buf, "%d\n", locality);
 -}
 -
 -ssize_t tpm_store_locality(struct device *dev, struct device_attribute *attr,
 -                      const char *buf, size_t len)
 -{
 -      struct tpm_chip *chip = dev_get_drvdata(dev);
 -      struct tpm_private *priv = TPM_VPRIV(chip);
 -      u8 val;
 -
 -      int rv = kstrtou8(buf, 0, &val);
 -      if (rv)
 -              return rv;
 -
 -      priv->shr->locality = val;
 -
 -      return len;
 -}
 -
  static const struct file_operations vtpm_ops = {
        .owner = THIS_MODULE,
        .llseek = no_llseek,
@@@ -163,6 -188,8 +163,6 @@@ static DEVICE_ATTR(caps, S_IRUGO, tpm_s
  static DEVICE_ATTR(cancel, S_IWUSR | S_IWGRP, NULL, tpm_store_cancel);
  static DEVICE_ATTR(durations, S_IRUGO, tpm_show_durations, NULL);
  static DEVICE_ATTR(timeouts, S_IRUGO, tpm_show_timeouts, NULL);
 -static DEVICE_ATTR(locality, S_IRUGO | S_IWUSR, tpm_show_locality,
 -              tpm_store_locality);
  
  static struct attribute *vtpm_attrs[] = {
        &dev_attr_pubek.attr,
        &dev_attr_cancel.attr,
        &dev_attr_durations.attr,
        &dev_attr_timeouts.attr,
 -      &dev_attr_locality.attr,
        NULL,
  };
  
@@@ -182,6 -210,8 +182,6 @@@ static struct attribute_group vtpm_attr
        .attrs = vtpm_attrs,
  };
  
 -#define TPM_LONG_TIMEOUT   (10 * 60 * HZ)
 -
  static const struct tpm_vendor_specific tpm_vtpm = {
        .status = vtpm_status,
        .recv = vtpm_recv,
        .miscdev = {
                .fops = &vtpm_ops,
        },
 -      .duration = {
 -              TPM_LONG_TIMEOUT,
 -              TPM_LONG_TIMEOUT,
 -              TPM_LONG_TIMEOUT,
 -      },
  };
  
  static irqreturn_t tpmif_interrupt(int dummy, void *dev_id)
@@@ -351,8 -386,6 +351,6 @@@ static int tpmfront_probe(struct xenbus
  
        tpm_get_timeouts(priv->chip);
  
-       dev_set_drvdata(&dev->dev, priv->chip);
        return rv;
  }
  
diff --combined init/Kconfig
index 296dfcaf613fcc5daa618f263ebd5435028f0cb4,0ff5407a8378ce3007de777f49003420ae4cd193..79383d3aa5dc5f7fe64abdcaf7d511144ca016e5
@@@ -284,7 -284,7 +284,7 @@@ config AUDI
  
  config AUDITSYSCALL
        bool "Enable system-call auditing support"
 -      depends on AUDIT && (X86 || PPC || S390 || IA64 || UML || SPARC64 || SUPERH || (ARM && AEABI && !OABI_COMPAT))
 +      depends on AUDIT && (X86 || PARISC || PPC || S390 || IA64 || UML || SPARC64 || SUPERH || (ARM && AEABI && !OABI_COMPAT))
        default y if SECURITY_SELINUX
        help
          Enable low-overhead system-call auditing infrastructure that
@@@ -301,6 -301,20 +301,6 @@@ config AUDIT_TRE
        depends on AUDITSYSCALL
        select FSNOTIFY
  
 -config AUDIT_LOGINUID_IMMUTABLE
 -      bool "Make audit loginuid immutable"
 -      depends on AUDIT
 -      help
 -        The config option toggles if a task setting its loginuid requires
 -        CAP_SYS_AUDITCONTROL or if that task should require no special permissions
 -        but should instead only allow setting its loginuid if it was never
 -        previously set.  On systems which use systemd or a similar central
 -        process to restart login services this should be set to true.  On older
 -        systems in which an admin would typically have to directly stop and
 -        start processes this should be set to false.  Setting this to true allows
 -        one to drop potentially dangerous capabilites from the login tasks,
 -        but may not be backwards compatible with older init systems.
 -
  source "kernel/irq/Kconfig"
  source "kernel/time/Kconfig"
  
@@@ -340,8 -354,7 +340,8 @@@ config VIRT_CPU_ACCOUNTING_NATIV
  
  config VIRT_CPU_ACCOUNTING_GEN
        bool "Full dynticks CPU time accounting"
 -      depends on HAVE_CONTEXT_TRACKING && 64BIT
 +      depends on HAVE_CONTEXT_TRACKING
 +      depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
        select VIRT_CPU_ACCOUNTING
        select CONTEXT_TRACKING
        help
@@@ -831,7 -844,7 +831,7 @@@ config NUMA_BALANCING_DEFAULT_ENABLE
        default y
        depends on NUMA_BALANCING
        help
 -        If set, autonumic NUMA balancing will be enabled if running on a NUMA
 +        If set, automatic NUMA balancing will be enabled if running on a NUMA
          machine.
  
  config NUMA_BALANCING
        help
          This option adds support for automatic NUMA aware memory/task placement.
          The mechanism is quite primitive and is based on migrating memory when
 -        it is references to the node the task is running on.
 +        it has references to the node the task is running on.
  
          This system will be inactive on UMA systems.
  
@@@ -1655,6 -1668,18 +1655,18 @@@ config BASE_SMAL
        default 0 if BASE_FULL
        default 1 if !BASE_FULL
  
+ config SYSTEM_TRUSTED_KEYRING
+       bool "Provide system-wide ring of trusted keys"
+       depends on KEYS
+       help
+         Provide a system keyring to which trusted keys can be added.  Keys in
+         the keyring are considered to be trusted.  Keys may be added at will
+         by the kernel from compiled-in data and from hardware key stores, but
+         userspace may only add extra keys if those keys can be verified by
+         keys already in the keyring.
+         Keys in this keyring are used by module signature checking.
  menuconfig MODULES
        bool "Enable loadable module support"
        option modules
@@@ -1728,6 -1753,7 +1740,7 @@@ config MODULE_SRCVERSION_AL
  config MODULE_SIG
        bool "Module signature verification"
        depends on MODULES
+       select SYSTEM_TRUSTED_KEYRING
        select KEYS
        select CRYPTO
        select ASYMMETRIC_KEY_TYPE
diff --combined kernel/Makefile
index 09a9c94f42bde841a58b875ca7fc75c1b69f65c6,63136989c132e6095320547098e157878fd1942a..bbaf7d59c1bb14f166441e6532b55585790e4b52
@@@ -6,43 -6,57 +6,44 @@@ obj-y     = fork.o exec_domain.o panic.
            cpu.o exit.o itimer.o time.o softirq.o resource.o \
            sysctl.o sysctl_binary.o capability.o ptrace.o timer.o user.o \
            signal.o sys.o kmod.o workqueue.o pid.o task_work.o \
 -          rcupdate.o extable.o params.o posix-timers.o \
 -          kthread.o wait.o sys_ni.o posix-cpu-timers.o mutex.o \
 -          hrtimer.o rwsem.o nsproxy.o srcu.o semaphore.o \
 +          extable.o params.o posix-timers.o \
 +          kthread.o sys_ni.o posix-cpu-timers.o \
 +          hrtimer.o nsproxy.o \
            notifier.o ksysfs.o cred.o reboot.o \
 -          async.o range.o groups.o lglock.o smpboot.o
 +          async.o range.o groups.o smpboot.o
  
  ifdef CONFIG_FUNCTION_TRACER
  # Do not trace debug files and internal ftrace files
 -CFLAGS_REMOVE_lockdep.o = -pg
 -CFLAGS_REMOVE_lockdep_proc.o = -pg
 -CFLAGS_REMOVE_mutex-debug.o = -pg
 -CFLAGS_REMOVE_rtmutex-debug.o = -pg
  CFLAGS_REMOVE_cgroup-debug.o = -pg
  CFLAGS_REMOVE_irq_work.o = -pg
  endif
  
  obj-y += sched/
 +obj-y += locking/
  obj-y += power/
  obj-y += printk/
  obj-y += cpu/
  obj-y += irq/
 +obj-y += rcu/
  
  obj-$(CONFIG_CHECKPOINT_RESTORE) += kcmp.o
  obj-$(CONFIG_FREEZER) += freezer.o
  obj-$(CONFIG_PROFILING) += profile.o
  obj-$(CONFIG_STACKTRACE) += stacktrace.o
  obj-y += time/
 -obj-$(CONFIG_DEBUG_MUTEXES) += mutex-debug.o
 -obj-$(CONFIG_LOCKDEP) += lockdep.o
 -ifeq ($(CONFIG_PROC_FS),y)
 -obj-$(CONFIG_LOCKDEP) += lockdep_proc.o
 -endif
  obj-$(CONFIG_FUTEX) += futex.o
  ifeq ($(CONFIG_COMPAT),y)
  obj-$(CONFIG_FUTEX) += futex_compat.o
  endif
 -obj-$(CONFIG_RT_MUTEXES) += rtmutex.o
 -obj-$(CONFIG_DEBUG_RT_MUTEXES) += rtmutex-debug.o
 -obj-$(CONFIG_RT_MUTEX_TESTER) += rtmutex-tester.o
  obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o
  obj-$(CONFIG_SMP) += smp.o
  ifneq ($(CONFIG_SMP),y)
  obj-y += up.o
  endif
 -obj-$(CONFIG_SMP) += spinlock.o
 -obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock.o
 -obj-$(CONFIG_PROVE_LOCKING) += spinlock.o
  obj-$(CONFIG_UID16) += uid16.o
+ obj-$(CONFIG_SYSTEM_TRUSTED_KEYRING) += system_keyring.o system_certificates.o
  obj-$(CONFIG_MODULES) += module.o
- obj-$(CONFIG_MODULE_SIG) += module_signing.o modsign_pubkey.o modsign_certificate.o
+ obj-$(CONFIG_MODULE_SIG) += module_signing.o
  obj-$(CONFIG_KALLSYMS) += kallsyms.o
  obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o
  obj-$(CONFIG_KEXEC) += kexec.o
@@@ -68,6 -82,12 +69,6 @@@ obj-$(CONFIG_KGDB) += debug
  obj-$(CONFIG_DETECT_HUNG_TASK) += hung_task.o
  obj-$(CONFIG_LOCKUP_DETECTOR) += watchdog.o
  obj-$(CONFIG_SECCOMP) += seccomp.o
 -obj-$(CONFIG_RCU_TORTURE_TEST) += rcutorture.o
 -obj-$(CONFIG_TREE_RCU) += rcutree.o
 -obj-$(CONFIG_TREE_PREEMPT_RCU) += rcutree.o
 -obj-$(CONFIG_TREE_RCU_TRACE) += rcutree_trace.o
 -obj-$(CONFIG_TINY_RCU) += rcutiny.o
 -obj-$(CONFIG_TINY_PREEMPT_RCU) += rcutiny.o
  obj-$(CONFIG_RELAY) += relay.o
  obj-$(CONFIG_SYSCTL) += utsname_sysctl.o
  obj-$(CONFIG_TASK_DELAY_ACCT) += delayacct.o
@@@ -122,19 -142,52 +123,52 @@@ targets += timeconst.
  $(obj)/timeconst.h: $(obj)/hz.bc $(src)/timeconst.bc FORCE
        $(call if_changed,bc)
  
- ifeq ($(CONFIG_MODULE_SIG),y)
+ ###############################################################################
+ #
+ # Roll all the X.509 certificates that we can find together and pull them into
+ # the kernel so that they get loaded into the system trusted keyring during
+ # boot.
  #
- # Pull the signing certificate and any extra certificates into the kernel
+ # We look in the source root and the build root for all files whose name ends
+ # in ".x509".  Unfortunately, this will generate duplicate filenames, so we
+ # have make canonicalise the pathnames and then sort them to discard the
+ # duplicates.
  #
+ ###############################################################################
+ ifeq ($(CONFIG_SYSTEM_TRUSTED_KEYRING),y)
+ X509_CERTIFICATES-y := $(wildcard *.x509) $(wildcard $(srctree)/*.x509)
+ X509_CERTIFICATES-$(CONFIG_MODULE_SIG) += signing_key.x509
+ X509_CERTIFICATES := $(sort $(foreach CERT,$(X509_CERTIFICATES-y), \
+                               $(or $(realpath $(CERT)),$(CERT))))
+ ifeq ($(X509_CERTIFICATES),)
+ $(warning *** No X.509 certificates found ***)
+ endif
+ ifneq ($(wildcard $(obj)/.x509.list),)
+ ifneq ($(shell cat $(obj)/.x509.list),$(X509_CERTIFICATES))
+ $(info X.509 certificate list changed)
+ $(shell rm $(obj)/.x509.list)
+ endif
+ endif
+ kernel/system_certificates.o: $(obj)/x509_certificate_list
  
- quiet_cmd_touch = TOUCH   $@
-       cmd_touch = touch   $@
+ quiet_cmd_x509certs  = CERTS   $@
+       cmd_x509certs  = cat $(X509_CERTIFICATES) /dev/null >$@ $(foreach X509,$(X509_CERTIFICATES),; echo "  - Including cert $(X509)")
  
- extra_certificates:
-       $(call cmd,touch)
+ targets += $(obj)/x509_certificate_list
+ $(obj)/x509_certificate_list: $(X509_CERTIFICATES) $(obj)/.x509.list
+       $(call if_changed,x509certs)
  
- kernel/modsign_certificate.o: signing_key.x509 extra_certificates
+ targets += $(obj)/.x509.list
+ $(obj)/.x509.list:
+       @echo $(X509_CERTIFICATES) >$@
  
+ clean-files := x509_certificate_list .x509.list
+ endif
+ ifeq ($(CONFIG_MODULE_SIG),y)
  ###############################################################################
  #
  # If module signing is requested, say by allyesconfig, but a key has not been
diff --combined lib/Kconfig
index 06dc74200a5159c5b5458c36e2b71297e638a194,3cb879b1f28276e9f8c98dc0670caaa0dcec48df..991c98bc4a3f51e9e7f377274084bec909483ea9
@@@ -51,6 -51,13 +51,6 @@@ config PERCPU_RWSE
  config ARCH_USE_CMPXCHG_LOCKREF
        bool
  
 -config CMPXCHG_LOCKREF
 -      def_bool y if ARCH_USE_CMPXCHG_LOCKREF
 -      depends on SMP
 -      depends on !GENERIC_LOCKBREAK
 -      depends on !DEBUG_SPINLOCK
 -      depends on !DEBUG_LOCK_ALLOC
 -
  config CRC_CCITT
        tristate "CRC-CCITT functions"
        help
@@@ -182,13 -189,6 +182,13 @@@ config AUDIT_GENERI
        depends on AUDIT && !AUDIT_ARCH
        default y
  
 +config RANDOM32_SELFTEST
 +      bool "PRNG perform self test on init"
 +      default n
 +      help
 +        This option enables the 32 bit PRNG library functions to perform a
 +        self test on initialization.
 +
  #
  # compression support is select'ed if needed
  #
@@@ -322,6 -322,20 +322,20 @@@ config TEXTSEARCH_FS
  config BTREE
        boolean
  
+ config ASSOCIATIVE_ARRAY
+       bool
+       help
+         Generic associative array.  Can be searched and iterated over whilst
+         it is being modified.  It is also reasonably quick to search and
+         modify.  The algorithms are non-recursive, and the trees are highly
+         capacious.
+         See:
+               Documentation/assoc_array.txt
+         for more information.
  config HAS_IOMEM
        boolean
        depends on !NO_IOMEM
diff --combined lib/Makefile
index d480a8c9238562b144e59217cdf4ecc05b574556,1e806477e472d00fab1295004b82d9986b11f09e..b46065fd67a4741dadeabe1ced0e67ed6269b741
@@@ -42,11 -42,16 +42,12 @@@ obj-$(CONFIG_GENERIC_PCI_IOMAP) += pci_
  obj-$(CONFIG_HAS_IOMEM) += iomap_copy.o devres.o
  obj-$(CONFIG_CHECK_SIGNATURE) += check_signature.o
  obj-$(CONFIG_DEBUG_LOCKING_API_SELFTESTS) += locking-selftest.o
 -obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock_debug.o
 -lib-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o
 -lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o
 -lib-$(CONFIG_PERCPU_RWSEM) += percpu-rwsem.o
  
  CFLAGS_hweight.o = $(subst $(quote),,$(CONFIG_ARCH_HWEIGHT_CFLAGS))
  obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o
  
  obj-$(CONFIG_BTREE) += btree.o
+ obj-$(CONFIG_ASSOCIATIVE_ARRAY) += assoc_array.o
  obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o
  obj-$(CONFIG_DEBUG_LIST) += list_debug.o
  obj-$(CONFIG_DEBUG_OBJECTS) += debugobjects.o
@@@ -153,8 -158,6 +154,8 @@@ obj-$(CONFIG_INTERVAL_TREE_TEST) += int
  
  interval_tree_test-objs := interval_tree_test_main.o interval_tree.o
  
 +obj-$(CONFIG_PERCPU_TEST) += percpu_test.o
 +
  obj-$(CONFIG_ASN1) += asn1_decoder.o
  
  obj-$(CONFIG_FONT_SUPPORT) += fonts/
diff --combined security/selinux/hooks.c
index c540795fb3f2647619cb4705281872e93592e21e,6d0bf5c0c8323a4f0f56f1879fce1a6c4c53e8fa..794c3ca49eac92998caa17be71a4bdc472c2e9c8
@@@ -95,7 -95,9 +95,9 @@@
  #include "audit.h"
  #include "avc_ss.h"
  
- #define NUM_SEL_MNT_OPTS 5
+ #define SB_TYPE_FMT "%s%s%s"
+ #define SB_SUBTYPE(sb) (sb->s_subtype && sb->s_subtype[0])
+ #define SB_TYPE_ARGS(sb) sb->s_type->name, SB_SUBTYPE(sb) ? "." : "", SB_SUBTYPE(sb) ? sb->s_subtype : ""
  
  extern struct security_operations *security_ops;
  
@@@ -139,12 -141,28 +141,28 @@@ static struct kmem_cache *sel_inode_cac
   * This function checks the SECMARK reference counter to see if any SECMARK
   * targets are currently configured, if the reference counter is greater than
   * zero SECMARK is considered to be enabled.  Returns true (1) if SECMARK is
-  * enabled, false (0) if SECMARK is disabled.
+  * enabled, false (0) if SECMARK is disabled.  If the always_check_network
+  * policy capability is enabled, SECMARK is always considered enabled.
   *
   */
  static int selinux_secmark_enabled(void)
  {
-       return (atomic_read(&selinux_secmark_refcount) > 0);
+       return (selinux_policycap_alwaysnetwork || atomic_read(&selinux_secmark_refcount));
+ }
+ /**
+  * selinux_peerlbl_enabled - Check to see if peer labeling is currently enabled
+  *
+  * Description:
+  * This function checks if NetLabel or labeled IPSEC is enabled.  Returns true
+  * (1) if any are enabled or false (0) if neither are enabled.  If the
+  * always_check_network policy capability is enabled, peer labeling
+  * is always considered enabled.
+  *
+  */
+ static int selinux_peerlbl_enabled(void)
+ {
+       return (selinux_policycap_alwaysnetwork || netlbl_enabled() || selinux_xfrm_enabled());
  }
  
  /*
@@@ -309,8 -327,11 +327,11 @@@ enum 
        Opt_defcontext = 3,
        Opt_rootcontext = 4,
        Opt_labelsupport = 5,
+       Opt_nextmntopt = 6,
  };
  
+ #define NUM_SEL_MNT_OPTS      (Opt_nextmntopt - 1)
  static const match_table_t tokens = {
        {Opt_context, CONTEXT_STR "%s"},
        {Opt_fscontext, FSCONTEXT_STR "%s"},
@@@ -355,6 -376,29 +376,29 @@@ static int may_context_mount_inode_rela
        return rc;
  }
  
+ static int selinux_is_sblabel_mnt(struct super_block *sb)
+ {
+       struct superblock_security_struct *sbsec = sb->s_security;
+       if (sbsec->behavior == SECURITY_FS_USE_XATTR ||
+           sbsec->behavior == SECURITY_FS_USE_TRANS ||
+           sbsec->behavior == SECURITY_FS_USE_TASK)
+               return 1;
+       /* Special handling for sysfs. Is genfs but also has setxattr handler*/
+       if (strncmp(sb->s_type->name, "sysfs", sizeof("sysfs")) == 0)
+               return 1;
+       /*
+        * Special handling for rootfs. Is genfs but supports
+        * setting SELinux context on in-core inodes.
+        */
+       if (strncmp(sb->s_type->name, "rootfs", sizeof("rootfs")) == 0)
+               return 1;
+       return 0;
+ }
  static int sb_finish_set_opts(struct super_block *sb)
  {
        struct superblock_security_struct *sbsec = sb->s_security;
                   the first boot of the SELinux kernel before we have
                   assigned xattr values to the filesystem. */
                if (!root_inode->i_op->getxattr) {
-                       printk(KERN_WARNING "SELinux: (dev %s, type %s) has no "
-                              "xattr support\n", sb->s_id, sb->s_type->name);
+                       printk(KERN_WARNING "SELinux: (dev %s, type "SB_TYPE_FMT") has no "
+                              "xattr support\n", sb->s_id, SB_TYPE_ARGS(sb));
                        rc = -EOPNOTSUPP;
                        goto out;
                }
                if (rc < 0 && rc != -ENODATA) {
                        if (rc == -EOPNOTSUPP)
                                printk(KERN_WARNING "SELinux: (dev %s, type "
-                                      "%s) has no security xattr handler\n",
-                                      sb->s_id, sb->s_type->name);
+                                      SB_TYPE_FMT") has no security xattr handler\n",
+                                      sb->s_id, SB_TYPE_ARGS(sb));
                        else
                                printk(KERN_WARNING "SELinux: (dev %s, type "
-                                      "%s) getxattr errno %d\n", sb->s_id,
-                                      sb->s_type->name, -rc);
+                                      SB_TYPE_FMT") getxattr errno %d\n", sb->s_id,
+                                      SB_TYPE_ARGS(sb), -rc);
                        goto out;
                }
        }
  
-       sbsec->flags |= (SE_SBINITIALIZED | SE_SBLABELSUPP);
        if (sbsec->behavior > ARRAY_SIZE(labeling_behaviors))
-               printk(KERN_ERR "SELinux: initialized (dev %s, type %s), unknown behavior\n",
-                      sb->s_id, sb->s_type->name);
+               printk(KERN_ERR "SELinux: initialized (dev %s, type "SB_TYPE_FMT"), unknown behavior\n",
+                      sb->s_id, SB_TYPE_ARGS(sb));
        else
-               printk(KERN_DEBUG "SELinux: initialized (dev %s, type %s), %s\n",
-                      sb->s_id, sb->s_type->name,
+               printk(KERN_DEBUG "SELinux: initialized (dev %s, type "SB_TYPE_FMT"), %s\n",
+                      sb->s_id, SB_TYPE_ARGS(sb),
                       labeling_behaviors[sbsec->behavior-1]);
  
-       if (sbsec->behavior == SECURITY_FS_USE_GENFS ||
-           sbsec->behavior == SECURITY_FS_USE_MNTPOINT ||
-           sbsec->behavior == SECURITY_FS_USE_NONE ||
-           sbsec->behavior > ARRAY_SIZE(labeling_behaviors))
-               sbsec->flags &= ~SE_SBLABELSUPP;
-       /* Special handling for sysfs. Is genfs but also has setxattr handler*/
-       if (strncmp(sb->s_type->name, "sysfs", sizeof("sysfs")) == 0)
-               sbsec->flags |= SE_SBLABELSUPP;
+       sbsec->flags |= SE_SBINITIALIZED;
+       if (selinux_is_sblabel_mnt(sb))
+               sbsec->flags |= SBLABEL_MNT;
  
        /* Initialize the root inode. */
        rc = inode_doinit_with_dentry(root_inode, root);
@@@ -460,15 -496,18 +496,18 @@@ static int selinux_get_mnt_opts(const s
        if (!ss_initialized)
                return -EINVAL;
  
+       /* make sure we always check enough bits to cover the mask */
+       BUILD_BUG_ON(SE_MNTMASK >= (1 << NUM_SEL_MNT_OPTS));
        tmp = sbsec->flags & SE_MNTMASK;
        /* count the number of mount options for this sb */
-       for (i = 0; i < 8; i++) {
+       for (i = 0; i < NUM_SEL_MNT_OPTS; i++) {
                if (tmp & 0x01)
                        opts->num_mnt_opts++;
                tmp >>= 1;
        }
        /* Check if the Label support flag is set */
-       if (sbsec->flags & SE_SBLABELSUPP)
+       if (sbsec->flags & SBLABEL_MNT)
                opts->num_mnt_opts++;
  
        opts->mnt_opts = kcalloc(opts->num_mnt_opts, sizeof(char *), GFP_ATOMIC);
                opts->mnt_opts[i] = context;
                opts->mnt_opts_flags[i++] = ROOTCONTEXT_MNT;
        }
-       if (sbsec->flags & SE_SBLABELSUPP) {
+       if (sbsec->flags & SBLABEL_MNT) {
                opts->mnt_opts[i] = NULL;
-               opts->mnt_opts_flags[i++] = SE_SBLABELSUPP;
+               opts->mnt_opts_flags[i++] = SBLABEL_MNT;
        }
  
        BUG_ON(i != opts->num_mnt_opts);
@@@ -561,7 -600,6 +600,6 @@@ static int selinux_set_mnt_opts(struct 
        const struct cred *cred = current_cred();
        int rc = 0, i;
        struct superblock_security_struct *sbsec = sb->s_security;
-       const char *name = sb->s_type->name;
        struct inode *inode = sbsec->sb->s_root->d_inode;
        struct inode_security_struct *root_isec = inode->i_security;
        u32 fscontext_sid = 0, context_sid = 0, rootcontext_sid = 0;
        for (i = 0; i < num_opts; i++) {
                u32 sid;
  
-               if (flags[i] == SE_SBLABELSUPP)
+               if (flags[i] == SBLABEL_MNT)
                        continue;
                rc = security_context_to_sid(mount_options[i],
                                             strlen(mount_options[i]), &sid);
                if (rc) {
                        printk(KERN_WARNING "SELinux: security_context_to_sid"
-                              "(%s) failed for (dev %s, type %s) errno=%d\n",
-                              mount_options[i], sb->s_id, name, rc);
+                              "(%s) failed for (dev %s, type "SB_TYPE_FMT") errno=%d\n",
+                              mount_options[i], sb->s_id, SB_TYPE_ARGS(sb), rc);
                        goto out;
                }
                switch (flags[i]) {
                 * Determine the labeling behavior to use for this
                 * filesystem type.
                 */
-               rc = security_fs_use((sbsec->flags & SE_SBPROC) ?
-                                       "proc" : sb->s_type->name,
-                                       &sbsec->behavior, &sbsec->sid);
+               rc = security_fs_use(sb);
                if (rc) {
                        printk(KERN_WARNING
                                "%s: security_fs_use(%s) returned %d\n",
@@@ -770,7 -806,8 +806,8 @@@ out
  out_double_mount:
        rc = -EINVAL;
        printk(KERN_WARNING "SELinux: mount invalid.  Same superblock, different "
-              "security settings for (dev %s, type %s)\n", sb->s_id, name);
+              "security settings for (dev %s, type "SB_TYPE_FMT")\n", sb->s_id,
+              SB_TYPE_ARGS(sb));
        goto out;
  }
  
@@@ -1037,7 -1074,7 +1074,7 @@@ static void selinux_write_opts(struct s
                case DEFCONTEXT_MNT:
                        prefix = DEFCONTEXT_STR;
                        break;
-               case SE_SBLABELSUPP:
+               case SBLABEL_MNT:
                        seq_putc(m, ',');
                        seq_puts(m, LABELSUPP_STR);
                        continue;
@@@ -1502,7 -1539,7 +1539,7 @@@ static int cred_has_capability(const st
  
        rc = avc_has_perm_noaudit(sid, sid, sclass, av, 0, &avd);
        if (audit == SECURITY_CAP_AUDIT) {
 -              int rc2 = avc_audit(sid, sid, sclass, av, &avd, rc, &ad, 0);
 +              int rc2 = avc_audit(sid, sid, sclass, av, &avd, rc, &ad);
                if (rc2)
                        return rc2;
        }
@@@ -1525,7 -1562,8 +1562,7 @@@ static int task_has_system(struct task_
  static int inode_has_perm(const struct cred *cred,
                          struct inode *inode,
                          u32 perms,
 -                        struct common_audit_data *adp,
 -                        unsigned flags)
 +                        struct common_audit_data *adp)
  {
        struct inode_security_struct *isec;
        u32 sid;
        sid = cred_sid(cred);
        isec = inode->i_security;
  
 -      return avc_has_perm_flags(sid, isec->sid, isec->sclass, perms, adp, flags);
 +      return avc_has_perm(sid, isec->sid, isec->sclass, perms, adp);
  }
  
  /* Same as inode_has_perm, but pass explicit audit data containing
@@@ -1553,7 -1591,7 +1590,7 @@@ static inline int dentry_has_perm(cons
  
        ad.type = LSM_AUDIT_DATA_DENTRY;
        ad.u.dentry = dentry;
 -      return inode_has_perm(cred, inode, av, &ad, 0);
 +      return inode_has_perm(cred, inode, av, &ad);
  }
  
  /* Same as inode_has_perm, but pass explicit audit data containing
@@@ -1568,7 -1606,7 +1605,7 @@@ static inline int path_has_perm(const s
  
        ad.type = LSM_AUDIT_DATA_PATH;
        ad.u.path = *path;
 -      return inode_has_perm(cred, inode, av, &ad, 0);
 +      return inode_has_perm(cred, inode, av, &ad);
  }
  
  /* Same as path_has_perm, but uses the inode from the file struct. */
@@@ -1580,7 -1618,7 +1617,7 @@@ static inline int file_path_has_perm(co
  
        ad.type = LSM_AUDIT_DATA_PATH;
        ad.u.path = file->f_path;
 -      return inode_has_perm(cred, file_inode(file), av, &ad, 0);
 +      return inode_has_perm(cred, file_inode(file), av, &ad);
  }
  
  /* Check whether a task can use an open file descriptor to
@@@ -1616,7 -1654,7 +1653,7 @@@ static int file_has_perm(const struct c
        /* av is zero if only checking access to the descriptor. */
        rc = 0;
        if (av)
 -              rc = inode_has_perm(cred, inode, av, &ad, 0);
 +              rc = inode_has_perm(cred, inode, av, &ad);
  
  out:
        return rc;
@@@ -1649,7 -1687,7 +1686,7 @@@ static int may_create(struct inode *dir
        if (rc)
                return rc;
  
-       if (!newsid || !(sbsec->flags & SE_SBLABELSUPP)) {
+       if (!newsid || !(sbsec->flags & SBLABEL_MNT)) {
                rc = security_transition_sid(sid, dsec->sid, tclass,
                                             &dentry->d_name, &newsid);
                if (rc)
@@@ -2437,14 -2475,14 +2474,14 @@@ static int selinux_sb_remount(struct su
                u32 sid;
                size_t len;
  
-               if (flags[i] == SE_SBLABELSUPP)
+               if (flags[i] == SBLABEL_MNT)
                        continue;
                len = strlen(mount_options[i]);
                rc = security_context_to_sid(mount_options[i], len, &sid);
                if (rc) {
                        printk(KERN_WARNING "SELinux: security_context_to_sid"
-                              "(%s) failed for (dev %s, type %s) errno=%d\n",
-                              mount_options[i], sb->s_id, sb->s_type->name, rc);
+                              "(%s) failed for (dev %s, type "SB_TYPE_FMT") errno=%d\n",
+                              mount_options[i], sb->s_id, SB_TYPE_ARGS(sb), rc);
                        goto out_free_opts;
                }
                rc = -EINVAL;
@@@ -2482,8 -2520,8 +2519,8 @@@ out_free_secdata
        return rc;
  out_bad_option:
        printk(KERN_WARNING "SELinux: unable to change security options "
-              "during remount (dev %s, type=%s)\n", sb->s_id,
-              sb->s_type->name);
+              "during remount (dev %s, type "SB_TYPE_FMT")\n", sb->s_id,
+              SB_TYPE_ARGS(sb));
        goto out_free_opts;
  }
  
@@@ -2606,7 -2644,7 +2643,7 @@@ static int selinux_inode_init_security(
        if ((sbsec->flags & SE_SBINITIALIZED) &&
            (sbsec->behavior == SECURITY_FS_USE_MNTPOINT))
                newsid = sbsec->mntpoint_sid;
-       else if (!newsid || !(sbsec->flags & SE_SBLABELSUPP)) {
+       else if (!newsid || !(sbsec->flags & SBLABEL_MNT)) {
                rc = security_transition_sid(sid, dsec->sid,
                                             inode_mode_to_security_class(inode->i_mode),
                                             qstr, &newsid);
                isec->initialized = 1;
        }
  
-       if (!ss_initialized || !(sbsec->flags & SE_SBLABELSUPP))
+       if (!ss_initialized || !(sbsec->flags & SBLABEL_MNT))
                return -EOPNOTSUPP;
  
        if (name)
@@@ -2830,7 -2868,7 +2867,7 @@@ static int selinux_inode_setxattr(struc
                return selinux_inode_setotherxattr(dentry, name);
  
        sbsec = inode->i_sb->s_security;
-       if (!(sbsec->flags & SE_SBLABELSUPP))
+       if (!(sbsec->flags & SBLABEL_MNT))
                return -EOPNOTSUPP;
  
        if (!inode_owner_or_capable(inode))
@@@ -3791,8 -3829,12 +3828,12 @@@ static int selinux_skb_peerlbl_sid(stru
        u32 nlbl_sid;
        u32 nlbl_type;
  
-       selinux_skb_xfrm_sid(skb, &xfrm_sid);
-       selinux_netlbl_skbuff_getsid(skb, family, &nlbl_type, &nlbl_sid);
+       err = selinux_skb_xfrm_sid(skb, &xfrm_sid);
+       if (unlikely(err))
+               return -EACCES;
+       err = selinux_netlbl_skbuff_getsid(skb, family, &nlbl_type, &nlbl_sid);
+       if (unlikely(err))
+               return -EACCES;
  
        err = security_net_peersid_resolve(nlbl_sid, nlbl_type, xfrm_sid, sid);
        if (unlikely(err)) {
@@@ -3928,7 -3970,7 +3969,7 @@@ static int selinux_socket_bind(struct s
                if (snum) {
                        int low, high;
  
 -                      inet_get_local_port_range(&low, &high);
 +                      inet_get_local_port_range(sock_net(sk), &low, &high);
  
                        if (snum < max(PROT_SOCK, low) || snum > high) {
                                err = sel_netport_sid(sk->sk_protocol,
@@@ -4246,7 -4288,7 +4287,7 @@@ static int selinux_socket_sock_rcv_skb(
                return selinux_sock_rcv_skb_compat(sk, skb, family);
  
        secmark_active = selinux_secmark_enabled();
-       peerlbl_active = netlbl_enabled() || selinux_xfrm_enabled();
+       peerlbl_active = selinux_peerlbl_enabled();
        if (!secmark_active && !peerlbl_active)
                return 0;
  
@@@ -4628,7 -4670,7 +4669,7 @@@ static unsigned int selinux_ip_forward(
  
        secmark_active = selinux_secmark_enabled();
        netlbl_active = netlbl_enabled();
-       peerlbl_active = netlbl_active || selinux_xfrm_enabled();
+       peerlbl_active = selinux_peerlbl_enabled();
        if (!secmark_active && !peerlbl_active)
                return NF_ACCEPT;
  
        return NF_ACCEPT;
  }
  
 -static unsigned int selinux_ipv4_forward(unsigned int hooknum,
 +static unsigned int selinux_ipv4_forward(const struct nf_hook_ops *ops,
                                         struct sk_buff *skb,
                                         const struct net_device *in,
                                         const struct net_device *out,
  }
  
  #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
 -static unsigned int selinux_ipv6_forward(unsigned int hooknum,
 +static unsigned int selinux_ipv6_forward(const struct nf_hook_ops *ops,
                                         struct sk_buff *skb,
                                         const struct net_device *in,
                                         const struct net_device *out,
@@@ -4709,7 -4751,7 +4750,7 @@@ static unsigned int selinux_ip_output(s
        return NF_ACCEPT;
  }
  
 -static unsigned int selinux_ipv4_output(unsigned int hooknum,
 +static unsigned int selinux_ipv4_output(const struct nf_hook_ops *ops,
                                        struct sk_buff *skb,
                                        const struct net_device *in,
                                        const struct net_device *out,
@@@ -4780,7 -4822,7 +4821,7 @@@ static unsigned int selinux_ip_postrout
                return NF_ACCEPT;
  #endif
        secmark_active = selinux_secmark_enabled();
-       peerlbl_active = netlbl_enabled() || selinux_xfrm_enabled();
+       peerlbl_active = selinux_peerlbl_enabled();
        if (!secmark_active && !peerlbl_active)
                return NF_ACCEPT;
  
        return NF_ACCEPT;
  }
  
 -static unsigned int selinux_ipv4_postroute(unsigned int hooknum,
 +static unsigned int selinux_ipv4_postroute(const struct nf_hook_ops *ops,
                                           struct sk_buff *skb,
                                           const struct net_device *in,
                                           const struct net_device *out,
  }
  
  #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
 -static unsigned int selinux_ipv6_postroute(unsigned int hooknum,
 +static unsigned int selinux_ipv6_postroute(const struct nf_hook_ops *ops,
                                           struct sk_buff *skb,
                                           const struct net_device *in,
                                           const struct net_device *out,
@@@ -5784,7 -5826,8 +5825,8 @@@ static struct security_operations selin
        .xfrm_policy_clone_security =   selinux_xfrm_policy_clone,
        .xfrm_policy_free_security =    selinux_xfrm_policy_free,
        .xfrm_policy_delete_security =  selinux_xfrm_policy_delete,
-       .xfrm_state_alloc_security =    selinux_xfrm_state_alloc,
+       .xfrm_state_alloc =             selinux_xfrm_state_alloc,
+       .xfrm_state_alloc_acquire =     selinux_xfrm_state_alloc_acquire,
        .xfrm_state_free_security =     selinux_xfrm_state_free,
        .xfrm_state_delete_security =   selinux_xfrm_state_delete,
        .xfrm_policy_lookup =           selinux_xfrm_policy_lookup,