16 Apr, 2019

2 commits

  • The worker accounting for CPU bound workers is plugged into the core
    scheduler code and the wakeup code. This is not a hard requirement and
    can be avoided by keeping track of the state in the workqueue code
    itself.

    Keep track of the sleeping state in the worker itself and call the
    notifier before entering the core scheduler. There might be false
    positives when the task is woken between that call and actually
    scheduling, but that's not really different from scheduling and being
    woken immediately after switching away. When nr_running is updated when
    the task is retunrning from schedule() then it is later compared when it
    is done from ttwu().

    [ bigeasy: preempt_disable() around wq_worker_sleeping() by Daniel Bristot de Oliveira ]

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Peter Zijlstra (Intel)
    Acked-by: Tejun Heo
    Cc: Daniel Bristot de Oliveira
    Cc: Lai Jiangshan
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/ad2b29b5715f970bffc1a7026cabd6ff0b24076a.1532952814.git.bristot@redhat.com
    Signed-off-by: Ingo Molnar

    Thomas Gleixner
     
  • The prototype of that function was already hoisted up in:

    commit 3b1baa6496e6 ("sched/fair: Add 'group_misfit_task' load-balance type")

    but that seems to have been missed. Get rid of the extra prototype.

    Signed-off-by: Valentin Schneider
    Acked-by: Quentin Perret
    Cc: Dietmar.Eggemann@arm.com
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: morten.rasmussen@arm.com
    Fixes: 2802bf3cd936 ("sched/fair: Add over-utilization/tipping point indicator")
    Link: http://lkml.kernel.org/r/20190416140621.19884-1-valentin.schneider@arm.com
    Signed-off-by: Ingo Molnar

    Valentin Schneider
     

10 Apr, 2019

2 commits

  • While staring at build_sched_domains(), I realized that get_group()
    does several duplicate (thus useless) writes.

    If you take the Arm Juno r0 (LITTLEs = [0, 3, 4, 5], bigs = [1, 2]), the
    sched_group build flow would look like this:

    ('MC[cpu]->sg' means 'per_cpu_ptr(&tl->data->sg, cpu)' with 'tl == MC')

    build_sched_groups(MC[CPU0]->sd, CPU0)
    get_group(0) -> MC[CPU0]->sg
    get_group(3) -> MC[CPU3]->sg
    get_group(4) -> MC[CPU4]->sg
    get_group(5) -> MC[CPU5]->sg

    build_sched_groups(DIE[CPU0]->sd, CPU0)
    get_group(0) -> DIE[CPU0]->sg
    get_group(1) -> DIE[CPU1]->sg sd, CPU1) |
    get_group(1) -> MC[CPU1]->sg |
    get_group(2) -> MC[CPU2]->sg |
    |
    build_sched_groups(DIE[CPU1]->sd, CPU1) ^
    get_group(1) -> DIE[CPU1]->sg } We've set up these two up here!
    get_group(3) -> DIE[CPU0]->sg }

    From this point on, we will only use sched_groups that have been
    previously visited & initialized. The only new operation will
    be which group pointer we affect to sd->groups.

    On the Juno r0 we get 32 get_group() calls, every single one of them
    writing to a sched_group->cpumask. However, all of the data structures
    we need are set up after 8 visits (see above).

    Return early from get_group() if we've already visited (and thus
    initialized) the sched_group we're looking at. Overlapping domains
    are not affected as they do not use build_sched_groups().

    Tested on a Juno and a 2 * (Xeon E5-2690) system.

    ( FWIW I initially checked the refs for both sg && sg->sgc, but figured if
    they weren't both 0 or > 1 then something must have gone wrong, so I
    threw in a WARN_ON(). )

    No change in functionality intended.

    Signed-off-by: Valentin Schneider
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar

    Valentin Schneider
     
  • The comment was introduced (pre 2.6.12) by:

    8a7a2318dc07 ("[PATCH] sched: consolidate sched domains")

    and referred to sched_group->cpu_power. This was folded into
    sched_group->sched_group_power in

    commit 9c3f75cbd144 ("sched: Break out cpu_power from the sched_group structure")

    The comment was then updated in:

    ced549fa5fc1 ("sched: Remove remaining dubious usage of "power"")

    but should have replaced "sg->cpu_capacity" with
    "sg->sched_group_capacity". Do that now.

    Signed-off-by: Valentin Schneider
    Cc: Dietmar.Eggemann@arm.com
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: morten.rasmussen@arm.com
    Cc: qais.yousef@arm.com
    Link: http://lkml.kernel.org/r/20190409173546.4747-3-valentin.schneider@arm.com
    Signed-off-by: Ingo Molnar

    Valentin Schneider
     

03 Apr, 2019

