17 Jun, 2016

1 commit

  • 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: Tejun Heo
    Cc: Wenwei Tao
    Fixes: 01e586598b22 ("cgroup: release css->id after css_free")
    Cc: stable@vger.kernel.org # v4.0+
    Signed-off-by: Tejun Heo

    Tejun Heo
     

27 May, 2016

7 commits

  • 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: Wenwei Tao
    Signed-off-by: Tejun Heo
    Cc: Vladimir Davydov
    Fixes: 9a1049da9bd2 ("percpu-refcount: require percpu_ref to be exited explicitly")
    Fixes: 01e586598b22 ("cgroup: release css->id after css_free")
    Cc: stable@vger.kernel.org # v3.17+

    Wenwei Tao
     
  • 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
    ...

    Linus Torvalds
     
  • 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
    ...

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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
    ...

    Linus Torvalds
     
  • 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

    Linus Torvalds
     

26 May, 2016

26 commits

  • 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: Tom Haynes
    Signed-off-by: Anna Schumaker

    Tom Haynes
     
  • Signed-off-by: Tom Haynes
    Signed-off-by: Anna Schumaker

    Tom Haynes
     
  • It appears the website for maxim-ic.com changed to
    maximintegrated.com.

    Signed-off-by: Glenn Dayton
    Signed-off-by: Jean Delvare

    Glenn Dayton
     
  • "apd" was intended here instead of "init".

    Signed-off-by: Dan Carpenter
    Signed-off-by: Jean Delvare

    Dan Carpenter
     
  • 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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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
    ...

    Linus Torvalds
     
  • Commit 8a56038c2aef ("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: 8a56038c2aef ("Yama: consolidate error reporting")
    Signed-off-by: Jann Horn
    Acked-by: Kees Cook
    Signed-off-by: James Morris

    Jann Horn
     
  • 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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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()

    Linus Torvalds
     
  • 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 ' >a.c
    echo 'main() {char c; struct iovec v[] = {{&c,0},{&c,1}}; readv(0,v,2);}' >>a.c
    cc a.c && ./a.out

    Al Viro
     
  • Signed-off-by: Al Viro

    Al Viro
     
  • 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: Andreas Gruenbacher
    fs/xattr.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)
    Signed-off-by: Al Viro

    Andreas Gruenbacher
     
  • * acpi-battery:
    ACPI / battery: Correctly serialise with the pending async probe

    Rafael J. Wysocki
     
  • * 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

    Rafael J. Wysocki
     
  • …erry.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
    ...

    Linus Torvalds
     
  • 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: Tom Haynes
    Signed-off-by: Anna Schumaker

    Tom Haynes
     
  • 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

    Linus Torvalds
     
  • 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: [] 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:[] [] 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] [] pnfs_generic_commit_pagelist+0x1da/0x320 [nfsv4]
    [600522.093052] [] ? ff_layout_commit_prepare_v3+0x30/0x30 [nfs_layout_flexfiles]
    [600522.093696] [] ff_layout_commit_pagelist+0x15/0x20 [nfs_layout_flexfiles]
    [600522.094359] [] nfs_generic_commit_list+0xe8/0x120 [nfs]
    [600522.095032] [] nfs_commit_inode+0xba/0x110 [nfs]
    [600522.095719] [] nfs_release_page+0x44/0xd0 [nfs]
    [600522.096410] [] try_to_release_page+0x32/0x50
    [600522.097109] [] shrink_page_list+0x961/0xb30
    [600522.097812] [] shrink_inactive_list+0x1cd/0x550
    [600522.098530] [] shrink_lruvec+0x635/0x840
    [600522.099250] [] shrink_zone+0xf0/0x2f0
    [600522.099974] [] do_try_to_free_pages+0x192/0x470
    [600522.100709] [] try_to_free_pages+0xda/0x170
    [600522.101464] [] __alloc_pages_nodemask+0x588/0x970
    [600522.102235] [] alloc_pages_vma+0xb5/0x230
    [600522.103000] [] ? cpumask_any_but+0x39/0x50
    [600522.103774] [] wp_page_copy.isra.55+0x95/0x490
    [600522.104558] [] ? __wake_up+0x48/0x60
    [600522.105357] [] do_wp_page+0xab/0x4f0
    [600522.106137] [] ? release_task+0x36b/0x470
    [600522.106902] [] ? eventfd_ctx_read+0x67/0x1c0
    [600522.107659] [] handle_mm_fault+0xc78/0x1900
    [600522.108431] [] __do_page_fault+0x181/0x420
    [600522.109173] [] ? __audit_syscall_exit+0x1e6/0x280
    [600522.109893] [] do_page_fault+0x30/0x80
    [600522.110594] [] ? syscall_trace_leave+0xc6/0x120
    [600522.111288] [] 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 8b 40 40 4c 8b 50 30 74 24 48 8b 87 d0 01 00 00 48 8b 7e 08
    [600522.113343] RIP [] nfs_init_commit+0x22/0x130 [nfs]
    [600522.114003] RSP
    [600522.114636] CR2: 0000000000000040

    Fixes: af7cf057 (NFS: Allow multiple commit requests in flight per file)
    CC: stable@vger.kernel.org
    Signed-off-by: Weston Andros Adamson
    Signed-off-by: Anna Schumaker

    Weston Andros Adamson
     
  • 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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • nfs_create_request() doesn't return NULL, it returns error pointers.

    Fixes: 67911c8f18b5 ('NFS: Add nfs_commit_file()')
    Signed-off-by: Dan Carpenter
    Signed-off-by: Anna Schumaker

    Dan Carpenter
     

25 May, 2016

