1. 15 Jul, 2016 3 commits
    • Eric W. Biederman's avatar
      cgroupns: Only allow creation of hierarchies in the initial cgroup namespace · 726a4994
      Eric W. Biederman authored
      Unprivileged users can't use hierarchies if they create them as they do not
      have privilieges to the root directory.
      
      Which means the only thing a hiearchy created by an unprivileged user
      is good for is expanding the number of cgroup links in every css_set,
      which is a DOS attack.
      
      We could allow hierarchies to be created in namespaces in the initial
      user namespace.  Unfortunately there is only a single namespace for
      the names of heirarchies, so that is likely to create more confusion
      than not.
      
      So do the simple thing and restrict hiearchy creation to the initial
      cgroup namespace.
      
      Cc: stable@vger.kernel.org
      Fixes: a79a908f ("cgroup: introduce cgroup namespaces")
      Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      726a4994
    • Eric W. Biederman's avatar
      cgroupns: Close race between cgroup_post_fork and copy_cgroup_ns · eedd0f4c
      Eric W. Biederman authored
      In most code paths involving cgroup migration cgroup_threadgroup_rwsem
      is taken.  There are two exceptions:
      
      - remove_tasks_in_empty_cpuset calls cgroup_transfer_tasks
      - vhost_attach_cgroups_work calls cgroup_attach_task_all
      
      With cgroup_threadgroup_rwsem held it is guaranteed that cgroup_post_fork
      and copy_cgroup_ns will reference the same css_set from the process calling
      fork.
      
      Without such an interlock there process after fork could reference one
      css_set from it's new cgroup namespace and another css_set from
      task->cgroups, which semantically is nonsensical.
      
      Cc: stable@vger.kernel.org
      Fixes: a79a908f ("cgroup: introduce cgroup namespaces")
      Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      eedd0f4c
    • Eric W. Biederman's avatar
      cgroupns: Fix the locking in copy_cgroup_ns · 7bd88308
      Eric W. Biederman authored
      If "clone(CLONE_NEWCGROUP...)" is called it results in a nice lockdep
      valid splat.
      
      In __cgroup_proc_write the lock ordering is:
           cgroup_mutex -- through cgroup_kn_lock_live
           cgroup_threadgroup_rwsem
      
      In copy_process the guts of clone the lock ordering is:
           cgroup_threadgroup_rwsem -- through threadgroup_change_begin
           cgroup_mutex -- through copy_namespaces -- copy_cgroup_ns
      
      lockdep reports some a different call chains for the first ordering of
      cgroup_mutex and cgroup_threadgroup_rwsem but it is harder to trace.
      This is most definitely deadlock potential under the right
      circumstances.
      
      Fix this by by skipping the cgroup_mutex and making the locking in
      copy_cgroup_ns mirror the locking in cgroup_post_fork which also runs
      during fork under the cgroup_threadgroup_rwsem.
      
      Cc: stable@vger.kernel.org
      Fixes: a79a908f ("cgroup: introduce cgroup namespaces")
      Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      7bd88308
  2. 23 Jun, 2016 1 commit
    • Daniel Bristot de Oliveira's avatar
      cgroup: Disable IRQs while holding css_set_lock · 82d6489d
      Daniel Bristot de Oliveira authored
      While testing the deadline scheduler + cgroup setup I hit this
      warning.
      
      [  132.612935] ------------[ cut here ]------------
      [  132.612951] WARNING: CPU: 5 PID: 0 at kernel/softirq.c:150 __local_bh_enable_ip+0x6b/0x80
      [  132.612952] Modules linked in: (a ton of modules...)
      [  132.612981] CPU: 5 PID: 0 Comm: swapper/5 Not tainted 4.7.0-rc2 #2
      [  132.612981] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.8.2-20150714_191134- 04/01/2014
      [  132.612982]  0000000000000086 45c8bb5effdd088b ffff88013fd43da0 ffffffff813d229e
      [  132.612984]  0000000000000000 0000000000000000 ffff88013fd43de0 ffffffff810a652b
      [  132.612985]  00000096811387b5 0000000000000200 ffff8800bab29d80 ffff880034c54c00
      [  132.612986] Call Trace:
      [  132.612987]  <IRQ>  [<ffffffff813d229e>] dump_stack+0x63/0x85
      [  132.612994]  [<ffffffff810a652b>] __warn+0xcb/0xf0
      [  132.612997]  [<ffffffff810e76a0>] ? push_dl_task.part.32+0x170/0x170
      [  132.612999]  [<ffffffff810a665d>] warn_slowpath_null+0x1d/0x20
      [  132.613000]  [<ffffffff810aba5b>] __local_bh_enable_ip+0x6b/0x80
      [  132.613008]  [<ffffffff817d6c8a>] _raw_write_unlock_bh+0x1a/0x20
      [  132.613010]  [<ffffffff817d6c9e>] _raw_spin_unlock_bh+0xe/0x10
      [  132.613015]  [<ffffffff811388ac>] put_css_set+0x5c/0x60
      [  132.613016]  [<ffffffff8113dc7f>] cgroup_free+0x7f/0xa0
      [  132.613017]  [<ffffffff810a3912>] __put_task_struct+0x42/0x140
      [  132.613018]  [<ffffffff810e776a>] dl_task_timer+0xca/0x250
      [  132.613027]  [<ffffffff810e76a0>] ? push_dl_task.part.32+0x170/0x170
      [  132.613030]  [<ffffffff8111371e>] __hrtimer_run_queues+0xee/0x270
      [  132.613031]  [<ffffffff81113ec8>] hrtimer_interrupt+0xa8/0x190
      [  132.613034]  [<ffffffff81051a58>] local_apic_timer_interrupt+0x38/0x60
      [  132.613035]  [<ffffffff817d9b0d>] smp_apic_timer_interrupt+0x3d/0x50
      [  132.613037]  [<ffffffff817d7c5c>] apic_timer_interrupt+0x8c/0xa0
      [  132.613038]  <EOI>  [<ffffffff81063466>] ? native_safe_halt+0x6/0x10
      [  132.613043]  [<ffffffff81037a4e>] default_idle+0x1e/0xd0
      [  132.613044]  [<ffffffff810381cf>] arch_cpu_idle+0xf/0x20
      [  132.613046]  [<ffffffff810e8fda>] default_idle_call+0x2a/0x40
      [  132.613047]  [<ffffffff810e92d7>] cpu_startup_entry+0x2e7/0x340
      [  132.613048]  [<ffffffff81050235>] start_secondary+0x155/0x190
      [  132.613049] ---[ end trace f91934d162ce9977 ]---
      
      The warn is the spin_(lock|unlock)_bh(&css_set_lock) in the interrupt
      context. Converting the spin_lock_bh to spin_lock_irq(save) to avoid
      this problem - and other problems of sharing a spinlock with an
      interrupt.
      
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Li Zefan <lizefan@huawei.com>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: Juri Lelli <juri.lelli@arm.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: cgroups@vger.kernel.org
      Cc: stable@vger.kernel.org # 4.5+
      Cc: linux-kernel@vger.kernel.org
      Reviewed-by: default avatarRik van Riel <riel@redhat.com>
      Reviewed-by: default avatar"Luis Claudio R. Goncalves" <lgoncalv@redhat.com>
      Signed-off-by: default avatarDaniel Bristot de Oliveira <bristot@redhat.com>
      Acked-by: default avatarZefan Li <lizefan@huawei.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      82d6489d
  3. 16 Jun, 2016 1 commit
    • Tejun Heo's avatar
      cgroup: set css->id to -1 during init · 8fa3b8d6
      Tejun Heo authored
      If percpu_ref initialization fails during css_create(), the free path
      can end up trying to free css->id of zero.  As ID 0 is unused, it
      doesn't cause a critical breakage but it does trigger a warning
      message.  Fix it by setting css->id to -1 from init_and_link_css().
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Cc: Wenwei Tao <ww.tao0320@gmail.com>
      Fixes: 01e58659 ("cgroup: release css->id after css_free")
      Cc: stable@vger.kernel.org # v4.0+
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      8fa3b8d6
  4. 26 May, 2016 14 commits
    • Wenwei Tao's avatar
      cgroup: remove redundant cleanup in css_create · b00c52da
      Wenwei Tao authored
      When create css failed, before call css_free_rcu_fn, we remove the css
      id and exit the percpu_ref, but we will do these again in
      css_free_work_fn, so they are redundant.  Especially the css id, that
      would cause problem if we remove it twice, since it may be assigned to
      another css after the first remove.
      
      tj: This was broken by two commits updating the free path without
          synchronizing the creation failure path.  This can be easily
          triggered by trying to create more than 64k memory cgroups.
      Signed-off-by: default avatarWenwei Tao <ww.tao0320@gmail.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Cc: Vladimir Davydov <vdavydov@parallels.com>
      Fixes: 9a1049da ("percpu-refcount: require percpu_ref to be exited explicitly")
      Fixes: 01e58659 ("cgroup: release css->id after css_free")
      Cc: stable@vger.kernel.org # v3.17+
      b00c52da
    • Linus Torvalds's avatar
      Merge tag 'nfs-for-4.7-1' of git://git.linux-nfs.org/projects/anna/linux-nfs · ea8ea737
      Linus Torvalds authored
      Pull NFS client updates from Anna Schumaker:
       "Highlights include:
      
        Features:
         - Add support for the NFS v4.2 COPY operation
         - Add support for NFS/RDMA over IPv6
      
        Bugfixes and cleanups:
         - Avoid race that crashes nfs_init_commit()
         - Fix oops in callback path
         - Fix LOCK/OPEN race when unlinking an open file
         - Choose correct stateids when using delegations in setattr, read and
           write
         - Don't send empty SETATTR after OPEN_CREATE
         - xprtrdma: Prevent server from writing a reply into memory client
           has released
         - xprtrdma: Support using Read list and Reply chunk in one RPC call"
      
      * tag 'nfs-for-4.7-1' of git://git.linux-nfs.org/projects/anna/linux-nfs: (61 commits)
        pnfs: pnfs_update_layout needs to consider if strict iomode checking is on
        nfs/flexfiles: Use the layout segment for reading unless it a IOMODE_RW and reading is disabled
        nfs/flexfiles: Helper function to detect FF_FLAGS_NO_READ_IO
        nfs: avoid race that crashes nfs_init_commit
        NFS: checking for NULL instead of IS_ERR() in nfs_commit_file()
        pnfs: make pnfs_layout_process more robust
        pnfs: rework LAYOUTGET retry handling
        pnfs: lift retry logic from send_layoutget to pnfs_update_layout
        pnfs: fix bad error handling in send_layoutget
        flexfiles: add kerneldoc header to nfs4_ff_layout_prepare_ds
        flexfiles: remove pointless setting of NFS_LAYOUT_RETURN_REQUESTED
        pnfs: only tear down lsegs that precede seqid in LAYOUTRETURN args
        pnfs: keep track of the return sequence number in pnfs_layout_hdr
        pnfs: record sequence in pnfs_layout_segment when it's created
        pnfs: don't merge new ff lsegs with ones that have LAYOUTRETURN bit set
        pNFS/flexfiles: When initing reads or writes, we might have to retry connecting to DSes
        pNFS/flexfiles: When checking for available DSes, conditionally check for MDS io
        pNFS/flexfile: Fix erroneous fall back to read/write through the MDS
        NFS: Reclaim writes via writepage are opportunistic
        NFSv4: Use the right stateid for delegations in setattr, read and write
        ...
      ea8ea737
    • Linus Torvalds's avatar
      Merge tag 'xfs-for-linus-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs · 0b9210c9
      Linus Torvalds authored
      Pull xfs updates from Dave Chinner:
       "A pretty average collection of fixes, cleanups and improvements in
        this request.
      
        Summary:
         - fixes for mount line parsing, sparse warnings, read-only compat
           feature remount behaviour
         - allow fast path symlink lookups for inline symlinks.
         - attribute listing cleanups
         - writeback goes direct to bios rather than indirecting through
           bufferheads
         - transaction allocation cleanup
         - optimised kmem_realloc
         - added configurable error handling for metadata write errors,
           changed default error handling behaviour from "retry forever" to
           "retry until unmount then fail"
         - fixed several inode cluster writeback lookup vs reclaim race
           conditions
         - fixed inode cluster writeback checking wrong inode after lookup
         - fixed bugs where struct xfs_inode freeing wasn't actually RCU safe
         - cleaned up inode reclaim tagging"
      
      * tag 'xfs-for-linus-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs: (39 commits)
        xfs: fix warning in xfs_finish_page_writeback for non-debug builds
        xfs: move reclaim tagging functions
        xfs: simplify inode reclaim tagging interfaces
        xfs: rename variables in xfs_iflush_cluster for clarity
        xfs: xfs_iflush_cluster has range issues
        xfs: mark reclaimed inodes invalid earlier
        xfs: xfs_inode_free() isn't RCU safe
        xfs: optimise xfs_iext_destroy
        xfs: skip stale inodes in xfs_iflush_cluster
        xfs: fix inode validity check in xfs_iflush_cluster
        xfs: xfs_iflush_cluster fails to abort on error
        xfs: remove xfs_fs_evict_inode()
        xfs: add "fail at unmount" error handling configuration
        xfs: add configuration handlers for specific errors
        xfs: add configuration of error failure speed
        xfs: introduce table-based init for error behaviors
        xfs: add configurable error support to metadata buffers
        xfs: introduce metadata IO error class
        xfs: configurable error behavior via sysfs
        xfs: buffer ->bi_end_io function requires irq-safe lock
        ...
      0b9210c9
    • Linus Torvalds's avatar
      Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging · c5436731
      Linus Torvalds authored
      Pull hwmon fixlets from Jean Delvare.
      
      * 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
        Documentation/hwmon: Update links in max34440
        hwmon: (emc2103) Fix typo in MODULE_PARM_DESC
      c5436731
    • Linus Torvalds's avatar
      Merge tag 'mmc-v4.7-rc1' of git://git.linaro.org/people/ulf.hansson/mmc · 0e77816e
      Linus Torvalds authored
      Pull MMC fixes from Ulf Hansson:
       "Here are some mmc fixes intended for v4.7 rc1.  They are based on a
        commit earlier in the merge window and have been tested in linux-next
        for a while.
      
        MMC core:
         - Prevent re-tuning while serving requests for RPMB partitions
         - Extend timeout for long read time quirk to support more eMMCs
      
        MMC host:
         - sdhci-acpi: Ensure connected devices are powered when probing
         - sdhci-pci|acpi: Remove unreliable MMC_CAP_BUS_WIDTH_TEST for Intel HWs
         - dw_mmc: Correct the assigning of max_blk_size
         - dw_mmc-rockchip: Allow RPMB partitions to be created
         - dw_mmc-rockchip: Set the drive phase properly"
      
      * tag 'mmc-v4.7-rc1' of git://git.linaro.org/people/ulf.hansson/mmc:
        mmc: sdhci-acpi: Remove MMC_CAP_BUS_WIDTH_TEST for Intel controllers
        mmc: sdhci-pci: Remove MMC_CAP_BUS_WIDTH_TEST for Intel controllers
        mmc: longer timeout for long read time quirk
        mmc: dw_mmc: rockchip: Set the drive phase properly
        mmc: dw_mmc: fix the wrong max_blk_size
        mmc: dw_mmc-rockchip: add MMC_CAP_CMD23 capabilities
        mmc: sdhci-acpi: Ensure connected devices are powered when probing
        ACPI / PM: Export acpi_device_fix_up_power()
        mmc: block: Pause re-tuning while switched to the RPMB partition
        mmc: block: Always switch back to main area after RPMB access
        mmc: core: Add a facility to "pause" re-tuning
      0e77816e
    • Linus Torvalds's avatar
      Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux · bfb76444
      Linus Torvalds authored
      Pull thermal management updates from Zhang Rui:
      
       - Introduce generic ADC thermal driver, based on OF thermal (Laxman
         Dewangan)
      
       - Introduce new thermal driver for Tango chips (Marc Gonzalez)
      
       - Rockchip driver support for RK3399, RK3366, and some fixes (Caesar
         Wang, Elaine Zhang and Shawn Lin)
      
       - Add CPU power cooling model to Mediatek thermal driver (Dawei Chien)
      
       - Wider usage of dev_thermal_zone_of_sensor_register (Eduardo Valentin)
      
       - TI thermal driver gained a new maintainer (Keerthy).
      
       - Enabled powerclamp driver by checking CPU feature and package cstate
         counter instead of CPU whitelist (Jacob Pan)
      
       - Various fixes on thermal governor, OF thermal, Tegra, and RCAR
      
      * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux: (50 commits)
        thermal: tango: initialize TEMPSI_CFG
        thermal: rockchip: use the usleep_range instead of udelay
        thermal: rockchip: add the notes for better reading
        thermal: rockchip: Support RK3366 SoCs in the thermal driver
        thermal: rockchip: handle the power sequence for tsadc controller
        thermal: rockchip: update the tsadc table for rk3399
        thermal: rockchip: fixes the code_to_temp for tsadc driver
        thermal: rockchip: disable thermal->clk in err case
        thermal: tegra: add Tegra132 specific SOC_THERM driver
        thermal: fix ptr_ret.cocci warnings
        thermal: mediatek: Add cpu dynamic power cooling model.
        thermal: generic-adc: Add ADC based thermal sensor driver
        thermal: generic-adc: Add DT binding for ADC based thermal sensor
        thermal: tegra: fix static checker warning
        thermal: tegra: mark PM functions __maybe_unused
        thermal: add temperature sensor support for tango SoC
        thermal: hisilicon: fix IRQ imbalance enabling
        thermal: hisilicon: support to use any sensor
        thermal: rcar: Remove binding docs for r8a7794
        thermal: tegra: add PM support
        ...
      bfb76444
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security · 159d08f4
      Linus Torvalds authored
      Pull Yama locking fix from James Morris:
       "Fix for the Yama LSM"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security:
        Yama: fix double-spinlock and user access in atomic context
      159d08f4
    • Tom Haynes's avatar
      pnfs: pnfs_update_layout needs to consider if strict iomode checking is on · c7d73af2
      Tom Haynes authored
      As flexfiles has FF_FLAGS_NO_READ_IO, there is a need to generically
      support enforcing that a IOMODE_RW segment will not allow READ I/O.
      Signed-off-by: default avatarTom Haynes <loghyr@primarydata.com>
      Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
      c7d73af2
    • Tom Haynes's avatar
    • Glenn Dayton's avatar
      Documentation/hwmon: Update links in max34440 · 1dc2c9f5
      Glenn Dayton authored
      It appears the website for maxim-ic.com changed to
      maximintegrated.com.
      Signed-off-by: default avatarGlenn Dayton <glenn.dayton24@gmail.com>
      Signed-off-by: default avatarJean Delvare <jdelvare@suse.de>
      1dc2c9f5
    • Dan Carpenter's avatar
      hwmon: (emc2103) Fix typo in MODULE_PARM_DESC · 54f0ffc4
      Dan Carpenter authored
      "apd" was intended here instead of "init".
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarJean Delvare <jdelvare@suse.de>
      54f0ffc4
    • Linus Torvalds's avatar
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 2f7c3a18
      Linus Torvalds authored
      Pull x86 fixes from Ingo Molnar:
       "Misc fixes: EFI, entry code, pkeys and MPX fixes, TASK_SIZE cleanups
        and a tsc frequency table fix"
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/mm: Switch from TASK_SIZE to TASK_SIZE_MAX in the page fault code
        x86/fsgsbase/64: Use TASK_SIZE_MAX for FSBASE/GSBASE upper limits
        x86/mm/mpx: Work around MPX erratum SKD046
        x86/entry/64: Fix stack return address retrieval in thunk
        x86/efi: Fix 7-parameter efi_call()s
        x86/cpufeature, x86/mm/pkeys: Fix broken compile-time disabling of pkeys
        x86/tsc: Add missing Cherrytrail frequency to the table
      2f7c3a18
    • Linus Torvalds's avatar
      Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · f89eae4e
      Linus Torvalds authored
      Pull scheduler fixes from Ingo Molnar:
       "Two fixes: one for a lost wakeup, the other to fix the compiler
        optimizing out preempt operations on ARM64 (and possibly other non-x86
        architectures)"
      
      * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched/core: Fix remote wakeups
        sched/preempt: Fix preempt_count manipulations
      f89eae4e
    • Linus Torvalds's avatar
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · bdc6b758
      Linus Torvalds authored
      Pull perf updates from Ingo Molnar:
       "Mostly tooling and PMU driver fixes, but also a number of late updates
        such as the reworking of the call-chain size limiting logic to make
        call-graph recording more robust, plus tooling side changes for the
        new 'backwards ring-buffer' extension to the perf ring-buffer"
      
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (34 commits)
        perf record: Read from backward ring buffer
        perf record: Rename variable to make code clear
        perf record: Prevent reading invalid data in record__mmap_read
        perf evlist: Add API to pause/resume
        perf trace: Use the ptr->name beautifier as default for "filename" args
        perf trace: Use the fd->name beautifier as default for "fd" args
        perf report: Add srcline_from/to branch sort keys
        perf evsel: Record fd into perf_mmap
        perf evsel: Add overwrite attribute and check write_backward
        perf tools: Set buildid dir under symfs when --symfs is provided
        perf trace: Only auto set call-graph to "dwarf" when syscalls are being traced
        perf annotate: Sort list of recognised instructions
        perf annotate: Fix identification of ARM blt and bls instructions
        perf tools: Fix usage of max_stack sysctl
        perf callchain: Stop validating callchains by the max_stack sysctl
        perf trace: Fix exit_group() formatting
        perf top: Use machine->kptr_restrict_warned
        perf trace: Warn when trying to resolve kernel addresses with kptr_restrict=1
        perf machine: Do not bail out if not managing to read ref reloc symbol
        perf/x86/intel/p4: Trival indentation fix, remove space
        ...
      bdc6b758
  5. 25 May, 2016 21 commits
    • Jann Horn's avatar
      Yama: fix double-spinlock and user access in atomic context · dca6b414
      Jann Horn authored
      Commit 8a56038c ("Yama: consolidate error reporting") causes lockups
      when someone hits a Yama denial. Call chain:
      
      process_vm_readv -> process_vm_rw -> process_vm_rw_core -> mm_access
      -> ptrace_may_access
      task_lock(...) is taken
      __ptrace_may_access -> security_ptrace_access_check
      -> yama_ptrace_access_check -> report_access -> kstrdup_quotable_cmdline
      -> get_cmdline -> access_process_vm -> get_task_mm
      task_lock(...) is taken again
      
      task_lock(p) just calls spin_lock(&p->alloc_lock), so at this point,
      spin_lock() is called on a lock that is already held by the current
      process.
      
      Also: Since the alloc_lock is a spinlock, sleeping inside
      security_ptrace_access_check hooks is probably not allowed at all? So it's
      not even possible to print the cmdline from in there because that might
      involve paging in userspace memory.
      
      It would be tempting to rewrite ptrace_may_access() to drop the alloc_lock
      before calling the LSM, but even then, ptrace_may_access() itself might be
      called from various contexts in which you're not allowed to sleep; for
      example, as far as I understand, to be able to hold a reference to another
      task, usually an RCU read lock will be taken (see e.g. kcmp() and
      get_robust_list()), so that also prohibits sleeping. (And using e.g. FUSE,
      a user can cause pagefault handling to take arbitrary amounts of time -
      see https://bugs.chromium.org/p/project-zero/issues/detail?id=808.)
      
      Therefore, AFAIK, in order to print the name of a process below
      security_ptrace_access_check(), you'd have to either grab a reference to
      the mm_struct and defer the access violation reporting or just use the
      "comm" value that's stored in kernelspace and accessible without big
      complications. (Or you could try to use some kind of atomic remote VM
      access that fails if the memory isn't paged in, similar to
      copy_from_user_inatomic(), and if necessary fall back to comm, but
      that'd be kind of ugly because the comm/cmdline choice would look
      pretty random to the user.)
      
      Fix it by deferring reporting of the access violation until current
      exits kernelspace the next time.
      
      v2: Don't oops on PTRACE_TRACEME, call report_access under
      task_lock(current). Also fix nonsensical comment. And don't use
      GPF_ATOMIC for memory allocation with no locks held.
      This patch is tested both for ptrace attach and ptrace traceme.
      
      Fixes: 8a56038c ("Yama: consolidate error reporting")
      Signed-off-by: default avatarJann Horn <jann@thejh.net>
      Acked-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarJames Morris <james.l.morris@oracle.com>
      dca6b414
    • Linus Torvalds's avatar
      Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · c4a34600
      Linus Torvalds authored
      Pull objtool build fix from Ingo Molnar:
       "An libtool fix for older libelf versions"
      
      * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        objtool: Allow building with older libelf
      c4a34600
    • Linus Torvalds's avatar
      Merge branch 'work.iov_iter' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 0985b65d
      Linus Torvalds authored
      Pull vfs iov_iter regression fix from Al Viro:
       "Fix for braino in 'fold checks into iterate_and_advance()'"
      
      * 'work.iov_iter' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        do "fold checks into iterate_and_advance()" right
      0985b65d
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 55c1c7b2
      Linus Torvalds authored
      Pull vfs xattr regression fixes from Al Viro.
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        make xattr_resolve_handlers() safe to use with NULL ->s_xattr
        xattr: Fail with -EINVAL for NULL attribute names
      55c1c7b2
    • Linus Torvalds's avatar
      Merge tag 'acpi-4.7-rc1-more' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · e92677df
      Linus Torvalds authored
      Pull ACPI fix from Rafael Wysocki:
       "Additional ACPI update for v4.7-rc1
      
        Just one fix for incorrect async_synchronize_cookie() usage in the
        ACPI battery driver (Chris Wilson)"
      
      * tag 'acpi-4.7-rc1-more' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPI / battery: Correctly serialise with the pending async probe
      e92677df
    • Linus Torvalds's avatar
      Merge tag 'pm-4.7-rc1-more' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 877c057d
      Linus Torvalds authored
      Pull more power management updates from Rafael Wysocki:
       "These are two stable-candidate fixes (PM core, cpuidle) and a bunch of
        cpufreq cleanups.
      
        Specifics:
      
         - Stable-candidate cpuidle fix to make it check the right variable
           when deciding whether or not to enable interrupts on the local CPU
           so as to avoid enabling iterrupts too early in some cases if the
           system has both coupled and per-core idle states (Daniel Lezcano).
      
         - Stable-candidate PM core fix to make it handle failures at the
           "late suspend" stage of device suspend consistently for all devices
           regardless of whether or not async suspend/resume is enabled for
           them (Rafael Wysocki).
      
         - Cleanups in the cpufreq core, the schedutil governor and the
           intel_pstate driver (Rafael Wysocki, Pankaj Gupta, Viresh Kumar)"
      
      * tag 'pm-4.7-rc1-more' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        PM / sleep: Handle failures in device_suspend_late() consistently
        cpufreq: schedutil: Improve prints messages with pr_fmt
        cpuidle: Fix cpuidle_state_is_coupled() argument in cpuidle_enter()
        cpufreq: simplified goto out in cpufreq_register_driver()
        cpufreq: governor: CPUFREQ_GOV_STOP never fails
        cpufreq: governor: CPUFREQ_GOV_POLICY_EXIT never fails
        intel_pstate: Simplify conditional in intel_pstate_set_policy()
      877c057d
    • Al Viro's avatar
      do "fold checks into iterate_and_advance()" right · 19f18459
      Al Viro authored
      the only case when we should skip the iterate_and_advance() guts
      is when nothing's left in the iterator, _not_ just when requested
      amount is 0.  Said guts will do nothing in the latter case anyway;
      the problem we tried to deal with in the aforementioned commit is
      that when there's nothing left *and* the amount requested is 0,
      we might end up deferencing one iovec too many; the value we fetch
      from there is discarded in that case, but theoretically it might
      oops if the iovec array ends exactly at the end of page with the
      next page not mapped.
      
      Bailing out on zero size requested had an unexpected side effect -
      zero-length segment in the beginning of iovec array ended up
      throwing do_loop_readv_writev() into infinite spin; we do not
      advance past the empty segment at all.  Reproducer is trivial:
      echo '#include <sys/uio.h>' >a.c
      echo 'main() {char c; struct iovec v[] = {{&c,0},{&c,1}}; readv(0,v,2);}' >>a.c
      cc a.c && ./a.out </proc/uptime
      
      which should end up with the process not hanging.  Probably ought to
      go into LTP or xfstests...
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      19f18459
    • Al Viro's avatar
    • Andreas Gruenbacher's avatar
      xattr: Fail with -EINVAL for NULL attribute names · aaf431b4
      Andreas Gruenbacher authored
      Commit 98e9cb57 improved the xattr name checks in xattr_resolve_name but
      didn't update the NULL attribute name check appropriately, so NULL
      attribute names lead to NULL pointer dereferences.  Turn that into
      -EINVAL results instead.
      Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
        fs/xattr.c | 2 +-
        1 file changed, 1 insertion(+), 1 deletion(-)
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      aaf431b4
    • Rafael J. Wysocki's avatar
      Merge branch 'acpi-battery' · 0cc4b481
      Rafael J. Wysocki authored
      * acpi-battery:
        ACPI / battery: Correctly serialise with the pending async probe
      0cc4b481
    • Rafael J. Wysocki's avatar
      Merge branches 'pm-cpufreq', 'pm-cpuidle' and 'pm-core' · 4c2628cd
      Rafael J. Wysocki authored
      * pm-cpufreq:
        cpufreq: schedutil: Improve prints messages with pr_fmt
        cpufreq: simplified goto out in cpufreq_register_driver()
        cpufreq: governor: CPUFREQ_GOV_STOP never fails
        cpufreq: governor: CPUFREQ_GOV_POLICY_EXIT never fails
        intel_pstate: Simplify conditional in intel_pstate_set_policy()
      
      * pm-cpuidle:
        cpuidle: Fix cpuidle_state_is_coupled() argument in cpuidle_enter()
      
      * pm-core:
        PM / sleep: Handle failures in device_suspend_late() consistently
      4c2628cd
    • Linus Torvalds's avatar
      Merge tag 'pwm/for-4.7-rc1' of... · ecc5fbd5
      Linus Torvalds authored
      Merge tag 'pwm/for-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm
      
      Pull pwm updates from Thierry Reding:
       "This set of changes introduces an atomic API to the PWM subsystem.
        This is influenced by the DRM atomic API that was introduced a while
        back, though it is obviously a lot simpler.  The fundamental idea
        remains the same, though: drivers provide a single callback to
        implement the atomic configuration of a PWM channel.
      
        As a side-effect the PWM subsystem gains the ability for initial state
        retrieval, so that the logical state mirrors that of the hardware.
        Many use-cases don't care about this, but for others it is essential.
      
        These new features require changes in all users, which these patches
        take care of.  The core is transitioned to use the atomic callback if
        available and provides a fallback mechanism for other drivers.
      
        Changes to transition users and drivers to the atomic API are
        postponed to v4.8"
      
      * tag 'pwm/for-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm: (30 commits)
        pwm: Add information about polarity, duty cycle and period to debugfs
        pwm: Switch to the atomic API
        pwm: Update documentation
        pwm: Add core infrastructure to allow atomic updates
        pwm: Add hardware readout infrastructure
        pwm: Move the enabled/disabled info into pwm_state
        pwm: Introduce the pwm_state concept
        pwm: Keep PWM state in sync with hardware state
        ARM: Explicitly apply PWM config extracted from pwm_args
        drm: i915: Explicitly apply PWM config extracted from pwm_args
        input: misc: pwm-beeper: Explicitly apply PWM config extracted from pwm_args
        input: misc: max8997: Explicitly apply PWM config extracted from pwm_args
        backlight: lm3630a: explicitly apply PWM config extracted from pwm_args
        backlight: lp855x: Explicitly apply PWM config extracted from pwm_args
        backlight: lp8788: Explicitly apply PWM config extracted from pwm_args
        backlight: pwm_bl: Use pwm_get_args() where appropriate
        fbdev: ssd1307fb: Use pwm_get_args() where appropriate
        regulator: pwm: Use pwm_get_args() where appropriate
        leds: pwm: Use pwm_get_args() where appropriate
        input: misc: max77693: Use pwm_get_args() where appropriate
        ...
      ecc5fbd5
    • Tom Haynes's avatar
      nfs/flexfiles: Helper function to detect FF_FLAGS_NO_READ_IO · fb1084e3
      Tom Haynes authored
      The mds can inform the client not to use the IOMODE_RW layout
      segment for doing READs. I.e., it is basically a
      IOMODE_WRITE layout segment.
      
      It would do this to not interfere with the WRITEs.
      Signed-off-by: default avatarTom Haynes <loghyr@primarydata.com>
      Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
      fb1084e3
    • Linus Torvalds's avatar
      Merge git://www.linux-watchdog.org/linux-watchdog · 1f93d2ab
      Linus Torvalds authored
      Pull watchdog updates from Wim Van Sebroeck:
      
       - add support for Fintek F81865 Super-IO chip
      
       - add support for watchdogs (RWDT and SWDT) found on RCar Gen3 based
         SoCs from Renesas
      
       - octeon: Handle the FROZEN hot plug notifier actions
      
       - f71808e_wdt fixes and cleanups
      
       - some small improvements in code and documentation
      
      * git://www.linux-watchdog.org/linux-watchdog:
        MAINTAINERS: Add file patterns for watchdog device tree bindings
        Documentation: Add ebc-c384_wdt watchdog-parameters.txt entry
        watchdog: shwdt: Use setup_timer()
        watchdog: cpwd: Use setup_timer()
        arm64: defconfig: enable Renesas Watchdog Timer
        watchdog: renesas-wdt: add driver
        watchdog: remove error message when unable to allocate watchdog device
        watchdog: f71808e_wdt: Fix WDTMOUT_STS register read
        watchdog: f71808e_wdt: Fix typo
        watchdog: f71808e_wdt: Add F81865 support
        watchdog: sp5100_tco: properly check for new register layouts
        watchdog: core: Fix circular locking dependency
        watchdog: core: fix trivial typo in a comment
        watchdog: hpwdt: Adjust documentation to match latest kernel module parameters.
        watchdog: imx2_wdt: add external reset support via dt prop
        watchdog: octeon: Handle the FROZEN hot plug notifier actions.
        watchdog: qcom: Report reboot reason
      1f93d2ab
    • Weston Andros Adamson's avatar
      nfs: avoid race that crashes nfs_init_commit · ade8febd
      Weston Andros Adamson authored
      Since the patch "NFS: Allow multiple commit requests in flight per file"
      we can run multiple simultaneous commits on the same inode.  This
      introduced a race over collecting pages to commit that made it possible
      to call nfs_init_commit() with an empty list - which causes crashes like
      the one below.
      
      The fix is to catch this race and avoid calling nfs_init_commit and
      initiate_commit when there is no work to do.
      
      Here is the crash:
      
      [600522.076832] BUG: unable to handle kernel NULL pointer dereference at 0000000000000040
      [600522.078475] IP: [<ffffffffa0479e72>] nfs_init_commit+0x22/0x130 [nfs]
      [600522.078745] PGD 4272b1067 PUD 4272cb067 PMD 0
      [600522.078972] Oops: 0000 [#1] SMP
      [600522.079204] Modules linked in: nfsv3 nfs_layout_flexfiles rpcsec_gss_krb5 nfsv4 dns_resolver nfs fscache dcdbas ip6t_rpfilter ip6t_REJECT nf_reject_ipv6 xt_conntrack ebtable_nat ebtable_broute bridge stp llc ebtable_filter ebtables ip6table_nat nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv6 ip6table_mangle ip6table_security ip6table_raw ip6table_filter ip6_tables iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack iptable_mangle iptable_security iptable_raw vmw_vsock_vmci_transport vsock bonding ipmi_devintf ipmi_msghandler coretemp crct10dif_pclmul crc32_pclmul ghash_clmulni_intel ppdev vmw_balloon parport_pc parport acpi_cpufreq vmw_vmci i2c_piix4 shpchp nfsd auth_rpcgss nfs_acl lockd grace sunrpc xfs libcrc32c vmwgfx drm_kms_helper ttm drm crc32c_intel serio_raw vmxnet3
      [600522.081380]  vmw_pvscsi ata_generic pata_acpi
      [600522.081809] CPU: 3 PID: 15667 Comm: /usr/bin/python Not tainted 4.1.9-100.pd.88.el7.x86_64 #1
      [600522.082281] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 09/30/2014
      [600522.082814] task: ffff8800bbbfa780 ti: ffff88042ae84000 task.ti: ffff88042ae84000
      [600522.083378] RIP: 0010:[<ffffffffa0479e72>]  [<ffffffffa0479e72>] nfs_init_commit+0x22/0x130 [nfs]
      [600522.083973] RSP: 0018:ffff88042ae87438  EFLAGS: 00010246
      [600522.084571] RAX: 0000000000000000 RBX: ffff880003485e40 RCX: ffff88042ae87588
      [600522.085188] RDX: 0000000000000000 RSI: ffff88042ae874b0 RDI: ffff880003485e40
      [600522.085756] RBP: ffff88042ae87448 R08: ffff880003486010 R09: ffff88042ae874b0
      [600522.086332] R10: 0000000000000000 R11: 0000000000000005 R12: ffff88042ae872d0
      [600522.086905] R13: ffff88042ae874b0 R14: ffff880003485e40 R15: ffff88042704c840
      [600522.087484] FS:  00007f4728ff2740(0000) GS:ffff88043fd80000(0000) knlGS:0000000000000000
      [600522.088070] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      [600522.088663] CR2: 0000000000000040 CR3: 000000042b6aa000 CR4: 00000000001406e0
      [600522.089327] Stack:
      [600522.089926]  0000000000000001 ffff88042ae87588 ffff88042ae874f8 ffffffffa04f09fa
      [600522.090549]  0000000000017840 0000000000017840 ffff88042ae87588 ffff8803258d9930
      [600522.091169]  ffff88042ae87578 ffffffffa0563d80 0000000000000000 ffff88042704c840
      [600522.091789] Call Trace:
      [600522.092420]  [<ffffffffa04f09fa>] pnfs_generic_commit_pagelist+0x1da/0x320 [nfsv4]
      [600522.093052]  [<ffffffffa0563d80>] ? ff_layout_commit_prepare_v3+0x30/0x30 [nfs_layout_flexfiles]
      [600522.093696]  [<ffffffffa0562645>] ff_layout_commit_pagelist+0x15/0x20 [nfs_layout_flexfiles]
      [600522.094359]  [<ffffffffa047bc78>] nfs_generic_commit_list+0xe8/0x120 [nfs]
      [600522.095032]  [<ffffffffa047bd6a>] nfs_commit_inode+0xba/0x110 [nfs]
      [600522.095719]  [<ffffffffa046ac54>] nfs_release_page+0x44/0xd0 [nfs]
      [600522.096410]  [<ffffffff811a8122>] try_to_release_page+0x32/0x50
      [600522.097109]  [<ffffffff811bd4f1>] shrink_page_list+0x961/0xb30
      [600522.097812]  [<ffffffff811bdced>] shrink_inactive_list+0x1cd/0x550
      [600522.098530]  [<ffffffff811bea65>] shrink_lruvec+0x635/0x840
      [600522.099250]  [<ffffffff811bed60>] shrink_zone+0xf0/0x2f0
      [600522.099974]  [<ffffffff811bf312>] do_try_to_free_pages+0x192/0x470
      [600522.100709]  [<ffffffff811bf6ca>] try_to_free_pages+0xda/0x170
      [600522.101464]  [<ffffffff811b2198>] __alloc_pages_nodemask+0x588/0x970
      [600522.102235]  [<ffffffff811fbbd5>] alloc_pages_vma+0xb5/0x230
      [600522.103000]  [<ffffffff813a1589>] ? cpumask_any_but+0x39/0x50
      [600522.103774]  [<ffffffff811d6115>] wp_page_copy.isra.55+0x95/0x490
      [600522.104558]  [<ffffffff810e3438>] ? __wake_up+0x48/0x60
      [600522.105357]  [<ffffffff811d7d3b>] do_wp_page+0xab/0x4f0
      [600522.106137]  [<ffffffff810a1bbb>] ? release_task+0x36b/0x470
      [600522.106902]  [<ffffffff8126dbd7>] ? eventfd_ctx_read+0x67/0x1c0
      [600522.107659]  [<ffffffff811da2a8>] handle_mm_fault+0xc78/0x1900
      [600522.108431]  [<ffffffff81067ef1>] __do_page_fault+0x181/0x420
      [600522.109173]  [<ffffffff811446a6>] ? __audit_syscall_exit+0x1e6/0x280
      [600522.109893]  [<ffffffff810681c0>] do_page_fault+0x30/0x80
      [600522.110594]  [<ffffffff81024f36>] ? syscall_trace_leave+0xc6/0x120
      [600522.111288]  [<ffffffff81790a58>] page_fault+0x28/0x30
      [600522.111947] Code: 5d c3 0f 1f 80 00 00 00 00 0f 1f 44 00 00 55 4c 8d 87 d0 01 00 00 48 89 e5 53 48 89 fb 48 83 ec 08 4c 8b 0e 49 8b 41 18 4c 39 ce <48> 8b 40 40 4c 8b 50 30 74 24 48 8b 87 d0 01 00 00 48 8b 7e 08
      [600522.113343] RIP  [<ffffffffa0479e72>] nfs_init_commit+0x22/0x130 [nfs]
      [600522.114003]  RSP <ffff88042ae87438>
      [600522.114636] CR2: 0000000000000040
      
      Fixes: af7cf057 (NFS: Allow multiple commit requests in flight per file)
      CC: stable@vger.kernel.org
      Signed-off-by: default avatarWeston Andros Adamson <dros@primarydata.com>
      Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
      ade8febd
    • Linus Torvalds's avatar
      Merge tag 'vfio-v4.7-rc1' of git://github.com/awilliam/linux-vfio · 48dd7cef
      Linus Torvalds authored
      Pull VFIO updates from Alex Williamson:
      
       - Hide INTx on certain known broken devices (Alex Williamson)
      
       - Additional backdoor reset detection (Alex Williamson)
      
       - Remove unused iommudata reference (Alexey Kardashevskiy)
      
       - Use cfg_size to avoid probing extended config space (Alexey
         Kardashevskiy)
      
      * tag 'vfio-v4.7-rc1' of git://github.com/awilliam/linux-vfio:
        vfio_pci: Test for extended capabilities if config space > 256 bytes
        vfio_iommu_spapr_tce: Remove unneeded iommu_group_get_iommudata
        vfio/pci: Add test for BAR restore
        vfio/pci: Hide broken INTx support from user
      48dd7cef
    • Linus Torvalds's avatar
      Merge tag 'drm-4.7-rc1-headers-fix' of git://people.freedesktop.org/~airlied/linux · b462b37b
      Linus Torvalds authored
      Pull header warning fix from Dave Airlie:
       "Here is the C++ guards warning fix from Arnd"
      
      [ Background: there are 'extern "C" { }' guards in include/uapi for the
        GPU headers.
      
        They should arguably be wrapped somehow, but as it is they caused
        checkpatch to warn because it would trigger on the 'extern' and think
        it's exporting a function or variable from the kernel to user space.
      
        This just fixes checkpatch.  Whether we wrap the C++ guards some way
        in the future will be an independent issue. ]
      
      * tag 'drm-4.7-rc1-headers-fix' of git://people.freedesktop.org/~airlied/linux:
        headers_check: don't warn about c++ guards
      b462b37b
    • Linus Torvalds's avatar
      Merge branch 'parisc-4.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · 24c82fbb
      Linus Torvalds authored
      Pull parisc updates from Helge Deller:
      
       - Add native high-resolution timing code for sched_clock() and other
         timing functions based on the processor internal cr16 cycle counters
      
       - Add syscall tracepoint support
      
       - Add regset support
      
       - Speed up get_user() and put_user() functions
      
       - Updated futex.h to match generic implementation (John David Anglin)
      
       - A few smaller ftrace build fixes
      
       - Fixed thuge-gen kernel self test to utilize architectured MAP_HUGETLB
         value
      
       - Added parisc architecture to seccomp_bpf kernel self test
      
       - Various typo fixes (Andrea Gelmini)
      
      * 'parisc-4.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
        parisc: Whitespace cleanups in unistd.h
        parisc: Use long jump to reach ftrace_return_to_handler()
        parisc: Fix typo in fpudispatch.c
        parisc: Fix typos in eisa_eeprom.h
        parisc: Fix typo in ldcw.h
        parisc: Fix typo in pdc.h
        parisc: Update futex.h to match generic implementation
        parisc: Merge ftrace C-helper and assembler functions into .text.hot section
        selftests/thuge-gen: Use platform specific MAP_HUGETLB value
        parisc: Add native high-resolution sched_clock() implementation
        parisc: Add ARCH_TRACEHOOK and regset support
        parisc: Add 64bit get_user() and put_user() for 32bit kernel
        parisc: Simplify and speed up get_user() and put_user()
        parisc: Add syscall tracepoint support
      24c82fbb
    • Dan Carpenter's avatar
      NFS: checking for NULL instead of IS_ERR() in nfs_commit_file() · 2997bfd0
      Dan Carpenter authored
      nfs_create_request() doesn't return NULL, it returns error pointers.
      
      Fixes: 67911c8f ('NFS: Add nfs_commit_file()')
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
      2997bfd0
    • Helge Deller's avatar
      parisc: Whitespace cleanups in unistd.h · 784c2213
      Helge Deller authored
      Clean up whitespaces and mark unused syscalls as such.
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      784c2213
    • Peter Zijlstra's avatar
      sched/core: Fix remote wakeups · b7e7ade3
      Peter Zijlstra authored
      Commit:
      
        b5179ac7 ("sched/fair: Prepare to fix fairness problems on migration")
      
      ... introduced a bug: Mike Galbraith found that it introduced a
      performance regression, while Paul E. McKenney reported lost
      wakeups and bisected it to this commit.
      
      The reason is that I mis-read ttwu_queue() such that I assumed any
      wakeup that got a remote queue must have had the task migrated.
      
      Since this is not so; we need to transfer this information between
      queueing the wakeup and actually doing the wakeup. Use a new
      task_struct::sched_flag for this, we already write to
      sched_contributes_to_load in the wakeup path so this is a hot and
      modified cacheline.
      Reported-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Reported-by: default avatarMike Galbraith <umgwanakikbuti@gmail.com>
      Tested-by: default avatarMike Galbraith <umgwanakikbuti@gmail.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Andrew Hunter <ahh@google.com>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Ben Segall <bsegall@google.com>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Brian Gerst <brgerst@gmail.com>
      Cc: Dave Hansen <dave.hansen@linux.intel.com>
      Cc: Denys Vlasenko <dvlasenk@redhat.com>
      Cc: Fenghua Yu <fenghua.yu@intel.com>
      Cc: H. Peter Anvin <hpa@zytor.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Matt Fleming <matt@codeblueprint.co.uk>
      Cc: Morten Rasmussen <morten.rasmussen@arm.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Paul Turner <pjt@google.com>
      Cc: Pavan Kondeti <pkondeti@codeaurora.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Quentin Casasnovas <quentin.casasnovas@oracle.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: byungchul.park@lge.com
      Fixes: b5179ac7 ("sched/fair: Prepare to fix fairness problems on migration")
      Link: http://lkml.kernel.org/r/20160523091907.GD15728@worktop.ger.corp.intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      b7e7ade3