6 commits

  • Fix these sparse warnigs:

    kernel/sched/fair.c:3570:6: warning: symbol 'sync_entity_load_avg' was not declared. Should it be static?
    kernel/sched/fair.c:3583:6: warning: symbol 'remove_entity_load_avg' was not declared. Should it be static?

    Signed-off-by: YueHaibing
    Signed-off-by: Peter Zijlstra (Intel)
    Cc: Linus Torvalds
    Cc: Mike Galbraith
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: https://lkml.kernel.org/r/20190320133839.21392-1-yuehaibing@huawei.com
    Signed-off-by: Ingo Molnar

    YueHaibing
     
  • This fixes the following sparse errors in sched/fair.c:

    fair.c:6506:14: error: incompatible types in comparison expression
    fair.c:8642:21: error: incompatible types in comparison expression

    Using __rcu will also help sparse catch any future bugs.

    Signed-off-by: Joel Fernandes (Google)
    Signed-off-by: Peter Zijlstra (Intel)
    [ From an RCU perspective. ]
    Reviewed-by: Paul E. McKenney
    Cc: Josh Triplett
    Cc: Lai Jiangshan
    Cc: Linus Torvalds
    Cc: Luc Van Oostenryck
    Cc: Mathieu Desnoyers
    Cc: Mike Galbraith
    Cc: Morten Rasmussen
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: Thomas Gleixner
    Cc: keescook@chromium.org
    Cc: kernel-hardening@lists.openwall.com
    Cc: kernel-team@android.com
    Link: https://lkml.kernel.org/r/20190321003426.160260-5-joel@joelfernandes.org
    Signed-off-by: Ingo Molnar

    Joel Fernandes (Google)
     
  • This suppresses sparse error generated due to the recently added
    rcu_assign_pointer sparse check.

    percpu-rwsem.c:162:9: sparse: error: incompatible types in comparison expression
    exit.c:316:16: sparse: error: incompatible types in comparison expression

    Signed-off-by: Joel Fernandes (Google)
    Signed-off-by: Peter Zijlstra (Intel)
    [ From an RCU perspective. ]
    Reviewed-by: Paul E. McKenney
    Cc: Josh Triplett
    Cc: Lai Jiangshan
    Cc: Linus Torvalds
    Cc: Luc Van Oostenryck
    Cc: Mathieu Desnoyers
    Cc: Mike Galbraith
    Cc: Morten Rasmussen
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: Thomas Gleixner
    Cc: keescook@chromium.org
    Cc: kernel-hardening@lists.openwall.com
    Cc: kernel-team@android.com
    Link: https://lkml.kernel.org/r/20190321003426.160260-4-joel@joelfernandes.org
    Signed-off-by: Ingo Molnar

    Joel Fernandes (Google)
     
  • The scheduler uses RCU API in various places to access sched_domain
    pointers. These cause sparse errors as below.

    Many new errors show up because of an annotation check I added to
    rcu_assign_pointer(). Let us annotate the pointers correctly which also
    will help sparse catch any potential future bugs.

    This fixes the following sparse errors:

    rt.c:1681:9: error: incompatible types in comparison expression
    deadline.c:1904:9: error: incompatible types in comparison expression
    core.c:519:9: error: incompatible types in comparison expression
    core.c:1634:17: error: incompatible types in comparison expression
    fair.c:6193:14: error: incompatible types in comparison expression
    fair.c:9883:22: error: incompatible types in comparison expression
    fair.c:9897:9: error: incompatible types in comparison expression
    sched.h:1287:9: error: incompatible types in comparison expression
    topology.c:612:9: error: incompatible types in comparison expression
    topology.c:615:9: error: incompatible types in comparison expression
    sched.h:1300:9: error: incompatible types in comparison expression
    topology.c:618:9: error: incompatible types in comparison expression
    sched.h:1287:9: error: incompatible types in comparison expression
    topology.c:621:9: error: incompatible types in comparison expression
    sched.h:1300:9: error: incompatible types in comparison expression
    topology.c:624:9: error: incompatible types in comparison expression
    topology.c:671:9: error: incompatible types in comparison expression
    stats.c:45:17: error: incompatible types in comparison expression
    fair.c:5998:15: error: incompatible types in comparison expression
    fair.c:5989:15: error: incompatible types in comparison expression
    fair.c:5998:15: error: incompatible types in comparison expression
    fair.c:5989:15: error: incompatible types in comparison expression
    fair.c:6120:19: error: incompatible types in comparison expression
    fair.c:6506:14: error: incompatible types in comparison expression
    fair.c:6515:14: error: incompatible types in comparison expression
    fair.c:6623:9: error: incompatible types in comparison expression
    fair.c:5970:17: error: incompatible types in comparison expression
    fair.c:8642:21: error: incompatible types in comparison expression
    fair.c:9253:9: error: incompatible types in comparison expression
    fair.c:9331:9: error: incompatible types in comparison expression
    fair.c:9519:15: error: incompatible types in comparison expression
    fair.c:9533:14: error: incompatible types in comparison expression
    fair.c:9542:14: error: incompatible types in comparison expression
    fair.c:9567:14: error: incompatible types in comparison expression
    fair.c:9597:14: error: incompatible types in comparison expression
    fair.c:9421:16: error: incompatible types in comparison expression
    fair.c:9421:16: error: incompatible types in comparison expression

    Signed-off-by: Joel Fernandes (Google)
    Signed-off-by: Peter Zijlstra (Intel)
    [ From an RCU perspective. ]
    Reviewed-by: Paul E. McKenney
    Cc: Josh Triplett
    Cc: Lai Jiangshan
    Cc: Linus Torvalds
    Cc: Luc Van Oostenryck
    Cc: Mathieu Desnoyers
    Cc: Mike Galbraith
    Cc: Morten Rasmussen
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: Thomas Gleixner
    Cc: keescook@chromium.org
    Cc: kernel-hardening@lists.openwall.com
    Cc: kernel-team@android.com
    Link: https://lkml.kernel.org/r/20190321003426.160260-3-joel@joelfernandes.org
    Signed-off-by: Ingo Molnar

    Joel Fernandes (Google)
     
  • Recently I added an RCU annotation check to rcu_assign_pointer(). All
    pointers assigned to RCU protected data are to be annotated with __rcu
    inorder to be able to use rcu_assign_pointer() similar to checks in
    other RCU APIs.

    This resulted in a sparse error:

    kernel//sched/cpufreq.c:41:9: sparse: error: incompatible types in comparison expression (different address spaces)

    Fix this by annotating cpufreq_update_util_data pointer with __rcu. This
    will also help sparse catch any future RCU misuage bugs.

    Signed-off-by: Joel Fernandes (Google)
    [ From an RCU perspective. ]
    Signed-off-by: Peter Zijlstra (Intel)
    Reviewed-by: Paul E. McKenney
    Cc: Josh Triplett
    Cc: Lai Jiangshan
    Cc: Linus Torvalds
    Cc: Luc Van Oostenryck
    Cc: Mathieu Desnoyers
    Cc: Mike Galbraith
    Cc: Morten Rasmussen
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: Thomas Gleixner
    Cc: keescook@chromium.org
    Cc: kernel-hardening@lists.openwall.com
    Cc: kernel-team@android.com
    Link: https://lkml.kernel.org/r/20190321003426.160260-2-joel@joelfernandes.org
    Signed-off-by: Ingo Molnar

    Joel Fernandes (Google)
     
  • A NULL pointer dereference bug was reported on a distribution kernel but
    the same issue should be present on mainline kernel. It occured on s390
    but should not be arch-specific. A partial oops looks like:

    Unable to handle kernel pointer dereference in virtual kernel address space
    ...
    Call Trace:
    ...
    try_to_wake_up+0xfc/0x450
    vhost_poll_wakeup+0x3a/0x50 [vhost]
    __wake_up_common+0xbc/0x178
    __wake_up_common_lock+0x9e/0x160
    __wake_up_sync_key+0x4e/0x60
    sock_def_readable+0x5e/0x98

    The bug hits any time between 1 hour to 3 days. The dereference occurs
    in update_cfs_rq_h_load when accumulating h_load. The problem is that
    cfq_rq->h_load_next is not protected by any locking and can be updated
    by parallel calls to task_h_load. Depending on the compiler, code may be
    generated that re-reads cfq_rq->h_load_next after the check for NULL and
    then oops when reading se->avg.load_avg. The dissassembly showed that it
    was possible to reread h_load_next after the check for NULL.

    While this does not appear to be an issue for later compilers, it's still
    an accident if the correct code is generated. Full locking in this path
    would have high overhead so this patch uses READ_ONCE to read h_load_next
    only once and check for NULL before dereferencing. It was confirmed that
    there were no further oops after 10 days of testing.

    As Peter pointed out, it is also necessary to use WRITE_ONCE() to avoid any
    potential problems with store tearing.

    Signed-off-by: Mel Gorman
    Signed-off-by: Peter Zijlstra (Intel)
    Reviewed-by: Valentin Schneider
    Cc: Linus Torvalds
    Cc: Mike Galbraith
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc:
    Fixes: 685207963be9 ("sched: Move h_load calculation to task_h_load()")
    Link: https://lkml.kernel.org/r/20190319123610.nsivgf3mjbjjesxb@techsingularity.net
    Signed-off-by: Ingo Molnar

    Mel Gorman
     