6 commits

  • Clean up whitespaces and mark unused syscalls as such.

    Signed-off-by: Helge Deller

    Helge Deller
     
  • Commit:

    b5179ac70de8 ("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: Paul E. McKenney
    Reported-by: Mike Galbraith
    Tested-by: Mike Galbraith
    Signed-off-by: Peter Zijlstra (Intel)
    Cc: Andrew Hunter
    Cc: Andy Lutomirski
    Cc: Ben Segall
    Cc: Borislav Petkov
    Cc: Brian Gerst
    Cc: Dave Hansen
    Cc: Denys Vlasenko
    Cc: Fenghua Yu
    Cc: H. Peter Anvin
    Cc: Linus Torvalds
    Cc: Matt Fleming
    Cc: Morten Rasmussen
    Cc: Oleg Nesterov
    Cc: Paul Turner
    Cc: Pavan Kondeti
    Cc: Peter Zijlstra
    Cc: Quentin Casasnovas
    Cc: Thomas Gleixner
    Cc: byungchul.park@lge.com
    Fixes: b5179ac70de8 ("sched/fair: Prepare to fix fairness problems on migration")
    Link: http://lkml.kernel.org/r/20160523091907.GD15728@worktop.ger.corp.intel.com
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     
  • Pull ARM SoC fixes from Arnd Bergmann:
    "This is a first set of bug fixes on top of what was merged for 4.7.

    Two patches for lpc32xx address a harmless build warning that was just
    introduced, one patch for the mediatek soc driver fixes a warning for
    arm64, and the pxa changes are minor cleanups that should have been
    part of the original pull requests but that I forgot to apply to the
    cleanup-fixes branch earlier"

    * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    ARM: lpc32xx: fix NR_IRQS confict
    ARM: lpc32xx: remove legacy irq controller driver
    soc: mtk-pmic-wrap: avoid integer overflow warning
    ARM: pxa: Remove CLK_IS_ROOT
    ARM: pxa: activate pinctrl for device-tree machines

    Linus Torvalds
     
  • Pull ARM SoC late DT updates from Arnd Bergmann:
    "This is a collection of a few late fixes and other misc stuff that had
    dependencies on things being merged from other trees.

    The Renesas R-Car power domain handling, and the Nvidia Tegra USB
    support both hand notable changes that required changing the DT
    binding in a way that only provides compatibility with old DT blobs on
    new kernels but not vice versa. As a consequence, the DT changes are
    based on top of the driver changes and are now in this branch.

    For NXP i.MX and Samsung Exynos, the changes in here depend on other
    changes that got merged through the clk maintainer tree"

    * tag 'armsoc-late' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (35 commits)
    ARM: dts: exynos: Add support of Bus frequency using VDD_INT for exynos5422-odroidxu3
    ARM: dts: exynos: Add bus nodes using VDD_INT for Exynos542x SoC
    ARM: dts: exynos: Add NoC Probe dt node for Exynos542x SoC
    ARM: dts: exynos: Add support of bus frequency for exynos4412-trats/odroidu3
    ARM: dts: exynos: Expand the voltage range of buck1/3 regulator for exynos4412-odroidu3
    ARM: dts: exynos: Add support of bus frequency using VDD_INT for exynos3250-rinato
    ARM: dts: exynos: Add exynos4412-ppmu-common dtsi to delete duplicate PPMU nodes
    ARM: dts: exynos: Add bus nodes using VDD_MIF for Exynos4210
    ARM: dts: exynos: Add bus nodes using VDD_INT for Exynos4x12
    ARM: dts: exynos: Add bus nodes using VDD_MIF for Exynos4x12
    ARM: dts: exynos: Add bus nodes using VDD_INT for Exynos3250
    ARM: dts: exynos: Add DMC bus frequency for exynos3250-rinato/monk
    ARM: dts: exynos: Add DMC bus node for Exynos3250
    ARM: tegra: Enable XUSB on Nyan
    ARM: tegra: Enable XUSB on Jetson TK1
    ARM: tegra: Enable XUSB on Venice2
    ARM: tegra: Add Tegra124 XUSB controller
    ARM: tegra: Move Tegra124 to the new XUSB pad controller binding
    ARM: dts: r8a7794: Use SYSC "always-on" PM Domain
    ARM: dts: r8a7793: Use SYSC "always-on" PM Domain
    ...

    Linus Torvalds
     
  • Pull asm-generic cleanup from Arnd Bergmann:
    "I have only one patch for asm-generic in this release, this one is
    from James Hogan and updates the generic system call table for
    renameat2 so we don't need to provide both renameat and renameat2 in
    newly added architectures"

    * tag 'asm-generic-4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic:
    asm-generic: Drop renameat syscall from default list

    Linus Torvalds
     
  • Pull nfsd updates from Bruce Fields:
    "A very quiet cycle for nfsd, mainly just an RDMA update from Chuck
    Lever"

    * tag 'nfsd-4.7' of git://linux-nfs.org/~bfields/linux:
    sunrpc: fix stripping of padded MIC tokens
    svcrpc: autoload rdma module
    svcrdma: Generalize svc_rdma_xdr_decode_req()
    svcrdma: Eliminate code duplication in svc_rdma_recvfrom()
    svcrdma: Drain QP before freeing svcrdma_xprt
    svcrdma: Post Receives only for forward channel requests
    svcrdma: Remove superfluous line from rdma_read_chunks()
    svcrdma: svc_rdma_put_context() is invoked twice in Send error path
    svcrdma: Do not add XDR padding to xdr_buf page vector
    svcrdma: Support IPv6 with NFS/RDMA
    nfsd: handle seqid wraparound in nfsd4_preprocess_layout_stateid
    Remove unnecessary allocation

    Linus Torvalds