Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux...
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 6 Aug 2014 15:06:39 +0000 (08:06 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 6 Aug 2014 15:06:39 +0000 (08:06 -0700)
Pull security subsystem updates from James Morris:
 "In this release:

   - PKCS#7 parser for the key management subsystem from David Howells
   - appoint Kees Cook as seccomp maintainer
   - bugfixes and general maintenance across the subsystem"

* 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (94 commits)
  X.509: Need to export x509_request_asymmetric_key()
  netlabel: shorter names for the NetLabel catmap funcs/structs
  netlabel: fix the catmap walking functions
  netlabel: fix the horribly broken catmap functions
  netlabel: fix a problem when setting bits below the previously lowest bit
  PKCS#7: X.509 certificate issuer and subject are mandatory fields in the ASN.1
  tpm: simplify code by using %*phN specifier
  tpm: Provide a generic means to override the chip returned timeouts
  tpm: missing tpm_chip_put in tpm_get_random()
  tpm: Properly clean sysfs entries in error path
  tpm: Add missing tpm_do_selftest to ST33 I2C driver
  PKCS#7: Use x509_request_asymmetric_key()
  Revert "selinux: fix the default socket labeling in sock_graft()"
  X.509: x509_request_asymmetric_keys() doesn't need string length arguments
  PKCS#7: fix sparse non static symbol warning
  KEYS: revert encrypted key change
  ima: add support for measuring and appraising firmware
  firmware_class: perform new LSM checks
  security: introduce kernel_fw_from_file hook
  PKCS#7: Missing inclusion of linux/err.h
  ...

1  2 
Documentation/kernel-parameters.txt
MAINTAINERS
arch/arm/include/uapi/asm/unistd.h
drivers/base/firmware_class.c
fs/proc/array.c
include/linux/sched.h
kernel/fork.c
net/dns_resolver/dns_query.c

@@@ -566,6 -566,11 +566,11 @@@ bytes respectively. Such letter suffixe
                        possible to determine what the correct size should be.
                        This option provides an override for these situations.
  
+       ca_keys=        [KEYS] This parameter identifies a specific key(s) on
+                       the system trusted keyring to be used for certificate
+                       trust validation.
+                       format: { id:<keyid> | builtin }
        ccw_timeout_log [S390]
                        See Documentation/s390/CommonIO for details.
  
                        that can be changed at run time by the
                        set_graph_function file in the debugfs tracing directory.
  
 +      ftrace_graph_notrace=[function-list]
 +                      [FTRACE] Do not trace from the functions specified in
 +                      function-list.  This list is a comma separated list of
 +                      functions that can be changed at run time by the
 +                      set_graph_notrace file in the debugfs tracing directory.
 +
        gamecon.map[2|3]=
                        [HW,JOY] Multisystem joystick and NES/SNES/PSX pad
                        support via parallel port (up to 5 devices per port)
                        Formats: { "ima" | "ima-ng" }
                        Default: "ima-ng"
  
+       ima.ahash_minsize= [IMA] Minimum file size for asynchronous hash usage
+                       Format: <min_file_size>
+                       Set the minimal file size for using asynchronous hash.
+                       If left unspecified, ahash usage is disabled.
+                       ahash performance varies for different data sizes on
+                       different crypto accelerators. This option can be used
+                       to achieve the best performance for a particular HW.
+       ima.ahash_bufsize= [IMA] Asynchronous hash buffer size
+                       Format: <bufsize>
+                       Set hashing buffer size. Default: 4k.
+                       ahash performance varies for different chunk sizes on
+                       different crypto accelerators. This option can be used
+                       to achieve best performance for particular HW.
        init=           [KNL]
                        Format: <full_path>
                        Run specified binary instead of /sbin/init as init
        ip=             [IP_PNP]
                        See Documentation/filesystems/nfs/nfsroot.txt.
  
 -      ip2=            [HW] Set IO/IRQ pairs for up to 4 IntelliPort boards
 -                      See comment before ip2_setup() in
 -                      drivers/char/ip2/ip2base.c.
 -
        irqfixup        [HW]
                        When an interrupt is not handled search all handlers
                        for it. Intended to get systems with badly broken
                        leaf rcu_node structure.  Useful for very large
                        systems.
  
 +      rcutree.jiffies_till_sched_qs= [KNL]
 +                      Set required age in jiffies for a
 +                      given grace period before RCU starts
 +                      soliciting quiescent-state help from
 +                      rcu_note_context_switch().
 +
        rcutree.jiffies_till_first_fqs= [KNL]
                        Set delay from grace-period initialization to
                        first attempt to force quiescent states.
                        quiescent states.  Units are jiffies, minimum
                        value is one, and maximum value is HZ.
  
 +      rcutree.rcu_nocb_leader_stride= [KNL]
 +                      Set the number of NOCB kthread groups, which
 +                      defaults to the square root of the number of
 +                      CPUs.  Larger numbers reduces the wakeup overhead
 +                      on the per-CPU grace-period kthreads, but increases
 +                      that same overhead on each group's leader.
 +
        rcutree.qhimark= [KNL]
                        Set threshold of queued RCU callbacks beyond which
                        batch limiting is disabled.
                        the allocated input device; If set to 0, video driver
                        will only send out the event without touching backlight
                        brightness level.
 -                      default: 0
 +                      default: 1
  
        virtio_mmio.device=
                        [VMMIO] Memory mapped virtio (platform) device.
diff --combined MAINTAINERS
@@@ -70,8 -70,6 +70,8 @@@ Descriptions of section entries
  
        P: Person (obsolete)
        M: Mail patches to: FullName <address@domain>
 +      R: Designated reviewer: FullName <address@domain>
 +         These reviewers should be CCed on patches.
        L: Mailing list that is relevant to this area
        W: Web-page with status/info
        Q: Patchwork web based patch tracking system site
@@@ -158,6 -156,7 +158,6 @@@ F: drivers/net/hamradio/6pack.
  
  8169 10/100/1000 GIGABIT ETHERNET DRIVER
  M:    Realtek linux nic maintainers <nic_swsd@realtek.com>
 -M:    Francois Romieu <romieu@fr.zoreil.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/ethernet/realtek/r8169.c
@@@ -516,16 -515,6 +516,16 @@@ S:       Supporte
  F:    fs/aio.c
  F:    include/linux/*aio*.h
  
 +AIRSPY MEDIA DRIVER
 +M:    Antti Palosaari <crope@iki.fi>
 +L:    linux-media@vger.kernel.org
 +W:    http://linuxtv.org/
 +W:    http://palosaari.fi/linux/
 +Q:    http://patchwork.linuxtv.org/project/linux-media/list/
 +T:    git git://linuxtv.org/anttip/media_tree.git
 +S:    Maintained
 +F:    drivers/media/usb/airspy/
 +
  ALCATEL SPEEDTOUCH USB DRIVER
  M:    Duncan Sands <duncan.sands@free.fr>
  L:    linux-usb@vger.kernel.org
@@@ -1806,13 -1795,6 +1806,13 @@@ W:    http://bcache.evilpiepirate.or
  S:    Maintained:
  F:    drivers/md/bcache/
  
 +BECEEM BCS200/BCS220-3/BCSM250 WIMAX SUPPORT
 +M: Kevin McKinney <klmckinney1@gmail.com>
 +M: Matthias Beyer <mail@beyermatthias.de>
 +L: devel@driverdev.osuosl.org
 +S: Maintained
 +F: drivers/staging/bcm*
 +
  BEFS FILE SYSTEM
  S:    Orphan
  F:    Documentation/filesystems/befs.txt
@@@ -2876,7 -2858,6 +2876,7 @@@ F:      drivers/staging/dgnc
  DIGI EPCA PCI PRODUCTS
  M:    Lidza Louina <lidza.louina@gmail.com>
  M:    Mark Hounschell <markh@compro.net>
 +M:    Daeseok Youn <daeseok.youn@gmail.com>
  L:    driverdev-devel@linuxdriverproject.org
  S:    Maintained
  F:    drivers/staging/dgap/
@@@ -2933,8 -2914,8 +2933,8 @@@ S:      Maintaine
  L:    linux-media@vger.kernel.org
  L:    dri-devel@lists.freedesktop.org
  L:    linaro-mm-sig@lists.linaro.org
 -F:    drivers/base/dma-buf*
 -F:    include/linux/dma-buf*
 +F:    drivers/dma-buf/
 +F:    include/linux/dma-buf* include/linux/reservation.h include/linux/*fence.h
  F:    Documentation/dma-buf-sharing.txt
  T:    git git://git.linaro.org/people/sumitsemwal/linux-dma-buf.git
  
@@@ -3370,13 -3351,6 +3370,13 @@@ W:    bluesmoke.sourceforge.ne
  S:    Maintained
  F:    drivers/edac/i82975x_edac.c
  
 +EDAC-IE31200
 +M:    Jason Baron <jbaron@akamai.com>
 +L:    linux-edac@vger.kernel.org
 +W:    bluesmoke.sourceforge.net
 +S:    Maintained
 +F:    drivers/edac/ie31200_edac.c
 +
  EDAC-MPC85XX
  M:    Johannes Thumshirn <johannes.thumshirn@men.de>
  L:    linux-edac@vger.kernel.org
@@@ -4003,12 -3977,6 +4003,12 @@@ F:    Documentation/isdn/README.gigase
  F:    drivers/isdn/gigaset/
  F:    include/uapi/linux/gigaset_dev.h
  
 +GO7007 MPEG CODEC
 +M:    Hans Verkuil <hans.verkuil@cisco.com>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    drivers/media/usb/go7007/
 +
  GPIO SUBSYSTEM
  M:    Linus Walleij <linus.walleij@linaro.org>
  M:    Alexandre Courbot <gnurou@gmail.com>
@@@ -4237,7 -4205,7 +4237,7 @@@ L:      linux-kernel@vger.kernel.or
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
  S:    Maintained
  F:    Documentation/timers/
 -F:    kernel/hrtimer.c
 +F:    kernel/time/hrtimer.c
  F:    kernel/time/clockevents.c
  F:    kernel/time/tick*.*
  F:    kernel/time/timer_*.c
@@@ -4543,7 -4511,8 +4543,7 @@@ S:      Supporte
  F:    drivers/idle/i7300_idle.c
  
  IEEE 802.15.4 SUBSYSTEM
 -M:    Alexander Smirnov <alex.bluesman.smirnov@gmail.com>
 -M:    Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
 +M:    Alexander Aring <alex.aring@gmail.com>
  L:    linux-zigbee-devel@lists.sourceforge.net (moderated for non-subscribers)
  W:    http://apps.sourceforge.net/trac/linux-zigbee
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lowpan/lowpan.git
@@@ -5099,6 -5068,13 +5099,6 @@@ 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:    "Yann E. MORIN" <yann.morin.1998@free.fr>
  L:    linux-kbuild@vger.kernel.org
@@@ -5981,9 -5957,9 +5981,9 @@@ W:      http://palosaari.fi/linux
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
  S:    Maintained
 -F:    drivers/staging/media/msi3101/msi001*
 +F:    drivers/media/tuners/msi001*
  
 -MSI3101 MEDIA DRIVER
 +MSI2500 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org/
@@@ -5991,7 -5967,7 +5991,7 @@@ W:      http://palosaari.fi/linux
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
  S:    Maintained
 -F:    drivers/staging/media/msi3101/sdr-msi3101*
 +F:    drivers/media/usb/msi2500/
  
  MT9M032 APTINA SENSOR DRIVER
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
@@@ -6515,12 -6491,11 +6515,12 @@@ L:   linux-omap@vger.kernel.or
  S:    Maintained
  F:    arch/arm/mach-omap2/omap_hwmod_44xx_data.c
  
 -OMAP IMAGE SIGNAL PROCESSOR (ISP)
 +OMAP IMAGING SUBSYSTEM (OMAP3 ISP and OMAP4 ISS)
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/platform/omap3isp/
 +F:    drivers/staging/media/omap4iss/
  
  OMAP USB SUPPORT
  M:    Felipe Balbi <balbi@ti.com>
@@@ -6983,12 -6958,6 +6983,12 @@@ L:    linux-arm-kernel@lists.infradead.or
  S:    Maintained
  F:    drivers/pinctrl/pinctrl-at91.c
  
 +PIN CONTROLLER - RENESAS
 +M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 +L:    linux-sh@vger.kernel.org
 +S:    Maintained
 +F:    drivers/pinctrl/sh-pfc/
 +
  PIN CONTROLLER - SAMSUNG
  M:    Tomasz Figa <t.figa@samsung.com>
  M:    Thomas Abraham <thomas.abraham@linaro.org>
@@@ -7053,10 -7022,10 +7053,10 @@@ POSIX CLOCKS and TIMER
  M:    Thomas Gleixner <tglx@linutronix.de>
  L:    linux-kernel@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
 -S:    Supported
 +S:    Maintained
  F:    fs/timerfd.c
  F:    include/linux/timer*
 -F:    kernel/*timer*
 +F:    kernel/time/*timer*
  
  POWER SUPPLY CLASS/SUBSYSTEM and DRIVERS
  M:    Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
@@@ -7270,12 -7239,6 +7270,12 @@@ M:    Robert Jarzmik <robert.jarzmik@free.
  L:    rtc-linux@googlegroups.com
  S:    Maintained
  
 +QAT DRIVER
 +M:      Tadeusz Struk <tadeusz.struk@intel.com>
 +L:      qat-linux@intel.com
 +S:      Supported
 +F:      drivers/crypto/qat/
 +
  QIB DRIVER
  M:    Mike Marciniszyn <infinipath@intel.com>
  L:    linux-rdma@vger.kernel.org
@@@ -7457,20 -7420,16 +7457,20 @@@ S:   Orpha
  F:    drivers/net/wireless/ray*
  
  RCUTORTURE MODULE
 -M:    Josh Triplett <josh@freedesktop.org>
 +M:    Josh Triplett <josh@joshtriplett.org>
  M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
  F:    Documentation/RCU/torture.txt
 -F:    kernel/rcu/torture.c
 +F:    kernel/rcu/rcutorture.c
  
  RCUTORTURE TEST FRAMEWORK
  M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
 +M:    Josh Triplett <josh@joshtriplett.org>
 +R:    Steven Rostedt <rostedt@goodmis.org>
 +R:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
 +R:    Lai Jiangshan <laijs@cn.fujitsu.com>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
@@@ -7493,11 -7452,8 +7493,11 @@@ S:    Supporte
  F:    net/rds/
  
  READ-COPY UPDATE (RCU)
 -M:    Dipankar Sarma <dipankar@in.ibm.com>
  M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
 +M:    Josh Triplett <josh@joshtriplett.org>
 +R:    Steven Rostedt <rostedt@goodmis.org>
 +R:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
 +R:    Lai Jiangshan <laijs@cn.fujitsu.com>
  L:    linux-kernel@vger.kernel.org
  W:    http://www.rdrop.com/users/paulmck/RCU/
  S:    Supported
@@@ -7507,7 -7463,7 +7507,7 @@@ X:      Documentation/RCU/torture.tx
  F:    include/linux/rcu*
  X:    include/linux/srcu.h
  F:    kernel/rcu/
 -X:    kernel/rcu/torture.c
 +X:    kernel/torture.c
  
  REAL TIME CLOCK (RTC) SUBSYSTEM
  M:    Alessandro Zummo <a.zummo@towertech.it>
@@@ -7628,7 -7584,7 +7628,7 @@@ W:      http://palosaari.fi/linux
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
  S:    Maintained
 -F:    drivers/staging/media/rtl2832u_sdr/rtl2832_sdr*
 +F:    drivers/media/dvb-frontends/rtl2832_sdr*
  
  RTL8180 WIRELESS DRIVER
  M:    "John W. Linville" <linville@tuxdriver.com>
@@@ -7862,11 -7818,6 +7862,11 @@@ S:    Maintaine
  F:    include/linux/mmc/dw_mmc.h
  F:    drivers/mmc/host/dw_mmc*
  
 +THUNDERBOLT DRIVER
 +M:    Andreas Noever <andreas.noever@gmail.com>
 +S:    Maintained
 +F:    drivers/thunderbolt/
 +
  TIMEKEEPING, CLOCKSOURCE CORE, NTP
  M:    John Stultz <john.stultz@linaro.org>
  M:    Thomas Gleixner <tglx@linutronix.de>
@@@ -8002,6 -7953,16 +8002,16 @@@ S:    Maintaine
  F:    drivers/mmc/host/sdhci.*
  F:    drivers/mmc/host/sdhci-pltfm.[ch]
  
+ SECURE COMPUTING
+ M:    Kees Cook <keescook@chromium.org>
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git seccomp
+ S:    Supported
+ F:    kernel/seccomp.c
+ F:    include/uapi/linux/seccomp.h
+ F:    include/linux/seccomp.h
+ K:    \bsecure_computing
+ K:    \bTIF_SECCOMP\b
  SECURE DIGITAL HOST CONTROLLER INTERFACE, OPEN FIRMWARE BINDINGS (SDHCI-OF)
  M:    Anton Vorontsov <anton@enomsg.org>
  L:    linuxppc-dev@lists.ozlabs.org
@@@ -8070,16 -8031,6 +8080,16 @@@ F:    drivers/ata
  F:    include/linux/ata.h
  F:    include/linux/libata.h
  
 +SERIAL ATA AHCI PLATFORM devices support
 +M:    Hans de Goede <hdegoede@redhat.com>
 +M:    Tejun Heo <tj@kernel.org>
 +L:    linux-ide@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git
 +S:    Supported
 +F:    drivers/ata/ahci_platform.c
 +F:    drivers/ata/libahci_platform.c
 +F:    include/linux/ahci_platform.h
 +
  SERVER ENGINES 10Gbps iSCSI - BladeEngine 2 DRIVER
  M:    Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
  L:    linux-scsi@vger.kernel.org
@@@ -8295,9 -8246,6 +8305,9 @@@ F:      mm/sl?b
  SLEEPABLE READ-COPY UPDATE (SRCU)
  M:    Lai Jiangshan <laijs@cn.fujitsu.com>
  M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
 +M:    Josh Triplett <josh@joshtriplett.org>
 +R:    Steven Rostedt <rostedt@goodmis.org>
 +R:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
  L:    linux-kernel@vger.kernel.org
  W:    http://www.rdrop.com/users/paulmck/RCU/
  S:    Supported
@@@ -8397,12 -8345,6 +8407,12 @@@ M:    Chris Boot <bootc@bootc.net
  S:    Maintained
  F:    drivers/leds/leds-net48xx.c
  
 +SOFTLOGIC 6x10 MPEG CODEC
 +M:    Ismael Luceno <ismael.luceno@corp.bluecherry.net>
 +L:    linux-media@vger.kernel.org
 +S:    Supported
 +F:    drivers/media/pci/solo6x10/
 +
  SOFTWARE RAID (Multiple Disks) SUPPORT
  M:    Neil Brown <neilb@suse.de>
  L:    linux-raid@vger.kernel.org
@@@ -8593,12 -8535,37 +8603,12 @@@ L:   devel@driverdev.osuosl.or
  S:    Supported
  F:    drivers/staging/
  
 -STAGING - AGERE HERMES II and II.5 WIRELESS DRIVERS
 -M:    Henk de Groot <pe1dnn@amsat.org>
 -S:    Odd Fixes
 -F:    drivers/staging/wlags49_h2/
 -F:    drivers/staging/wlags49_h25/
 -
 -STAGING - ASUS OLED
 -M:    Jakub Schmidtke <sjakub@gmail.com>
 -S:    Odd Fixes
 -F:    drivers/staging/asus_oled/
 -
  STAGING - COMEDI
  M:    Ian Abbott <abbotti@mev.co.uk>
  M:    H Hartley Sweeten <hsweeten@visionengravers.com>
  S:    Odd Fixes
  F:    drivers/staging/comedi/
  
 -STAGING - CRYSTAL HD VIDEO DECODER
 -M:    Naren Sankar <nsankar@broadcom.com>
 -M:    Jarod Wilson <jarod@wilsonet.com>
 -M:    Scott Davilla <davilla@4pi.com>
 -M:    Manu Abraham <abraham.manu@gmail.com>
 -S:    Odd Fixes
 -F:    drivers/staging/crystalhd/
 -
 -STAGING - ECHO CANCELLER
 -M:    Steve Underwood <steveu@coppice.org>
 -M:    David Rowe <david@rowetel.com>
 -S:    Odd Fixes
 -F:    drivers/staging/echo/
 -
  STAGING - ET131X NETWORK DRIVER
  M:    Mark Einon <mark.einon@gmail.com>
  S:    Odd Fixes
@@@ -8609,6 -8576,16 +8619,6 @@@ M:     Marek Belisko <marek.belisko@gmail.c
  S:    Odd Fixes
  F:    drivers/staging/ft1000/
  
 -STAGING - FRONTIER TRANZPORT AND ALPHATRACK
 -M:    David Täht <d@teklibre.com>
 -S:    Odd Fixes
 -F:    drivers/staging/frontier/
 -
 -STAGING - GO7007 MPEG CODEC
 -M:    Hans Verkuil <hans.verkuil@cisco.com>
 -S:    Maintained
 -F:    drivers/staging/media/go7007/
 -
  STAGING - INDUSTRIAL IO
  M:    Jonathan Cameron <jic23@kernel.org>
  L:    linux-iio@vger.kernel.org
@@@ -8660,27 -8637,52 +8670,27 @@@ L:   linux-wireless@vger.kernel.or
  S:    Maintained
  F:    drivers/staging/rtl8723au/
  
 -STAGING - SILICON MOTION SM7XX FRAME BUFFER DRIVER
 -M:    Teddy Wang <teddy.wang@siliconmotion.com.cn>
 -S:    Odd Fixes
 -F:    drivers/staging/sm7xxfb/
 -
  STAGING - SLICOSS
  M:    Lior Dotan <liodot@gmail.com>
  M:    Christopher Harrer <charrer@alacritech.com>
  S:    Odd Fixes
  F:    drivers/staging/slicoss/
  
 -STAGING - SOFTLOGIC 6x10 MPEG CODEC
 -M:    Ismael Luceno <ismael.luceno@corp.bluecherry.net>
 -S:    Supported
 -F:    drivers/staging/media/solo6x10/
 -
  STAGING - SPEAKUP CONSOLE SPEECH DRIVER
  M:    William Hubbs <w.d.hubbs@gmail.com>
  M:    Chris Brannon <chris@the-brannons.com>
  M:    Kirk Reiser <kirk@reisers.ca>
  M:    Samuel Thibault <samuel.thibault@ens-lyon.org>
 -L:    speakup@braille.uwo.ca
 +L:    speakup@linux-speakup.org
  W:    http://www.linux-speakup.org/
  S:    Odd Fixes
  F:    drivers/staging/speakup/
  
 -STAGING - TI DSP BRIDGE DRIVERS
 -M:    Omar Ramirez Luna <omar.ramirez@copitl.com>
 -S:    Odd Fixes
 -F:    drivers/staging/tidspbridge/
 -
 -STAGING - USB ENE SM/MS CARD READER DRIVER
 -M:    Al Cho <acho@novell.com>
 -S:    Odd Fixes
 -F:    drivers/staging/keucr/
 -
  STAGING - VIA VT665X DRIVERS
  M:    Forest Bond <forest@alittletooquiet.net>
  S:    Odd Fixes
  F:    drivers/staging/vt665?/
  
 -STAGING - WINBOND IS89C35 WLAN USB DRIVER
 -M:    Pavel Machek <pavel@ucw.cz>
 -S:    Odd Fixes
 -F:    drivers/staging/winbond/
 -
  STAGING - XGI Z7,Z9,Z11 PCI DISPLAY DRIVER
  M:    Arnaud Patard <arnaud.patard@rtp-net.org>
  S:    Odd Fixes
@@@ -8916,7 -8918,7 +8926,7 @@@ M:      Stephen Warren <swarren@wwwdotorg.or
  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
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux.git
  S:    Supported
  N:    [^a-z]tegra
  
@@@ -9038,13 -9040,6 +9048,13 @@@ L:    linux-pm@vger.kernel.or
  S:    Supported
  F:    drivers/thermal/ti-soc-thermal/
  
 +TI CLOCK DRIVER
 +M:    Tero Kristo <t-kristo@ti.com>
 +L:    linux-omap@vger.kernel.org
 +S:    Maintained
 +F:    drivers/clk/ti/
 +F:    include/linux/clk/ti.h
 +
  TI FLASH MEDIA INTERFACE DRIVER
  M:    Alex Dubov <oakad@yahoo.com>
  S:    Maintained
@@@ -9532,6 -9527,15 +9542,6 @@@ L:     netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/usb/smsc95xx.*
  
 -USB SN9C1xx DRIVER
 -M:    Luca Risolia <luca.risolia@studio.unibo.it>
 -L:    linux-usb@vger.kernel.org
 -L:    linux-media@vger.kernel.org
 -T:    git git://linuxtv.org/media_tree.git
 -W:    http://www.linux-projects.org
 -S:    Maintained
 -F:    drivers/staging/media/sn9c102/
 -
  USB SUBSYSTEM
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  L:    linux-usb@vger.kernel.org
  #define __NR_sched_setattr            (__NR_SYSCALL_BASE+380)
  #define __NR_sched_getattr            (__NR_SYSCALL_BASE+381)
  #define __NR_renameat2                        (__NR_SYSCALL_BASE+382)
+ #define __NR_seccomp                  (__NR_SYSCALL_BASE+383)
  
 -/*
 - * This may need to be greater than __NR_last_syscall+1 in order to
 - * account for the padding in the syscall table
 - */
 -
  /*
   * The following SWIs are ARM private.
   */
  #define __ARM_NR_usr32                        (__ARM_NR_BASE+4)
  #define __ARM_NR_set_tls              (__ARM_NR_BASE+5)
  
 -/*
 - * *NOTE*: This is a ghost syscall private to the kernel.  Only the
 - * __kuser_cmpxchg code in entry-armv.S should be aware of its
 - * existence.  Don't ever use this from user code.
 - */
 -
  /*
   * The following syscalls are obsolete and no longer available for EABI.
   */
@@@ -28,6 -28,7 +28,7 @@@
  #include <linux/suspend.h>
  #include <linux/syscore_ops.h>
  #include <linux/reboot.h>
+ #include <linux/security.h>
  
  #include <generated/utsrelease.h>
  
@@@ -100,16 -101,10 +101,16 @@@ static inline long firmware_loading_tim
  #define FW_OPT_UEVENT (1U << 0)
  #define FW_OPT_NOWAIT (1U << 1)
  #ifdef CONFIG_FW_LOADER_USER_HELPER
 -#define FW_OPT_FALLBACK       (1U << 2)
 +#define FW_OPT_USERHELPER     (1U << 2)
  #else
 -#define FW_OPT_FALLBACK       0
 +#define FW_OPT_USERHELPER     0
  #endif
 +#ifdef CONFIG_FW_LOADER_USER_HELPER_FALLBACK
 +#define FW_OPT_FALLBACK               FW_OPT_USERHELPER
 +#else
 +#define FW_OPT_FALLBACK               0
 +#endif
 +#define FW_OPT_NO_WARN        (1U << 3)
  
  struct firmware_cache {
        /* firmware_buf instance will be added into the below list */
@@@ -285,15 -280,26 +286,15 @@@ static const char * const fw_path[] = 
  module_param_string(path, fw_path_para, sizeof(fw_path_para), 0644);
  MODULE_PARM_DESC(path, "customized firmware image search path with a higher priority than default path");
  
 -/* Don't inline this: 'struct kstat' is biggish */
 -static noinline_for_stack int fw_file_size(struct file *file)
 -{
 -      struct kstat st;
 -      if (vfs_getattr(&file->f_path, &st))
 -              return -1;
 -      if (!S_ISREG(st.mode))
 -              return -1;
 -      if (st.size != (int)st.size)
 -              return -1;
 -      return st.size;
 -}
 -
  static int fw_read_file_contents(struct file *file, struct firmware_buf *fw_buf)
  {
        int size;
        char *buf;
        int rc;
  
 -      size = fw_file_size(file);
 +      if (!S_ISREG(file_inode(file)->i_mode))
 +              return -EINVAL;
 +      size = i_size_read(file_inode(file));
        if (size <= 0)
                return -EINVAL;
        buf = vmalloc(size);
        if (rc != size) {
                if (rc > 0)
                        rc = -EIO;
-               vfree(buf);
-               return rc;
+               goto fail;
        }
+       rc = security_kernel_fw_from_file(file, buf, size);
+       if (rc)
+               goto fail;
        fw_buf->data = buf;
        fw_buf->size = size;
        return 0;
+ fail:
+       vfree(buf);
+       return rc;
  }
  
  static int fw_get_filesystem_firmware(struct device *device,
@@@ -612,6 -623,7 +618,7 @@@ static ssize_t firmware_loading_store(s
  {
        struct firmware_priv *fw_priv = to_firmware_priv(dev);
        struct firmware_buf *fw_buf;
+       ssize_t written = count;
        int loading = simple_strtol(buf, NULL, 10);
        int i;
  
                break;
        case 0:
                if (test_bit(FW_STATUS_LOADING, &fw_buf->status)) {
+                       int rc;
                        set_bit(FW_STATUS_DONE, &fw_buf->status);
                        clear_bit(FW_STATUS_LOADING, &fw_buf->status);
  
                         * see the mapped 'buf->data' once the loading
                         * is completed.
                         * */
-                       if (fw_map_pages_buf(fw_buf))
+                       rc = fw_map_pages_buf(fw_buf);
+                       if (rc)
                                dev_err(dev, "%s: map pages failed\n",
                                        __func__);
+                       else
+                               rc = security_kernel_fw_from_file(NULL,
+                                               fw_buf->data, fw_buf->size);
+                       /*
+                        * Same logic as fw_load_abort, only the DONE bit
+                        * is ignored and we set ABORT only on failure.
+                        */
                        list_del_init(&fw_buf->pending_list);
+                       if (rc) {
+                               set_bit(FW_STATUS_ABORT, &fw_buf->status);
+                               written = rc;
+                       }
                        complete_all(&fw_buf->completion);
                        break;
                }
        }
  out:
        mutex_unlock(&fw_lock);
-       return count;
+       return written;
  }
  
  static DEVICE_ATTR(loading, 0644, firmware_loading_show, firmware_loading_store);
@@@ -713,7 -740,7 +735,7 @@@ out
  static int fw_realloc_buffer(struct firmware_priv *fw_priv, int min_size)
  {
        struct firmware_buf *buf = fw_priv->buf;
 -      int pages_needed = ALIGN(min_size, PAGE_SIZE) >> PAGE_SHIFT;
 +      int pages_needed = PAGE_ALIGN(min_size) >> PAGE_SHIFT;
  
        /* If the array of pages is too small, grow it... */
        if (buf->page_array_size < pages_needed) {
@@@ -906,9 -933,7 +928,9 @@@ static int _request_firmware_load(struc
        wait_for_completion(&buf->completion);
  
        cancel_delayed_work_sync(&fw_priv->timeout_work);
 -      if (!buf->data)
 +      if (is_fw_load_aborted(buf))
 +              retval = -EAGAIN;
 +      else if (!buf->data)
                retval = -ENOMEM;
  
        device_remove_file(f_dev, &dev_attr_loading);
@@@ -1108,11 -1133,10 +1130,11 @@@ _request_firmware(const struct firmwar
  
        ret = fw_get_filesystem_firmware(device, fw->priv);
        if (ret) {
 -              if (opt_flags & FW_OPT_FALLBACK) {
 +              if (!(opt_flags & FW_OPT_NO_WARN))
                        dev_warn(device,
 -                               "Direct firmware load failed with error %d\n",
 -                               ret);
 +                               "Direct firmware load for %s failed with error %d\n",
 +                               name, ret);
 +              if (opt_flags & FW_OPT_USERHELPER) {
                        dev_warn(device, "Falling back to user helper\n");
                        ret = fw_load_from_user_helper(fw, name, device,
                                                       opt_flags, timeout);
@@@ -1169,6 -1193,7 +1191,6 @@@ request_firmware(const struct firmware 
  }
  EXPORT_SYMBOL(request_firmware);
  
 -#ifdef CONFIG_FW_LOADER_USER_HELPER
  /**
   * request_firmware: - load firmware directly without usermode helper
   * @firmware_p: pointer to firmware image
@@@ -1185,12 -1210,12 +1207,12 @@@ int request_firmware_direct(const struc
  {
        int ret;
        __module_get(THIS_MODULE);
 -      ret = _request_firmware(firmware_p, name, device, FW_OPT_UEVENT);
 +      ret = _request_firmware(firmware_p, name, device,
 +                              FW_OPT_UEVENT | FW_OPT_NO_WARN);
        module_put(THIS_MODULE);
        return ret;
  }
  EXPORT_SYMBOL_GPL(request_firmware_direct);
 -#endif
  
  /**
   * release_firmware: - release the resource associated with a firmware image
@@@ -1274,7 -1299,7 +1296,7 @@@ request_firmware_nowait
        fw_work->context = context;
        fw_work->cont = cont;
        fw_work->opt_flags = FW_OPT_NOWAIT | FW_OPT_FALLBACK |
 -              (uevent ? FW_OPT_UEVENT : 0);
 +              (uevent ? FW_OPT_UEVENT : FW_OPT_USERHELPER);
  
        if (!try_module_get(module)) {
                kfree(fw_work);
diff --combined fs/proc/array.c
@@@ -297,15 -297,11 +297,11 @@@ static void render_cap_t(struct seq_fil
        seq_puts(m, header);
        CAP_FOR_EACH_U32(__capi) {
                seq_printf(m, "%08x",
-                          a->cap[(_KERNEL_CAPABILITY_U32S-1) - __capi]);
+                          a->cap[CAP_LAST_U32 - __capi]);
        }
        seq_putc(m, '\n');
  }
  
- /* Remove non-existent capabilities */
- #define NORM_CAPS(v) (v.cap[CAP_TO_INDEX(CAP_LAST_CAP)] &= \
-                               CAP_TO_MASK(CAP_LAST_CAP + 1) - 1)
  static inline void task_cap(struct seq_file *m, struct task_struct *p)
  {
        const struct cred *cred;
        cap_bset        = cred->cap_bset;
        rcu_read_unlock();
  
-       NORM_CAPS(cap_inheritable);
-       NORM_CAPS(cap_permitted);
-       NORM_CAPS(cap_effective);
-       NORM_CAPS(cap_bset);
        render_cap_t(m, "CapInh:\t", &cap_inheritable);
        render_cap_t(m, "CapPrm:\t", &cap_permitted);
        render_cap_t(m, "CapEff:\t", &cap_effective);
@@@ -473,8 -464,13 +464,8 @@@ static int do_task_stat(struct seq_fil
        priority = task_prio(task);
        nice = task_nice(task);
  
 -      /* Temporary variable needed for gcc-2.96 */
 -      /* convert timespec -> nsec*/
 -      start_time =
 -              (unsigned long long)task->real_start_time.tv_sec * NSEC_PER_SEC
 -                              + task->real_start_time.tv_nsec;
        /* convert nsec -> ticks */
 -      start_time = nsec_to_clock_t(start_time);
 +      start_time = nsec_to_clock_t(task->real_start_time);
  
        seq_printf(m, "%d (%s) %c", pid_nr_ns(pid, ns), tcomm, state);
        seq_put_decimal_ll(m, ' ', ppid);
diff --combined include/linux/sched.h
@@@ -813,7 -813,7 +813,7 @@@ struct task_delay_info 
         * associated with the operation is added to XXX_delay.
         * XXX_delay contains the accumulated delay time in nanoseconds.
         */
 -      struct timespec blkio_start, blkio_end; /* Shared by blkio, swapin */
 +      u64 blkio_start;        /* Shared by blkio, swapin */
        u64 blkio_delay;        /* wait for sync block io completion */
        u64 swapin_delay;       /* wait for swapin block io completion */
        u32 blkio_count;        /* total count of the number of sync block */
        u32 swapin_count;       /* total count of the number of swapin block */
                                /* io operations performed */
  
 -      struct timespec freepages_start, freepages_end;
 +      u64 freepages_start;
        u64 freepages_delay;    /* wait for memory reclaim */
        u32 freepages_count;    /* total count of memory reclaim */
  };
@@@ -872,21 -872,21 +872,21 @@@ enum cpu_idle_type 
  #define SD_NUMA                       0x4000  /* cross-node balancing */
  
  #ifdef CONFIG_SCHED_SMT
 -static inline const int cpu_smt_flags(void)
 +static inline int cpu_smt_flags(void)
  {
        return SD_SHARE_CPUCAPACITY | SD_SHARE_PKG_RESOURCES;
  }
  #endif
  
  #ifdef CONFIG_SCHED_MC
 -static inline const int cpu_core_flags(void)
 +static inline int cpu_core_flags(void)
  {
        return SD_SHARE_PKG_RESOURCES;
  }
  #endif
  
  #ifdef CONFIG_NUMA
 -static inline const int cpu_numa_flags(void)
 +static inline int cpu_numa_flags(void)
  {
        return SD_NUMA;
  }
@@@ -999,7 -999,7 +999,7 @@@ void free_sched_domains(cpumask_var_t d
  bool cpus_share_cache(int this_cpu, int that_cpu);
  
  typedef const struct cpumask *(*sched_domain_mask_f)(int cpu);
 -typedef const int (*sched_domain_flags_f)(void);
 +typedef int (*sched_domain_flags_f)(void);
  
  #define SDTL_OVERLAP  0x01
  
@@@ -1270,6 -1270,9 +1270,6 @@@ struct task_struct 
  #ifdef CONFIG_TREE_PREEMPT_RCU
        struct rcu_node *rcu_blocked_node;
  #endif /* #ifdef CONFIG_TREE_PREEMPT_RCU */
 -#ifdef CONFIG_RCU_BOOST
 -      struct rt_mutex *rcu_boost_mutex;
 -#endif /* #ifdef CONFIG_RCU_BOOST */
  
  #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT)
        struct sched_info sched_info;
                                 * execve */
        unsigned in_iowait:1;
  
-       /* task may not gain privileges */
-       unsigned no_new_privs:1;
        /* Revert to default priority/policy when forking */
        unsigned sched_reset_on_fork:1;
        unsigned sched_contributes_to_load:1;
  
+       unsigned long atomic_flags; /* Flags needing atomic access. */
        pid_t pid;
        pid_t tgid;
  
        } vtime_snap_whence;
  #endif
        unsigned long nvcsw, nivcsw; /* context switch counts */
 -      struct timespec start_time;             /* monotonic time */
 -      struct timespec real_start_time;        /* boot based time */
 +      u64 start_time;         /* monotonic time in nsec */
 +      u64 real_start_time;    /* boot based time in nsec */
  /* mm fault and swap info: this can arguably be seen as either mm-specific or thread-specific */
        unsigned long min_flt, maj_flt;
  
        struct rb_node *pi_waiters_leftmost;
        /* Deadlock detection and priority inheritance handling */
        struct rt_mutex_waiter *pi_blocked_on;
 -      /* Top pi_waiters task */
 -      struct task_struct *pi_top_task;
  #endif
  
  #ifdef CONFIG_DEBUG_MUTEXES
@@@ -1962,6 -1966,19 +1961,19 @@@ static inline void memalloc_noio_restor
        current->flags = (current->flags & ~PF_MEMALLOC_NOIO) | flags;
  }
  
+ /* Per-process atomic flags. */
+ #define PFA_NO_NEW_PRIVS 0x00000001   /* May not gain new privileges. */
+ static inline bool task_no_new_privs(struct task_struct *p)
+ {
+       return test_bit(PFA_NO_NEW_PRIVS, &p->atomic_flags);
+ }
+ static inline void task_set_no_new_privs(struct task_struct *p)
+ {
+       set_bit(PFA_NO_NEW_PRIVS, &p->atomic_flags);
+ }
  /*
   * task->jobctl flags
   */
@@@ -2004,6 -2021,9 +2016,6 @@@ static inline void rcu_copy_process(str
  #ifdef CONFIG_TREE_PREEMPT_RCU
        p->rcu_blocked_node = NULL;
  #endif /* #ifdef CONFIG_TREE_PREEMPT_RCU */
 -#ifdef CONFIG_RCU_BOOST
 -      p->rcu_boost_mutex = NULL;
 -#endif /* #ifdef CONFIG_RCU_BOOST */
        INIT_LIST_HEAD(&p->rcu_node_entry);
  }
  
@@@ -2780,7 -2800,7 +2792,7 @@@ static inline bool __must_check current
  
        /*
         * Polling state must be visible before we test NEED_RESCHED,
 -       * paired by resched_task()
 +       * paired by resched_curr()
         */
        smp_mb__after_atomic();
  
@@@ -2798,7 -2818,7 +2810,7 @@@ static inline bool __must_check current
  
        /*
         * Polling state must be visible before we test NEED_RESCHED,
 -       * paired by resched_task()
 +       * paired by resched_curr()
         */
        smp_mb__after_atomic();
  
@@@ -2830,7 -2850,7 +2842,7 @@@ static inline void current_clr_polling(
         * TIF_NEED_RESCHED and the IPI handler, scheduler_ipi(), will also
         * fold.
         */
 -      smp_mb(); /* paired with resched_task() */
 +      smp_mb(); /* paired with resched_curr() */
  
        preempt_fold_need_resched();
  }
diff --combined kernel/fork.c
@@@ -315,6 -315,15 +315,15 @@@ static struct task_struct *dup_task_str
                goto free_ti;
  
        tsk->stack = ti;
+ #ifdef CONFIG_SECCOMP
+       /*
+        * We must handle setting up seccomp filters once we're under
+        * the sighand lock in case orig has changed between now and
+        * then. Until then, filter must be NULL to avoid messing up
+        * the usage counts on the error path calling free_task.
+        */
+       tsk->seccomp.filter = NULL;
+ #endif
  
        setup_thread_stack(tsk, orig);
        clear_user_return_notifier(tsk);
@@@ -1081,6 -1090,39 +1090,39 @@@ static int copy_signal(unsigned long cl
        return 0;
  }
  
+ static void copy_seccomp(struct task_struct *p)
+ {
+ #ifdef CONFIG_SECCOMP
+       /*
+        * Must be called with sighand->lock held, which is common to
+        * all threads in the group. Holding cred_guard_mutex is not
+        * needed because this new task is not yet running and cannot
+        * be racing exec.
+        */
+       BUG_ON(!spin_is_locked(&current->sighand->siglock));
+       /* Ref-count the new filter user, and assign it. */
+       get_seccomp_filter(current);
+       p->seccomp = current->seccomp;
+       /*
+        * Explicitly enable no_new_privs here in case it got set
+        * between the task_struct being duplicated and holding the
+        * sighand lock. The seccomp state and nnp must be in sync.
+        */
+       if (task_no_new_privs(current))
+               task_set_no_new_privs(p);
+       /*
+        * If the parent gained a seccomp mode after copying thread
+        * flags and between before we held the sighand lock, we have
+        * to manually enable the seccomp thread flag here.
+        */
+       if (p->seccomp.mode != SECCOMP_MODE_DISABLED)
+               set_tsk_thread_flag(p, TIF_SECCOMP);
+ #endif
+ }
  SYSCALL_DEFINE1(set_tid_address, int __user *, tidptr)
  {
        current->clear_child_tid = tidptr;
@@@ -1095,6 -1137,7 +1137,6 @@@ static void rt_mutex_init_task(struct t
        p->pi_waiters = RB_ROOT;
        p->pi_waiters_leftmost = NULL;
        p->pi_blocked_on = NULL;
 -      p->pi_top_task = NULL;
  #endif
  }
  
@@@ -1195,7 -1238,6 +1237,6 @@@ static struct task_struct *copy_process
                goto fork_out;
  
        ftrace_graph_init_task(p);
-       get_seccomp_filter(p);
  
        rt_mutex_init_task(p);
  
  
        posix_cpu_timers_init(p);
  
 -      do_posix_clock_monotonic_gettime(&p->start_time);
 -      p->real_start_time = p->start_time;
 -      monotonic_to_bootbased(&p->real_start_time);
 +      p->start_time = ktime_get_ns();
 +      p->real_start_time = ktime_get_boot_ns();
        p->io_context = NULL;
        p->audit_context = NULL;
        if (clone_flags & CLONE_THREAD)
  
        spin_lock(&current->sighand->siglock);
  
+       /*
+        * Copy seccomp details explicitly here, in case they were changed
+        * before holding sighand lock.
+        */
+       copy_seccomp(p);
        /*
         * Process group and session signals need to be delivered to just the
         * parent before the fork or both the parent and the child after the
@@@ -129,6 -129,7 +129,7 @@@ int dns_query(const char *type, const c
        }
  
        down_read(&rkey->sem);
+       set_bit(KEY_FLAG_ROOT_CAN_INVAL, &rkey->flags);
        rkey->perm |= KEY_USR_VIEW;
  
        ret = key_validate(rkey);
                goto put;
  
        memcpy(*_result, upayload->data, len);
 -      *_result[len] = '\0';
 +      (*_result)[len] = '\0';
  
        if (_expiry)
                *_expiry = rkey->expiry;