01 Apr, 2019

6 commits

  • Pull aio race fixes and cleanups from Al Viro.

    The aio code had more issues with error handling and races with the aio
    completing at just the right (wrong) time along with freeing the file
    descriptor when another thread closes the file.

    Just a couple of these commits are the actual fixes: the others are
    cleanups to either make the fixes simpler, or to make the code legible
    and understandable enough that we hope there's no more fundamental races
    hiding.

    * 'work.aio' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    aio: move sanity checks and request allocation to io_submit_one()
    deal with get_reqs_available() in aio_get_req() itself
    aio: move dropping ->ki_eventfd into iocb_destroy()
    make aio_read()/aio_write() return int
    Fix aio_poll() races
    aio: store event at final iocb_put()
    aio: keep io_event in aio_kiocb
    aio: fold lookup_kiocb() into its sole caller
    pin iocb through aio.

    Linus Torvalds
     
  • Pull symlink fixes from Al Viro:
    "The ceph fix is already in mainline, Daniel's bpf fix is in bpf tree
    (1da6c4d9140c "bpf: fix use after free in bpf_evict_inode"), the rest
    is in here"

    * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    debugfs: fix use-after-free on symlink traversal
    ubifs: fix use-after-free on symlink traversal
    jffs2: fix use-after-free on symlink traversal

    Linus Torvalds
     
  • symlink body shouldn't be freed without an RCU delay. Switch debugfs to
    ->destroy_inode() and use of call_rcu(); free both the inode and symlink
    body in the callback. Similar to solution for bpf, only here it's even
    more obvious that ->evict_inode() can be dropped.

    Signed-off-by: Al Viro

    Al Viro
     
  • free the symlink body after the same RCU delay we have for freeing the
    struct inode itself, so that traversal during RCU pathwalk wouldn't step
    into freed memory.

    Signed-off-by: Al Viro

    Al Viro
     
  • free the symlink body after the same RCU delay we have for freeing the
    struct inode itself, so that traversal during RCU pathwalk wouldn't step
    into freed memory.

    Signed-off-by: Al Viro

    Al Viro
     
  • Linus Torvalds
     

31 Mar, 2019

18 commits

  • Pull KVM fixes from Paolo Bonzini:
    "A collection of x86 and ARM bugfixes, and some improvements to
    documentation.

    On top of this, a cleanup of kvm_para.h headers, which were exported
    by some architectures even though they not support KVM at all. This is
    responsible for all the Kbuild changes in the diffstat"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (28 commits)
    Documentation: kvm: clarify KVM_SET_USER_MEMORY_REGION
    KVM: doc: Document the life cycle of a VM and its resources
    KVM: selftests: complete IO before migrating guest state
    KVM: selftests: disable stack protector for all KVM tests
    KVM: selftests: explicitly disable PIE for tests
    KVM: selftests: assert on exit reason in CR4/cpuid sync test
    KVM: x86: update %rip after emulating IO
    x86/kvm/hyper-v: avoid spurious pending stimer on vCPU init
    kvm/x86: Move MSR_IA32_ARCH_CAPABILITIES to array emulated_msrs
    KVM: x86: Emulate MSR_IA32_ARCH_CAPABILITIES on AMD hosts
    kvm: don't redefine flags as something else
    kvm: mmu: Used range based flushing in slot_handle_level_range
    KVM: export and iif KVM is supported
    KVM: x86: remove check on nr_mmu_pages in kvm_arch_commit_memory_region()
    kvm: nVMX: Add a vmentry check for HOST_SYSENTER_ESP and HOST_SYSENTER_EIP fields
    KVM: SVM: Workaround errata#1096 (insn_len maybe zero on SMAP violation)
    KVM: Reject device ioctls from processes other than the VM's creator
    KVM: doc: Fix incorrect word ordering regarding supported use of APIs
    KVM: x86: fix handling of role.cr4_pae and rename it to 'gpte_size'
    KVM: nVMX: Do not inherit quadrant and invalid for the root shadow EPT
    ...

    Linus Torvalds
     
  • Pull x86 fixes from Thomas Gleixner:
    "A pile of x86 updates:

    - Prevent exceeding he valid physical address space in the /dev/mem
    limit checks.

    - Move all header content inside the header guard to prevent compile
    failures.

    - Fix the bogus __percpu annotation in this_cpu_has() which makes
    sparse very noisy.

    - Disable switch jump tables completely when retpolines are enabled.

    - Prevent leaking the trampoline address"

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/realmode: Make set_real_mode_mem() static inline
    x86/cpufeature: Fix __percpu annotation in this_cpu_has()
    x86/mm: Don't exceed the valid physical address space
    x86/retpolines: Disable switch jump tables when retpolines are enabled
    x86/realmode: Don't leak the trampoline kernel address
    x86/boot: Fix incorrect ifdeffery scope
    x86/resctrl: Remove unused variable

    Linus Torvalds
     
  • Pull perf tooling fixes from Thomas Gleixner:
    "Core libraries:
    - Fix max perf_event_attr.precise_ip detection.
    - Fix parser error for uncore event alias
    - Fixup ordering of kernel maps after obtaining the main kernel map
    address.

    Intel PT:
    - Fix TSC slip where A TSC packet can slip past MTC packets so that
    the timestamp appears to go backwards.
    - Fixes for exported-sql-viewer GUI conversion to python3.

    ARM coresight:
    - Fix the build by adding a missing case value for enumeration value
    introduced in newer library, that now is the required one.

    tool headers:
    - Syncronize kernel headers with the kernel, getting new io_uring and
    pidfd_send_signal syscalls so that 'perf trace' can handle them"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf pmu: Fix parser error for uncore event alias
    perf scripts python: exported-sql-viewer.py: Fix python3 support
    perf scripts python: exported-sql-viewer.py: Fix never-ending loop
    perf machine: Update kernel map address and re-order properly
    tools headers uapi: Sync powerpc's asm/kvm.h copy with the kernel sources
    tools headers: Update x86's syscall_64.tbl and uapi/asm-generic/unistd
    tools headers uapi: Update drm/i915_drm.h
    tools arch x86: Sync asm/cpufeatures.h with the kernel sources
    tools headers uapi: Sync linux/fcntl.h to get the F_SEAL_FUTURE_WRITE addition
    tools headers uapi: Sync asm-generic/mman-common.h and linux/mman.h
    perf evsel: Fix max perf_event_attr.precise_ip detection
    perf intel-pt: Fix TSC slip
    perf cs-etm: Add missing case value

    Linus Torvalds
     
  • Pull CPU hotplug fixes from Thomas Gleixner:
    "Two SMT/hotplug related fixes:

    - Prevent crash when HOTPLUG_CPU is disabled and the CPU bringup
    aborts. This is triggered with the 'nosmt' command line option, but
    can happen by any abort condition. As the real unplug code is not
    compiled in, prevent the fail by keeping the CPU in zombie state.

    - Enforce HOTPLUG_CPU for SMP on x86 to avoid the above situation
    completely. With 'nosmt' being a popular option it's required to
    unplug the half brought up sibling CPUs (due to the MCE wreckage)
    completely"

    * 'smp-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/smp: Enforce CONFIG_HOTPLUG_CPU when SMP=y
    cpu/hotplug: Prevent crash when CPU bringup fails on CONFIG_HOTPLUG_CPU=n

    Linus Torvalds
     
  • Pull locking fixlet from Thomas Gleixner:
    "Trivial update to the maintainers file"

    * 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    MAINTAINERS: Remove deleted file from futex file pattern

    Linus Torvalds
     
  • Pull core fixes from Thomas Gleixner:
    "A small set of core updates:

    - Make the watchdog respect the selected CPU mask again. That was
    broken by the rework of the watchdog thread management and caused
    inconsistent state and NMI watchdog being unstoppable.

    - Ensure that the objtool build can find the libelf location.

    - Remove dead kcore stub code"

    * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    watchdog: Respect watchdog cpumask on CPU hotplug
    objtool: Query pkg-config for libelf location
    proc/kcore: Remove unused kclist_add_remap()

    Linus Torvalds
     
  • Pull powerpc fixes from Michael Ellerman:
    "Three non-regression fixes.

    - Our optimised memcmp could read past the end of one of the buffers
    and potentially trigger a page fault leading to an oops.

    - Some of our code to read energy management data on PowerVM had an
    endian bug leading to bogus results.

    - When reporting a machine check exception we incorrectly reported
    TLB multihits as D-Cache multhits due to a missing entry in the
    array of causes.

    Thanks to: Chandan Rajendra, Gautham R. Shenoy, Mahesh Salgaonkar,
    Segher Boessenkool, Vaidyanathan Srinivasan"

    * tag 'powerpc-5.1-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
    powerpc/pseries/mce: Fix misleading print for TLB mutlihit
    powerpc/pseries/energy: Use OF accessor functions to read ibm,drc-indexes
    powerpc/64: Fix memcmp reading past the end of src/dest

    Linus Torvalds
     
  • Pull dmaengine fixes from Vinod Koul:

    - Revert "dmaengine: stm32-mdma: Add a check on read_u32_array" as that
    caused regression

    - Fix MAINTAINER file uniphier-mdmac.c file path

    * tag 'dmaengine-fix-5.1-rc3' of git://git.infradead.org/users/vkoul/slave-dma:
    MAINTAINERS: Fix uniphier-mdmac.c file path
    dmaengine: stm32-mdma: Revert "dmaengine: stm32-mdma: Add a check on read_u32_array"

    Linus Torvalds
     
  • …it/j.anaszewski/linux-leds

    Pull LED fixes from Jacek Anaszewski:

    - fix refcnt leak on interface rename

    - use memcpy in device_name_store() to avoid including garbage from a
    previous, longer value in the device_name

    - fix a potential NULL pointer dereference in case of_match_device()
    cannot find a match

    * tag 'led-fixes-for-5.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds:
    leds: trigger: netdev: use memcpy in device_name_store
    leds: pca9532: fix a potential NULL pointer dereference
    leds: trigger: netdev: fix refcnt leak on interface rename

    Linus Torvalds
     
  • Pull GPIO fixes from Linus Walleij:
    "As you can see [in the git history] I was away on leave and Bartosz
    kindly stepped in and collected a slew of fixes, I pulled them into my
    tree in two sets and merged some two more fixes (fixing my own caused
    bugs) on top.

    Summary:

    - Revert the extended use of gpio_set_config() and think about how we
    can do this properly.

    - Fix up the SPI CS GPIO handling so it now works properly on the SPI
    bus children, as intended.

    - Error paths and driver fixes"

    * tag 'gpio-v5.1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio:
    gpio: mockup: use simple_read_from_buffer() in debugfs read callback
    gpio: of: Fix of_gpiochip_add() error path
    gpio: of: Check for "spi-cs-high" in child instead of parent node
    gpio: of: Check propname before applying "cs-gpios" quirks
    gpio: mockup: fix debugfs read
    Revert "gpio: use new gpio_set_config() helper in more places"
    gpio: aspeed: fix a potential NULL pointer dereference
    gpio: amd-fch: Fix bogus SPDX identifier
    gpio: adnp: Fix testing wrong value in adnp_gpio_direction_input
    gpio: exar: add a check for the return value of ida_simple_get fails

    Linus Torvalds
     
  • If userspace doesn't end the input with a newline (which can easily
    happen if the write happens from a C program that does write(fd,
    iface, strlen(iface))), we may end up including garbage from a
    previous, longer value in the device_name. For example

    # cat device_name

    # printf 'eth12' > device_name
    # cat device_name
    eth12
    # printf 'eth3' > device_name
    # cat device_name
    eth32

    I highly doubt anybody is relying on this behaviour, so switch to
    simply copying the bytes (we've already checked that size is <
    IFNAMSIZ) and unconditionally zero-terminate it; of course, we also
    still have to strip a trailing newline.

    This is also preparation for future patches.

    Fixes: 06f502f57d0d ("leds: trigger: Introduce a NETDEV trigger")
    Signed-off-by: Rasmus Villemoes
    Acked-by: Pavel Machek
    Signed-off-by: Jacek Anaszewski

    Rasmus Villemoes
     
  • In case of_match_device cannot find a match, return -EINVAL to avoid
    NULL pointer dereference.

    Fixes: fa4191a609f2 ("leds: pca9532: Add device tree support")
    Signed-off-by: Kangjie Lu
    Signed-off-by: Jacek Anaszewski

    Kangjie Lu
     
  • Pull staging driver fixes from Greg KH:
    "Here are some small staging driver fixes for 5.1-rc3, and one driver
    removal.

    The biggest thing here is the removal of the mt7621-eth driver as a
    "real" network driver was merged in 5.1-rc1 for this hardware, so this
    old driver can now be removed.

    Other than that, there are just a number of small fixes, all resolving
    reported issues and some potential corner cases for error handling
    paths.

    All of these have been in linux-next with no reported issues"

    * tag 'staging-5.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
    staging: vt6655: Remove vif check from vnt_interrupt
    staging: erofs: keep corrupted fs from crashing kernel in erofs_readdir()
    staging: octeon-ethernet: fix incorrect PHY mode
    staging: vc04_services: Fix an error code in vchiq_probe()
    staging: erofs: fix error handling when failed to read compresssed data
    staging: vt6655: Fix interrupt race condition on device start up.
    staging: rtlwifi: Fix potential NULL pointer dereference of kzalloc
    staging: rtl8712: uninitialized memory in read_bbreg_hdl()
    staging: rtlwifi: rtl8822b: fix to avoid potential NULL pointer dereference
    staging: rtl8188eu: Fix potential NULL pointer dereference of kcalloc
    staging, mt7621-pci: fix build without pci support
    staging: speakup_soft: Fix alternate speech with other synths
    staging: axis-fifo: add CONFIG_OF dependency
    staging: olpc_dcon_xo_1: add missing 'const' qualifier
    staging: comedi: ni_mio_common: Fix divide-by-zero for DIO cmdtest
    staging: erofs: fix to handle error path of erofs_vmap()
    staging: mt7621-dts: update ethernet settings.
    staging: remove mt7621-eth

    Linus Torvalds
     
  • Pull tty/serial fixes from Greg KH:
    "Here are some small tty and serial driver fixes for 5.1-rc3.

    Nothing major here, just a number of potential problems fixes for
    error handling paths, as well as some other minor bugfixes for
    reported issues with 5.1-rc1.

    All of these have been in linux-next with no reported issues"

    * tag 'tty-5.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
    tty: fix NULL pointer issue when tty_port ops is not set
    Disable kgdboc failed by echo space to /sys/module/kgdboc/parameters/kgdboc
    dt-bindings: serial: Add compatible for Mediatek MT8183
    tty/serial: atmel: RS485 HD w/DMA: enable RX after TX is stopped
    tty/serial: atmel: Add is_half_duplex helper
    serial: sh-sci: Fix setting SCSCR_TIE while transferring data
    serial: ar933x_uart: Fix build failure with disabled console
    tty: serial: qcom_geni_serial: Initialize baud in qcom_geni_console_setup
    sc16is7xx: missing unregister/delete driver on error in sc16is7xx_init()
    tty: mxs-auart: fix a potential NULL pointer dereference
    tty: atmel_serial: fix a potential NULL pointer dereference
    serial: max310x: Fix to avoid potential NULL pointer dereference
    serial: mvebu-uart: Fix to avoid a potential NULL pointer dereference

    Linus Torvalds
     
  • Pull USB fixes from Greg KH:
    "Here are some small USB fixes for 5.1-rc3.

    Nothing major at all here, just a small collection of fixes for
    reported issues, and potential problems with error handling paths.
    Also a few new device ids, as normal.

    All of these have been in linux-next with no reported issues"

    * tag 'usb-5.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (25 commits)
    USB: serial: option: add Olicard 600
    USB: serial: cp210x: add new device id
    usb: u132-hcd: fix resource leak
    usb: cdc-acm: fix race during wakeup blocking TX traffic
    usb: mtu3: fix EXTCON dependency
    usb: usb251xb: fix to avoid potential NULL pointer dereference
    usb: core: Try generic PHY_MODE_USB_HOST if usb_phy_roothub_set_mode fails
    phy: sun4i-usb: Support set_mode to USB_HOST for non-OTG PHYs
    xhci: Don't let USB3 ports stuck in polling state prevent suspend
    usb: xhci: dbc: Don't free all memory with spinlock held
    xhci: Fix port resume done detection for SS ports with LPM enabled
    USB: serial: mos7720: fix mos_parport refcount imbalance on error path
    USB: gadget: f_hid: fix deadlock in f_hidg_write()
    usb: gadget: net2272: Fix net2272_dequeue()
    usb: gadget: net2280: Fix net2280_dequeue()
    usb: gadget: net2280: Fix overrun of OUT messages
    usb: dwc3: pci: add support for Comet Lake PCH ID
    usb: usb251xb: Remove unnecessary comparison of unsigned integer with >= 0
    usb: common: Consider only available nodes for dr_mode
    usb: typec: tcpm: Try PD-2.0 if sink does not respond to 3.0 source-caps
    ...

    Linus Torvalds
     
  • Pull ACPI fix from Rafael Wysocki:
    "This corrects a previous attempt to make Linux use its own set of ACPI
    debug flags different from the upstream ACPICA's default (Erik
    Schmauss)"

    * tag 'acpi-5.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    ACPI: use different default debug value than ACPICA

    Linus Torvalds
     
  • Pull power management fixes from Rafael Wysocki:
    "These fix CPU base frequency reporting in the intel_pstate driver and
    a use-after-free in the scpi-cpufreq driver.

    Specifics:

    - Fix the ACPI CPPC library to actually follow the specification when
    decoding the guaranteed performance register information and make
    the intel_pstate driver to fall back to the nominal frequency when
    reporting the base frequency if the guaranteed performance register
    information is not there (Srinivas Pandruvada).

    - Fix use-after-free in the exit callback of the scpi-cpufreq left
    after an update during the 5.0 development cycle (Vincent Stehlé)"

    * tag 'pm-5.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    cpufreq: scpi: Fix use after free
    cpufreq: intel_pstate: Also use CPPC nominal_perf for base_frequency
    ACPI / CPPC: Fix guaranteed performance handling

    Linus Torvalds
     
  • Pull security layer fixes from James Morris:
    "Yama and LSM config fixes"

    * 'fixes-v5.1-a' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security:
    LSM: Revive CONFIG_DEFAULT_SECURITY_* for "make oldconfig"
    Yama: mark local symbols as static

    Linus Torvalds
     

30 Mar, 2019

6 commits

  • Merge misc fixes from Andrew Morton:
    "22 fixes"

    * emailed patches from Andrew Morton : (22 commits)
    fs/proc/proc_sysctl.c: fix NULL pointer dereference in put_links
    fs: fs_parser: fix printk format warning
    checkpatch: add %pt as a valid vsprintf extension
    mm/migrate.c: add missing flush_dcache_page for non-mapped page migrate
    drivers/block/zram/zram_drv.c: fix idle/writeback string compare
    mm/page_isolation.c: fix a wrong flag in set_migratetype_isolate()
    mm/memory_hotplug.c: fix notification in offline error path
    ptrace: take into account saved_sigmask in PTRACE{GET,SET}SIGMASK
    fs/proc/kcore.c: make kcore_modules static
    include/linux/list.h: fix list_is_first() kernel-doc
    mm/debug.c: fix __dump_page when mapping->host is not set
    mm: mempolicy: make mbind() return -EIO when MPOL_MF_STRICT is specified
    include/linux/hugetlb.h: convert to use vm_fault_t
    iommu/io-pgtable-arm-v7s: request DMA32 memory, and improve debugging
    mm: add support for kmem caches in DMA32 zone
    ocfs2: fix inode bh swapping mixup in ocfs2_reflink_inodes_lock
    mm/hotplug: fix offline undo_isolate_page_range()
    fs/open.c: allow opening only regular files during execve()
    mailmap: add Changbin Du
    mm/debug.c: add a cast to u64 for atomic64_read()
    ...

    Linus Torvalds
     
  • Pull arm64 fix from Catalin Marinas:
    "Use memblock_alloc() instead of memblock_alloc_low() in
    request_standard_resources(), the latter being limited to the low 4G
    memory range on arm64"

    * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
    arm64: replace memblock_alloc_low with memblock_alloc

    Linus Torvalds
     
  • Pull IOMMU fixes from Joerg Roedel:

    - Fix a bug in the AMD IOMMU driver not handling exclusion ranges
    correctly. In fact the driver did not reserve these ranges for IOVA
    allocations, so that dma-handles could be allocated in an exclusion
    range, leading to data corruption. Exclusion ranges have not been
    used by any firmware up to now, so this issue remained undiscovered
    for quite some time.

    - Fix wrong warning messages that the IOMMU core code prints when it
    tries to allocate the default domain for an iommu group and the
    driver does not support any of the default domain types (like Intel
    VT-d).

    * tag 'iommu-fixes-v5.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
    iommu/amd: Reserve exclusion range in iova-domain
    iommu: Don't print warning when IOMMU driver only supports unmanaged domains

    Linus Torvalds
     
  • Pull driver core fix from Greg KH:
    "Here is a single driver core patch for 5.1-rc3.

    After 5.1-rc1, all of the users of BUS_ATTR() are finally removed, so
    we can now drop this macro from include/linux/device.h so that no more
    new users will be created.

    This patch has been in linux-next for a while, with no reported
    issues"

    * tag 'driver-core-5.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
    driver core: remove BUS_ATTR()

    Linus Torvalds
     
  • Pull char/misc driver fixes from Greg KH:
    "Here are some binder, habanalabs, and vboxguest driver fixes for
    5.1-rc3.

    The Binder fixes resolve some reported issues found by testing, first
    by the selinux developers, and then earlier today by syzbot.

    The habanalabs fixes are all minor, resolving a number of tiny things.

    The vboxguest patches are a bit larger. They resolve the fact that
    virtual box decided to change their api in their latest release in a
    way that broke the existing kernel code, despite saying that they were
    never going to do that. So this is a bit of a "new feature", but is
    good to get merged so that 5.1 will work with the latest release. The
    changes are not large and of course virtual box "swears" they will not
    break this again, but no one is holding their breath here.

    All of these have been in linux-next for a while with no reported
    issues"

    * tag 'char-misc-5.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
    virt: vbox: Implement passing requestor info to the host for VirtualBox 6.0.x
    binder: fix race between munmap() and direct reclaim
    binder: fix BUG_ON found by selinux-testsuite
    habanalabs: cast to expected type
    habanalabs: prevent host crash during suspend/resume
    habanalabs: perform accounting for active CS
    habanalabs: fix mapping with page size bigger than 4KB
    habanalabs: complete user context cleanup before hard reset
    habanalabs: fix bug when mapping very large memory area
    habanalabs: fix MMU number of pages calculation

    Linus Torvalds
     
  • Pull SCSI fixes from James Bottomley:
    "Thirteen fixes, seven of which are for IBM fibre channel and three
    additional for fairly serious bugs in drivers (qla2xxx, mpt3sas,
    aacraid).

    Of the three core fixes, the most significant is probably the missed
    run queue causing an indefinite hang. The others are fixing a
    potential use after free on device close and silencing an incorrect
    warning"

    * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
    scsi: ibmvfc: Clean up transport events
    scsi: ibmvfc: Byte swap status and error codes when logging
    scsi: ibmvfc: Add failed PRLI to cmd_status lookup array
    scsi: ibmvfc: Remove "failed" from logged errors
    scsi: zfcp: reduce flood of fcrscn1 trace records on multi-element RSCN
    scsi: zfcp: fix scsi_eh host reset with port_forced ERP for non-NPIV FCP devices
    scsi: zfcp: fix rport unblock if deleted SCSI devices on Scsi_Host
    scsi: sd: Quiesce warning if device does not report optimal I/O size
    scsi: sd: Fix a race between closing an sd device and sd I/O
    scsi: core: Run queue when state is set to running after being blocked
    scsi: qla4xxx: fix a potential NULL pointer dereference
    scsi: aacraid: Insure we don't access PCIe space during AER/EEH
    scsi: mpt3sas: Fix kernel panic during expander reset

    Linus Torvalds