Skip to content
This repository has been archived by the owner on Oct 31, 2024. It is now read-only.

Merge #2

Closed
wants to merge 719 commits into from
Closed

Merge #2

wants to merge 719 commits into from
This pull request is big! We’re only showing the most recent 250 commits.

Commits on Aug 11, 2017

  1. workqueue: implicit ordered attribute should be overridable

    commit 0a94efb upstream.
    
    5c0338c ("workqueue: restore WQ_UNBOUND/max_active==1 to be
    ordered") automatically enabled ordered attribute for unbound
    workqueues w/ max_active == 1.  Because ordered workqueues reject
    max_active and some attribute changes, this implicit ordered mode
    broke cases where the user creates an unbound workqueue w/ max_active
    == 1 and later explicitly changes the related attributes.
    
    This patch distinguishes explicit and implicit ordered setting and
    overrides from attribute changes if implict.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Fixes: 5c0338c ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered")
    Cc: Holger Hoffstätte <holger@applied-asynchrony.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    htejun authored and gregkh committed Aug 11, 2017
    Configuration menu
    Copy the full SHA
    a799f35 View commit details
    Browse the repository at this point in the history
  2. ipv4: fib: Fix NULL pointer deref during fib_sync_down_dev()

    [ Upstream commit 71ed7ee ]
    
    Michał reported a NULL pointer deref during fib_sync_down_dev() when
    unregistering a netdevice. The problem is that we don't check for
    'in_dev' being NULL, which can happen in very specific cases.
    
    Usually routes are flushed upon NETDEV_DOWN sent in either the netdev or
    the inetaddr notification chains. However, if an interface isn't
    configured with any IP address, then it's possible for host routes to be
    flushed following NETDEV_UNREGISTER, after NULLing dev->ip_ptr in
    inetdev_destroy().
    
    To reproduce:
    $ ip link add type dummy
    $ ip route add local 1.1.1.0/24 dev dummy0
    $ ip link del dev dummy0
    
    Fix this by checking for the presence of 'in_dev' before referencing it.
    
    Fixes: 982acb9 ("ipv4: fib: Notify about nexthop status changes")
    Signed-off-by: Ido Schimmel <idosch@mellanox.com>
    Reported-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
    Tested-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    idosch authored and gregkh committed Aug 11, 2017
    Configuration menu
    Copy the full SHA
    a0ed1f0 View commit details
    Browse the repository at this point in the history
  3. virtio_net: fix truesize for mergeable buffers

    [ Upstream commit 1daa879 ]
    
    Seth Forshee noticed a performance degradation with some workloads.
    This turns out to be due to packet drops.  Euan Kemp noticed that this
    is because we drop all packets where length exceeds the truesize, but
    for some packets we add in extra memory without updating the truesize.
    This in turn was kept around unchanged from ab7db91 ("virtio-net:
    auto-tune mergeable rx buffer size for improved performance").  That
    commit had an internal reason not to account for the extra space: not
    enough bits to do it.  No longer true so let's account for the allocated
    length exactly.
    
    Many thanks to Seth Forshee for the report and bisecting and Euan Kemp
    for debugging the issue.
    
    Fixes: 680557c ("virtio_net: rework mergeable buffer handling")
    Reported-by: Euan Kemp <euan.kemp@coreos.com>
    Tested-by: Euan Kemp <euan.kemp@coreos.com>
    Reported-by: Seth Forshee <seth.forshee@canonical.com>
    Tested-by: Seth Forshee <seth.forshee@canonical.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    mstsirkin authored and gregkh committed Aug 11, 2017
    Configuration menu
    Copy the full SHA
    7e9fdf3 View commit details
    Browse the repository at this point in the history
  4. sparc64: Measure receiver forward progress to avoid send mondo timeout

    [ Upstream commit 9d53cae ]
    
    A large sun4v SPARC system may have moments of intensive xcall activities,
    usually caused by unmapping many pages on many CPUs concurrently. This can
    flood receivers with CPU mondo interrupts for an extended period, causing
    some unlucky senders to hit send-mondo timeout. This problem gets worse
    as cpu count increases because sometimes mappings must be invalidated on
    all CPUs, and sometimes all CPUs may gang up on a single CPU.
    
    But a busy system is not a broken system. In the above scenario, as long
    as the receiver is making forward progress processing mondo interrupts,
    the sender should continue to retry.
    
    This patch implements the receiver's forward progress meter by introducing
    a per cpu counter 'cpu_mondo_counter[cpu]' where 'cpu' is in the range
    of 0..NR_CPUS. The receiver increments its counter as soon as it receives
    a mondo and the sender tracks the receiver's counter. If the receiver has
    stopped making forward progress when the retry limit is reached, the sender
    declares send-mondo-timeout and panic; otherwise, the receiver is allowed
    to keep making forward progress.
    
    In addition, it's been observed that PCIe hotplug events generate Correctable
    Errors that are handled by hypervisor and then OS. Hypervisor 'borrows'
    a guest cpu strand briefly to provide the service. If the cpu strand is
    simultaneously the only cpu targeted by a mondo, it may not be available
    for the mondo in 20msec, causing SUN4V mondo timeout. It appears that 1 second
    is the agreed wait time between hypervisor and guest OS, this patch makes
    the adjustment.
    
    Orabug: 25476541
    Orabug: 26417466
    
    Signed-off-by: Jane Chu <jane.chu@oracle.com>
    Reviewed-by: Steve Sistare <steven.sistare@oracle.com>
    Reviewed-by: Anthony Yznaga <anthony.yznaga@oracle.com>
    Reviewed-by: Rob Gardner <rob.gardner@oracle.com>
    Reviewed-by: Thomas Tai <thomas.tai@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jchu314atgithub authored and gregkh committed Aug 11, 2017
    Configuration menu
    Copy the full SHA
    1dc14c2 View commit details
    Browse the repository at this point in the history
  5. sparc64: Prevent perf from running during super critical sections

    [ Upstream commit fc290a1 ]
    
    This fixes another cause of random segfaults and bus errors that may
    occur while running perf with the callgraph option.
    
    Critical sections beginning with spin_lock_irqsave() raise the interrupt
    level to PIL_NORMAL_MAX (14) and intentionally do not block performance
    counter interrupts, which arrive at PIL_NMI (15).
    
    But some sections of code are "super critical" with respect to perf
    because the perf_callchain_user() path accesses user space and may cause
    TLB activity as well as faults as it unwinds the user stack.
    
    One particular critical section occurs in switch_mm:
    
            spin_lock_irqsave(&mm->context.lock, flags);
            ...
            load_secondary_context(mm);
            tsb_context_switch(mm);
            ...
            spin_unlock_irqrestore(&mm->context.lock, flags);
    
    If a perf interrupt arrives in between load_secondary_context() and
    tsb_context_switch(), then perf_callchain_user() could execute with
    the context ID of one process, but with an active TSB for a different
    process. When the user stack is accessed, it is very likely to
    incur a TLB miss, since the h/w context ID has been changed. The TLB
    will then be reloaded with a translation from the TSB for one process,
    but using a context ID for another process. This exposes memory from
    one process to another, and since it is a mapping for stack memory,
    this usually causes the new process to crash quickly.
    
    This super critical section needs more protection than is provided
    by spin_lock_irqsave() since perf interrupts must not be allowed in.
    
    Since __tsb_context_switch already goes through the trouble of
    disabling interrupts completely, we fix this by moving the secondary
    context load down into this better protected region.
    
    Orabug: 25577560
    
    Signed-off-by: Dave Aldridge <david.j.aldridge@oracle.com>
    Signed-off-by: Rob Gardner <rob.gardner@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Rob Gardner authored and gregkh committed Aug 11, 2017
    Configuration menu
    Copy the full SHA
    18ba66c View commit details
    Browse the repository at this point in the history
  6. sparc64: Register hugepages during arch init

    [ Upstream commit 8399e4b ]
    
    Add hstate for each supported hugepage size using
    arch initcall. This change fixes some hugepage
    parameter parsing inconsistencies:
    
    case 1: no hugepage parameters
    
     Without hugepage parameters, only a hugepages-8192kB entry is visible
     in sysfs.  It's different from x86_64 where both 2M and 1G hugepage
     sizes are available.
    
    case 2: default_hugepagesz=[64K|256M|2G]
    
     When specifying only a default_hugepagesz parameter, the default
     hugepage size isn't really changed and it stays at 8M. This is again
     different from x86_64.
    
    Orabug: 25869946
    
    Reviewed-by: Bob Picco <bob.picco@oracle.com>
    Signed-off-by: Nitin Gupta <nitin.m.gupta@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Nitin Gupta authored and gregkh committed Aug 11, 2017
    Configuration menu
    Copy the full SHA
    1717ad2 View commit details
    Browse the repository at this point in the history
  7. sparc64: Fix exception handling in UltraSPARC-III memcpy.

    [ Upstream commit 0ede1c4 ]
    
    Mikael Pettersson reported that some test programs in the strace-4.18
    testsuite cause an OOPS.
    
    After some debugging it turns out that garbage values are returned
    when an exception occurs, causing the fixup memset() to be run with
    bogus arguments.
    
    The problem is that two of the exception handler stubs write the
    successfully copied length into the wrong register.
    
    Fixes: ee841d0 ("sparc64: Convert U3copy_{from,to}_user to accurate exception reporting.")
    Reported-by: Mikael Pettersson <mikpelinux@gmail.com>
    Tested-by: Mikael Pettersson <mikpelinux@gmail.com>
    Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    davem330 authored and gregkh committed Aug 11, 2017
    Configuration menu
    Copy the full SHA
    c1fc78e View commit details
    Browse the repository at this point in the history
  8. drm/vmwgfx: Fix cursor hotspot issue with Wayland on Fedora

    commit 14979ad upstream.
    
    Parts of commit <8fbf9d92a7bc> (“drm/vmwgfx: Implement the
    cursor_set2 callback v2”) were not moved over when we started
    atomic mode set development because at that time the DRM did
    not support cursor hotspots in the fb struct.
    
    This patch fixes what was not moved over.
    
    Signed-off-by: Sinclair Yeh <syeh@vmware.com>
    Reviewed-by: Brian Paul <brianp@vmware.com>
    Tested-by: Brian Paul <brianp@vmware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Sinclair Yeh authored and gregkh committed Aug 11, 2017
    Configuration menu
    Copy the full SHA
    e767207 View commit details
    Browse the repository at this point in the history
  9. Linux 4.12.6

    gregkh committed Aug 11, 2017
    Configuration menu
    Copy the full SHA
    311d0c8 View commit details
    Browse the repository at this point in the history
  10. Merge tag 'v4.12.6' into 4.12

    This is the 4.12.6 stable release
    xanmod committed Aug 11, 2017
    Configuration menu
    Copy the full SHA
    729f35f View commit details
    Browse the repository at this point in the history
  11. 4.12.6-xanmod7

    xanmod committed Aug 11, 2017
    Configuration menu
    Copy the full SHA
    1bce412 View commit details
    Browse the repository at this point in the history

Commits on Aug 13, 2017

  1. ppp: Fix false xmit recursion detect with two ppp devices

    [ Upstream commit e5dadc6 ]
    
    The global percpu variable ppp_xmit_recursion is used to detect the ppp
    xmit recursion to avoid the deadlock, which is caused by one CPU tries to
    lock the xmit lock twice. But it would report false recursion when one CPU
    wants to send the skb from two different PPP devices, like one L2TP on the
    PPPoE. It is a normal case actually.
    
    Now use one percpu member of struct ppp instead of the gloable variable to
    detect the xmit recursion of one ppp device.
    
    Fixes: 55454a5 ("ppp: avoid dealock on recursive xmit")
    Signed-off-by: Gao Feng <gfree.wind@vip.163.com>
    Signed-off-by: Liu Jianying <jianying.liu@ikuai8.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    gfreewind authored and gregkh committed Aug 13, 2017
    Configuration menu
    Copy the full SHA
    67410cd View commit details
    Browse the repository at this point in the history
  2. ppp: fix xmit recursion detection on ppp channels

    [ Upstream commit 0a0e1a8 ]
    
    Commit e5dadc6 ("ppp: Fix false xmit recursion detect with two ppp
    devices") dropped the xmit_recursion counter incrementation in
    ppp_channel_push() and relied on ppp_xmit_process() for this task.
    But __ppp_channel_push() can also send packets directly (using the
    .start_xmit() channel callback), in which case the xmit_recursion
    counter isn't incremented anymore. If such packets get routed back to
    the parent ppp unit, ppp_xmit_process() won't notice the recursion and
    will call ppp_channel_push() on the same channel, effectively creating
    the deadlock situation that the xmit_recursion mechanism was supposed
    to prevent.
    
    This patch re-introduces the xmit_recursion counter incrementation in
    ppp_channel_push(). Since the xmit_recursion variable is now part of
    the parent ppp unit, incrementation is skipped if the channel doesn't
    have any. This is fine because only packets routed through the parent
    unit may enter the channel recursively.
    
    Finally, we have to ensure that pch->ppp is not going to be modified
    while executing ppp_channel_push(). Instead of taking this lock only
    while calling ppp_xmit_process(), we now have to hold it for the full
    ppp_channel_push() execution. This respects the ppp locks ordering
    which requires locking ->upl before ->downl.
    
    Fixes: e5dadc6 ("ppp: Fix false xmit recursion detect with two ppp devices")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Guillaume Nault authored and gregkh committed Aug 13, 2017
    Configuration menu
    Copy the full SHA
    5028e6c View commit details
    Browse the repository at this point in the history
  3. tcp: avoid setting cwnd to invalid ssthresh after cwnd reduction states

    [ Upstream commit ed25497 ]
    
    If the sender switches the congestion control during ECN-triggered
    cwnd-reduction state (CA_CWR), upon exiting recovery cwnd is set to
    the ssthresh value calculated by the previous congestion control. If
    the previous congestion control is BBR that always keep ssthresh
    to TCP_INIFINITE_SSTHRESH, cwnd ends up being infinite. The safe
    step is to avoid assigning invalid ssthresh value when recovery ends.
    
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    yuchungcheng authored and gregkh committed Aug 13, 2017
    Configuration menu
    Copy the full SHA
    4fe3624 View commit details
    Browse the repository at this point in the history
  4. net: fix keepalive code vs TCP_FASTOPEN_CONNECT

    [ Upstream commit 2dda640 ]
    
    syzkaller was able to trigger a divide by 0 in TCP stack [1]
    
    Issue here is that keepalive timer needs to be updated to not attempt
    to send a probe if the connection setup was deferred using
    TCP_FASTOPEN_CONNECT socket option added in linux-4.11
    
    [1]
     divide error: 0000 [#1] SMP
     CPU: 18 PID: 0 Comm: swapper/18 Not tainted
     task: ffff986f62f4b040 ti: ffff986f62fa2000 task.ti: ffff986f62fa2000
     RIP: 0010:[<ffffffff8409cc0d>]  [<ffffffff8409cc0d>] __tcp_select_window+0x8d/0x160
     Call Trace:
      <IRQ>
      [<ffffffff8409d951>] tcp_transmit_skb+0x11/0x20
      [<ffffffff8409da21>] tcp_xmit_probe_skb+0xc1/0xe0
      [<ffffffff840a0ee8>] tcp_write_wakeup+0x68/0x160
      [<ffffffff840a151b>] tcp_keepalive_timer+0x17b/0x230
      [<ffffffff83b3f799>] call_timer_fn+0x39/0xf0
      [<ffffffff83b40797>] run_timer_softirq+0x1d7/0x280
      [<ffffffff83a04ddb>] __do_softirq+0xcb/0x257
      [<ffffffff83ae03ac>] irq_exit+0x9c/0xb0
      [<ffffffff83a04c1a>] smp_apic_timer_interrupt+0x6a/0x80
      [<ffffffff83a03eaf>] apic_timer_interrupt+0x7f/0x90
      <EOI>
      [<ffffffff83fed2ea>] ? cpuidle_enter_state+0x13a/0x3b0
      [<ffffffff83fed2cd>] ? cpuidle_enter_state+0x11d/0x3b0
    
    Tested:
    
    Following packetdrill no longer crashes the kernel
    
    `echo 0 >/proc/sys/net/ipv4/tcp_timestamps`
    
    // Cache warmup: send a Fast Open cookie request
        0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
       +0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
       +0 setsockopt(3, SOL_TCP, TCP_FASTOPEN_CONNECT, [1], 4) = 0
       +0 connect(3, ..., ...) = -1 EINPROGRESS (Operation is now in progress)
       +0 > S 0:0(0) <mss 1460,nop,nop,sackOK,nop,wscale 8,FO,nop,nop>
     +.01 < S. 123:123(0) ack 1 win 14600 <mss 1460,nop,nop,sackOK,nop,wscale 6,FO abcd1234,nop,nop>
       +0 > . 1:1(0) ack 1
       +0 close(3) = 0
       +0 > F. 1:1(0) ack 1
       +0 < F. 1:1(0) ack 2 win 92
       +0 > .  2:2(0) ack 2
    
       +0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 4
       +0 fcntl(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
       +0 setsockopt(4, SOL_TCP, TCP_FASTOPEN_CONNECT, [1], 4) = 0
       +0 setsockopt(4, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
     +.01 connect(4, ..., ...) = 0
       +0 setsockopt(4, SOL_TCP, TCP_KEEPIDLE, [5], 4) = 0
       +10 close(4) = 0
    
    `echo 1 >/proc/sys/net/ipv4/tcp_timestamps`
    
    Fixes: 19f6d3f ("net/tcp-fastopen: Add new API support")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: Wei Wang <weiwan@google.com>
    Cc: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Eric Dumazet authored and gregkh committed Aug 13, 2017
    Configuration menu
    Copy the full SHA
    963f8fb View commit details
    Browse the repository at this point in the history
  5. ipv6: set rt6i_protocol properly in the route when it is installed

    [ Upstream commit b91d532 ]
    
    After commit c2ed188 ("net: ipv6: check route protocol when
    deleting routes"), ipv6 route checks rt protocol when trying to
    remove a rt entry.
    
    It introduced a side effect causing 'ip -6 route flush cache' not
    to work well. When flushing caches with iproute, all route caches
    get dumped from kernel then removed one by one by sending DELROUTE
    requests to kernel for each cache.
    
    The thing is iproute sends the request with the cache whose proto
    is set with RTPROT_REDIRECT by rt6_fill_node() when kernel dumps
    it. But in kernel the rt_cache protocol is still 0, which causes
    the cache not to be matched and removed.
    
    So the real reason is rt6i_protocol in the route is not set when
    it is allocated. As David Ahern's suggestion, this patch is to
    set rt6i_protocol properly in the route when it is installed and
    remove the codes setting rtm_protocol according to rt6i_flags in
    rt6_fill_node.
    
    This is also an improvement to keep rt6i_protocol consistent with
    rtm_protocol.
    
    Fixes: c2ed188 ("net: ipv6: check route protocol when deleting routes")
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Suggested-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    lxin authored and gregkh committed Aug 13, 2017
    Configuration menu
    Copy the full SHA
    f725c58 View commit details
    Browse the repository at this point in the history
  6. bpf, s390: fix jit branch offset related to ldimm64

    [ Upstream commit b0a0c25 ]
    
    While testing some other work that required JIT modifications, I
    run into test_bpf causing a hang when JIT enabled on s390. The
    problematic test case was the one from ddc665a (bpf, arm64:
    fix jit branch offset related to ldimm64), and turns out that we
    do have a similar issue on s390 as well. In bpf_jit_prog() we
    update next instruction address after returning from bpf_jit_insn()
    with an insn_count. bpf_jit_insn() returns either -1 in case of
    error (e.g. unsupported insn), 1 or 2. The latter is only the
    case for ldimm64 due to spanning 2 insns, however, next address
    is only set to i + 1 not taking actual insn_count into account,
    thus fix is to use insn_count instead of 1. bpf_jit_enable in
    mode 2 provides also disasm on s390:
    
    Before fix:
    
      000003ff800349b6: a7f40003   brc     15,3ff800349bc                 ; target
      000003ff800349ba: 0000               unknown
      000003ff800349bc: e3b0f0700024       stg     %r11,112(%r15)
      000003ff800349c2: e3e0f0880024       stg     %r14,136(%r15)
      000003ff800349c8: 0db0               basr    %r11,%r0
      000003ff800349ca: c0ef00000000       llilf   %r14,0
      000003ff800349d0: e320b0360004       lg      %r2,54(%r11)
      000003ff800349d6: e330b03e0004       lg      %r3,62(%r11)
      000003ff800349dc: ec23ffeda065       clgrj   %r2,%r3,10,3ff800349b6 ; jmp
      000003ff800349e2: e3e0b0460004       lg      %r14,70(%r11)
      000003ff800349e8: e3e0b04e0004       lg      %r14,78(%r11)
      000003ff800349ee: b904002e   lgr     %r2,%r14
      000003ff800349f2: e3b0f0700004       lg      %r11,112(%r15)
      000003ff800349f8: e3e0f0880004       lg      %r14,136(%r15)
      000003ff800349fe: 07fe               bcr     15,%r14
    
    After fix:
    
      000003ff80ef3db4: a7f40003   brc     15,3ff80ef3dba
      000003ff80ef3db8: 0000               unknown
      000003ff80ef3dba: e3b0f0700024       stg     %r11,112(%r15)
      000003ff80ef3dc0: e3e0f0880024       stg     %r14,136(%r15)
      000003ff80ef3dc6: 0db0               basr    %r11,%r0
      000003ff80ef3dc8: c0ef00000000       llilf   %r14,0
      000003ff80ef3dce: e320b0360004       lg      %r2,54(%r11)
      000003ff80ef3dd4: e330b03e0004       lg      %r3,62(%r11)
      000003ff80ef3dda: ec230006a065       clgrj   %r2,%r3,10,3ff80ef3de6 ; jmp
      000003ff80ef3de0: e3e0b0460004       lg      %r14,70(%r11)
      000003ff80ef3de6: e3e0b04e0004       lg      %r14,78(%r11)          ; target
      000003ff80ef3dec: b904002e   lgr     %r2,%r14
      000003ff80ef3df0: e3b0f0700004       lg      %r11,112(%r15)
      000003ff80ef3df6: e3e0f0880004       lg      %r14,136(%r15)
      000003ff80ef3dfc: 07fe               bcr     15,%r14
    
    test_bpf.ko suite runs fine after the fix.
    
    Fixes: 0546231 ("s390/bpf: Add s390x eBPF JIT compiler backend")
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Tested-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    borkmann authored and gregkh committed Aug 13, 2017
    Configuration menu
    Copy the full SHA
    c531692 View commit details
    Browse the repository at this point in the history
  7. net/mlx4_en: don't set CHECKSUM_COMPLETE on SCTP packets

    [ Upstream commit e718fe4 ]
    
    if the NIC fails to validate the checksum on TCP/UDP, and validation of IP
    checksum is successful, the driver subtracts the pseudo-header checksum
    from the value obtained by the hardware and sets CHECKSUM_COMPLETE. Don't
    do that if protocol is IPPROTO_SCTP, otherwise CRC32c validation fails.
    
    V2: don't test MLX4_CQE_STATUS_IPV6 if MLX4_CQE_STATUS_IPV4 is set
    
    Reported-by: Shuang Li <shuali@redhat.com>
    Fixes: f8c6455 ("net/mlx4_en: Extend checksum offloading by CHECKSUM COMPLETE")
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Acked-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    dcaratti authored and gregkh committed Aug 13, 2017
    Configuration menu
    Copy the full SHA
    7be680f View commit details
    Browse the repository at this point in the history
  8. net: sched: set xt_tgchk_param par.net properly in ipt_init_target

    [ Upstream commit ec0acb0 ]
    
    Now xt_tgchk_param par in ipt_init_target is a local varibale,
    par.net is not initialized there. Later when xt_check_target
    calls target's checkentry in which it may access par.net, it
    would cause kernel panic.
    
    Jaroslav found this panic when running:
    
      # ip link add TestIface type dummy
      # tc qd add dev TestIface ingress handle ffff:
      # tc filter add dev TestIface parent ffff: u32 match u32 0 0 \
        action xt -j CONNMARK --set-mark 4
    
    This patch is to pass net param into ipt_init_target and set
    par.net with it properly in there.
    
    v1->v2:
      As Wang Cong pointed, I missed ipt_net_id != xt_net_id, so fix
      it by also passing net_id to __tcf_ipt_init.
    v2->v3:
      Missed the fixes tag, so add it.
    
    Fixes: ecb2421 ("netfilter: add and use nf_ct_netns_get/put")
    Reported-by: Jaroslav Aster <jaster@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    lxin authored and gregkh committed Aug 13, 2017
    Configuration menu
    Copy the full SHA
    882cce2 View commit details
    Browse the repository at this point in the history
  9. net: sched: set xt_tgchk_param par.nft_compat as 0 in ipt_init_target

    [ Upstream commit 96d9703 ]
    
    Commit 55917a2 ("netfilter: x_tables: add context to know if
    extension runs from nft_compat") introduced a member nft_compat to
    xt_tgchk_param structure.
    
    But it didn't set it's value for ipt_init_target. With unexpected
    value in par.nft_compat, it may return unexpected result in some
    target's checkentry.
    
    This patch is to set all it's fields as 0 and only initialize the
    non-zero fields in ipt_init_target.
    
    v1->v2:
      As Wang Cong's suggestion, fix it by setting all it's fields as
      0 and only initializing the non-zero fields.
    
    Fixes: 55917a2 ("netfilter: x_tables: add context to know if extension runs from nft_compat")
    Suggested-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    lxin authored and gregkh committed Aug 13, 2017
    Configuration menu
    Copy the full SHA
    5353157 View commit details
    Browse the repository at this point in the history
  10. tcp: fastopen: tcp_connect() must refresh the route

    [ Upstream commit 8ba6092 ]
    
    With new TCP_FASTOPEN_CONNECT socket option, there is a possibility
    to call tcp_connect() while socket sk_dst_cache is either NULL
    or invalid.
    
     +0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 4
     +0 fcntl(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
     +0 setsockopt(4, SOL_TCP, TCP_FASTOPEN_CONNECT, [1], 4) = 0
     +0 connect(4, ..., ...) = 0
    
    << sk->sk_dst_cache becomes obsolete, or even set to NULL >>
    
     +1 sendto(4, ..., 1000, MSG_FASTOPEN, ..., ...) = 1000
    
    We need to refresh the route otherwise bad things can happen,
    especially when syzkaller is running on the host :/
    
    Fixes: 19f6d3f ("net/tcp-fastopen: Add new API support")
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Wei Wang <weiwan@google.com>
    Cc: Yuchung Cheng <ycheng@google.com>
    Acked-by: Wei Wang <weiwan@google.com>
    Acked-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Eric Dumazet authored and gregkh committed Aug 13, 2017
    Configuration menu
    Copy the full SHA
    70165c2 View commit details
    Browse the repository at this point in the history
  11. qmi_wwan: fix NULL deref on disconnect

    [ Upstream commit bbae08e ]
    
    qmi_wwan_disconnect is called twice when disconnecting devices with
    separate control and data interfaces.  The first invocation will set
    the interface data to NULL for both interfaces to flag that the
    disconnect has been handled.  But the matching NULL check was left
    out when qmi_wwan_disconnect was added, resulting in this oops:
    
      usb 2-1.4: USB disconnect, device number 4
      qmi_wwan 2-1.4:1.6 wwp0s29u1u4i6: unregister 'qmi_wwan' usb-0000:00:1d.0-1.4, WWAN/QMI device
      BUG: unable to handle kernel NULL pointer dereference at 00000000000000e0
      IP: qmi_wwan_disconnect+0x25/0xc0 [qmi_wwan]
      PGD 0
      P4D 0
      Oops: 0000 [#1] SMP
      Modules linked in: <stripped irrelevant module list>
      CPU: 2 PID: 33 Comm: kworker/2:1 Tainted: G            E   4.12.3-nr44-normandy-r1500619820+ #1
      Hardware name: LENOVO 4291LR7/4291LR7, BIOS CBET4000 4.6-810-g50522254fb 07/21/2017
      Workqueue: usb_hub_wq hub_event [usbcore]
      task: ffff8c882b716040 task.stack: ffffb8e800d84000
      RIP: 0010:qmi_wwan_disconnect+0x25/0xc0 [qmi_wwan]
      RSP: 0018:ffffb8e800d87b38 EFLAGS: 00010246
      RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
      RDX: 0000000000000001 RSI: ffff8c8824f3f1d0 RDI: ffff8c8824ef6400
      RBP: ffff8c8824ef6400 R08: 0000000000000000 R09: 0000000000000000
      R10: ffffb8e800d87780 R11: 0000000000000011 R12: ffffffffc07ea0e8
      R13: ffff8c8824e2e000 R14: ffff8c8824e2e098 R15: 0000000000000000
      FS:  0000000000000000(0000) GS:ffff8c8835300000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00000000000000e0 CR3: 0000000229ca5000 CR4: 00000000000406e0
      Call Trace:
       ? usb_unbind_interface+0x71/0x270 [usbcore]
       ? device_release_driver_internal+0x154/0x210
       ? qmi_wwan_unbind+0x6d/0xc0 [qmi_wwan]
       ? usbnet_disconnect+0x6c/0xf0 [usbnet]
       ? qmi_wwan_disconnect+0x87/0xc0 [qmi_wwan]
       ? usb_unbind_interface+0x71/0x270 [usbcore]
       ? device_release_driver_internal+0x154/0x210
    
    Reported-and-tested-by: Nathaniel Roach <nroach44@gmail.com>
    Fixes: c6adf77 ("net: usb: qmi_wwan: add qmap mux protocol support")
    Cc: Daniele Palmas <dnlplm@gmail.com>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    bmork authored and gregkh committed Aug 13, 2017
    Configuration menu
    Copy the full SHA
    4c34578 View commit details
    Browse the repository at this point in the history
  12. net: avoid skb_warn_bad_offload false positives on UFO

    [ Upstream commit 8d63bee ]
    
    skb_warn_bad_offload triggers a warning when an skb enters the GSO
    stack at __skb_gso_segment that does not have CHECKSUM_PARTIAL
    checksum offload set.
    
    Commit b2504a5 ("net: reduce skb_warn_bad_offload() noise")
    observed that SKB_GSO_DODGY producers can trigger the check and
    that passing those packets through the GSO handlers will fix it
    up. But, the software UFO handler will set ip_summed to
    CHECKSUM_NONE.
    
    When __skb_gso_segment is called from the receive path, this
    triggers the warning again.
    
    Make UFO set CHECKSUM_UNNECESSARY instead of CHECKSUM_NONE. On
    Tx these two are equivalent. On Rx, this better matches the
    skb state (checksum computed), as CHECKSUM_NONE here means no
    checksum computed.
    
    See also this thread for context:
    http://patchwork.ozlabs.org/patch/799015/
    
    Fixes: b2504a5 ("net: reduce skb_warn_bad_offload() noise")
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    wdebruij authored and gregkh committed Aug 13, 2017
    Configuration menu
    Copy the full SHA
    8ad4bc9 View commit details
    Browse the repository at this point in the history
  13. igmp: Fix regression caused by igmp sysctl namespace code.

    [ Upstream commit 1714020 ]
    
    Commit dcd8799 ("igmp: net: Move igmp namespace init to correct file")
    moved the igmp sysctls initialization from tcp_sk_init to igmp_net_init. This
    function is only called as part of per-namespace initialization, only if
    CONFIG_IP_MULTICAST is defined, otherwise igmp_mc_init() call in ip_init is
    compiled out, casuing the igmp pernet ops to not be registerd and those sysctl
    being left initialized with 0. However, there are certain functions, such as
    ip_mc_join_group which are always compiled and make use of some of those
    sysctls. Let's do a partial revert of the aforementioned commit and move the
    sysctl initialization into inet_init_net, that way they will always have
    sane values.
    
    Fixes: dcd8799 ("igmp: net: Move igmp namespace init to correct file")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=196595
    Reported-by: Gerardo Exequiel Pozzi <vmlinuz386@gmail.com>
    Signed-off-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    lorddoskias authored and gregkh committed Aug 13, 2017
    Configuration menu
    Copy the full SHA
    2b5e5a8 View commit details
    Browse the repository at this point in the history
  14. udp: consistently apply ufo or fragmentation

    [ Upstream commit 85f1bd9 ]
    
    When iteratively building a UDP datagram with MSG_MORE and that
    datagram exceeds MTU, consistently choose UFO or fragmentation.
    
    Once skb_is_gso, always apply ufo. Conversely, once a datagram is
    split across multiple skbs, do not consider ufo.
    
    Sendpage already maintains the first invariant, only add the second.
    IPv6 does not have a sendpage implementation to modify.
    
    A gso skb must have a partial checksum, do not follow sk_no_check_tx
    in udp_send_skb.
    
    Found by syzkaller.
    
    Fixes: e89e9cf ("[IPv4/IPv6]: UFO Scatter-gather approach")
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    wdebruij authored and gregkh committed Aug 13, 2017
    Configuration menu
    Copy the full SHA
    2a8c396 View commit details
    Browse the repository at this point in the history
  15. packet: fix tp_reserve race in packet_set_ring

    [ Upstream commit c27927e ]
    
    Updates to tp_reserve can race with reads of the field in
    packet_set_ring. Avoid this by holding the socket lock during
    updates in setsockopt PACKET_RESERVE.
    
    This bug was discovered by syzkaller.
    
    Fixes: 8913336 ("packet: add PACKET_RESERVE sockopt")
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    wdebruij authored and gregkh committed Aug 13, 2017
    Configuration menu
    Copy the full SHA
    91b2b39 View commit details
    Browse the repository at this point in the history
  16. scsi: sg: only check for dxfer_len greater than 256M

    commit f930c70 upstream.
    
    Don't make any assumptions on the sg_io_hdr_t::dxfer_direction or the
    sg_io_hdr_t::dxferp in order to determine if it is a valid request. The
    only way we can check for bad requests is by checking if the length
    exceeds 256M.
    
    Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de>
    Fixes: 28676d8 (scsi: sg: check for valid direction before starting the
    request)
    Reported-by: Jason L Tibbitts III <tibbs@math.uh.edu>
    Tested-by: Jason L Tibbitts III <tibbs@math.uh.edu>
    Suggested-by: Doug Gilbert <dgilbert@interlog.com>
    Cc: Doug Gilbert <dgilbert@interlog.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Johannes Thumshirn authored and gregkh committed Aug 13, 2017
    Configuration menu
    Copy the full SHA
    c4b3691 View commit details
    Browse the repository at this point in the history
  17. btrfs: Remove false alert when fiemap range is smaller than on-disk e…

    …xtent
    
    commit 848c23b upstream.
    
    Commit 4751832 ("btrfs: fiemap: Cache and merge fiemap extent before
    submit it to user") introduced a warning to catch unemitted cached
    fiemap extent.
    
    However such warning doesn't take the following case into consideration:
    
    0			4K			8K
    |<---- fiemap range --->|
    |<----------- On-disk extent ------------------>|
    
    In this case, the whole 0~8K is cached, and since it's larger than
    fiemap range, it break the fiemap extent emit loop.
    This leaves the fiemap extent cached but not emitted, and caught by the
    final fiemap extent sanity check, causing kernel warning.
    
    This patch removes the kernel warning and renames the sanity check to
    emit_last_fiemap_cache() since it's possible and valid to have cached
    fiemap extent.
    
    Reported-by: David Sterba <dsterba@suse.cz>
    Reported-by: Adam Borowski <kilobyte@angband.pl>
    Fixes: 4751832 ("btrfs: fiemap: Cache and merge fiemap extent ...")
    Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Cc: Holger Hoffstätte <holger@applied-asynchrony.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Qu Wenruo authored and gregkh committed Aug 13, 2017
    Configuration menu
    Copy the full SHA
    d5ad330 View commit details
    Browse the repository at this point in the history
  18. Linux 4.12.7

    gregkh committed Aug 13, 2017
    Configuration menu
    Copy the full SHA
    1ea1c41 View commit details
    Browse the repository at this point in the history

Commits on Aug 14, 2017

  1. Configuration menu
    Copy the full SHA
    9c5695d View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    7b54f0b View commit details
    Browse the repository at this point in the history
  3. Merge tag 'v4.12.7' into 4.12

    This is the 4.12.7 stable release
    xanmod committed Aug 14, 2017
    Configuration menu
    Copy the full SHA
    927c972 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    7b4b8a7 View commit details
    Browse the repository at this point in the history
  5. 4.12.7-xanmod8

    xanmod committed Aug 14, 2017
    Configuration menu
    Copy the full SHA
    540057e View commit details
    Browse the repository at this point in the history

Commits on Aug 15, 2017

  1. Configuration menu
    Copy the full SHA
    8fbe41b View commit details
    Browse the repository at this point in the history

Commits on Aug 16, 2017

  1. mm: ratelimit PFNs busy info message

    commit 75dddef upstream.
    
    The RDMA subsystem can generate several thousand of these messages per
    second eventually leading to a kernel crash.  Ratelimit these messages
    to prevent this crash.
    
    Doug said:
     "I've been carrying a version of this for several kernel versions. I
      don't remember when they started, but we have one (and only one) class
      of machines: Dell PE R730xd, that generate these errors. When it
      happens, without a rate limit, we get rcu timeouts and kernel oopses.
      With the rate limit, we just get a lot of annoying kernel messages but
      the machine continues on, recovers, and eventually the memory
      operations all succeed"
    
    And:
     "> Well... why are all these EBUSY's occurring? It sounds inefficient
      > (at least) but if it is expected, normal and unavoidable then
      > perhaps we should just remove that message altogether?
    
      I don't have an answer to that question. To be honest, I haven't
      looked real hard. We never had this at all, then it started out of the
      blue, but only on our Dell 730xd machines (and it hits all of them),
      but no other classes or brands of machines. And we have our 730xd
      machines loaded up with different brands and models of cards (for
      instance one dedicated to mlx4 hardware, one for qib, one for mlx5, an
      ocrdma/cxgb4 combo, etc), so the fact that it hit all of the machines
      meant it wasn't tied to any particular brand/model of RDMA hardware.
      To me, it always smelled of a hardware oddity specific to maybe the
      CPUs or mainboard chipsets in these machines, so given that I'm not an
      mm expert anyway, I never chased it down.
    
      A few other relevant details: it showed up somewhere around 4.8/4.9 or
      thereabouts. It never happened before, but the prinkt has been there
      since the 3.18 days, so possibly the test to trigger this message was
      changed, or something else in the allocator changed such that the
      situation started happening on these machines?
    
      And, like I said, it is specific to our 730xd machines (but they are
      all identical, so that could mean it's something like their specific
      ram configuration is causing the allocator to hit this on these
      machine but not on other machines in the cluster, I don't want to say
      it's necessarily the model of chipset or CPU, there are other bits of
      identicalness between these machines)"
    
    Link: http://lkml.kernel.org/r/499c0f6cc10d6eb829a67f2a4d75b4228a9b356e.1501695897.git.jtoppins@redhat.com
    Signed-off-by: Jonathan Toppins <jtoppins@redhat.com>
    Reviewed-by: Doug Ledford <dledford@redhat.com>
    Tested-by: Doug Ledford <dledford@redhat.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Hillf Danton <hillf.zj@alibaba-inc.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Jonathan Toppins authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    10df347 View commit details
    Browse the repository at this point in the history
  2. mm: fix list corruptions on shmem shrinklist

    commit d041353 upstream.
    
    We saw many list corruption warnings on shmem shrinklist:
    
      WARNING: CPU: 18 PID: 177 at lib/list_debug.c:59 __list_del_entry+0x9e/0xc0
      list_del corruption. prev->next should be ffff9ae5694b82d8, but was ffff9ae5699ba960
      Modules linked in: intel_rapl sb_edac edac_core x86_pkg_temp_thermal coretemp iTCO_wdt iTCO_vendor_support crct10dif_pclmul crc32_pclmul ghash_clmulni_intel raid0 dcdbas shpchp wmi hed i2c_i801 ioatdma lpc_ich i2c_smbus acpi_cpufreq tcp_diag inet_diag sch_fq_codel ipmi_si ipmi_devintf ipmi_msghandler igb ptp crc32c_intel pps_core i2c_algo_bit i2c_core dca ipv6 crc_ccitt
      CPU: 18 PID: 177 Comm: kswapd1 Not tainted 4.9.34-t3.el7.twitter.x86_64 #1
      Hardware name: Dell Inc. PowerEdge C6220/0W6W6G, BIOS 2.2.3 11/07/2013
      Call Trace:
        dump_stack+0x4d/0x66
        __warn+0xcb/0xf0
        warn_slowpath_fmt+0x4f/0x60
        __list_del_entry+0x9e/0xc0
        shmem_unused_huge_shrink+0xfa/0x2e0
        shmem_unused_huge_scan+0x20/0x30
        super_cache_scan+0x193/0x1a0
        shrink_slab.part.41+0x1e3/0x3f0
        shrink_slab+0x29/0x30
        shrink_node+0xf9/0x2f0
        kswapd+0x2d8/0x6c0
        kthread+0xd7/0xf0
        ret_from_fork+0x22/0x30
    
      WARNING: CPU: 23 PID: 639 at lib/list_debug.c:33 __list_add+0x89/0xb0
      list_add corruption. prev->next should be next (ffff9ae5699ba960), but was ffff9ae5694b82d8. (prev=ffff9ae5694b82d8).
      Modules linked in: intel_rapl sb_edac edac_core x86_pkg_temp_thermal coretemp iTCO_wdt iTCO_vendor_support crct10dif_pclmul crc32_pclmul ghash_clmulni_intel raid0 dcdbas shpchp wmi hed i2c_i801 ioatdma lpc_ich i2c_smbus acpi_cpufreq tcp_diag inet_diag sch_fq_codel ipmi_si ipmi_devintf ipmi_msghandler igb ptp crc32c_intel pps_core i2c_algo_bit i2c_core dca ipv6 crc_ccitt
      CPU: 23 PID: 639 Comm: systemd-udevd Tainted: G        W       4.9.34-t3.el7.twitter.x86_64 #1
      Hardware name: Dell Inc. PowerEdge C6220/0W6W6G, BIOS 2.2.3 11/07/2013
      Call Trace:
        dump_stack+0x4d/0x66
        __warn+0xcb/0xf0
        warn_slowpath_fmt+0x4f/0x60
        __list_add+0x89/0xb0
        shmem_setattr+0x204/0x230
        notify_change+0x2ef/0x440
        do_truncate+0x5d/0x90
        path_openat+0x331/0x1190
        do_filp_open+0x7e/0xe0
        do_sys_open+0x123/0x200
        SyS_open+0x1e/0x20
        do_syscall_64+0x61/0x170
        entry_SYSCALL64_slow_path+0x25/0x25
    
    The problem is that shmem_unused_huge_shrink() moves entries from the
    global sbinfo->shrinklist to its local lists and then releases the
    spinlock.  However, a parallel shmem_setattr() could access one of these
    entries directly and add it back to the global shrinklist if it is
    removed, with the spinlock held.
    
    The logic itself looks solid since an entry could be either in a local
    list or the global list, otherwise it is removed from one of them by
    list_del_init().  So probably the race condition is that, one CPU is in
    the middle of INIT_LIST_HEAD() but the other CPU calls list_empty()
    which returns true too early then the following list_add_tail() sees a
    corrupted entry.
    
    list_empty_careful() is designed to fix this situation.
    
    [akpm@linux-foundation.org: add comments]
    Link: http://lkml.kernel.org/r/20170803054630.18775-1-xiyou.wangcong@gmail.com
    Fixes: 779750d ("shmem: split huge pages beyond i_size under memory pressure")
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    congwang authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    5f064f8 View commit details
    Browse the repository at this point in the history
  3. futex: Remove unnecessary warning from get_futex_key

    commit 48fb6f4 upstream.
    
    Commit 65d8fc7 ("futex: Remove requirement for lock_page() in
    get_futex_key()") removed an unnecessary lock_page() with the
    side-effect that page->mapping needed to be treated very carefully.
    
    Two defensive warnings were added in case any assumption was missed and
    the first warning assumed a correct application would not alter a
    mapping backing a futex key.  Since merging, it has not triggered for
    any unexpected case but Mark Rutland reported the following bug
    triggering due to the first warning.
    
      kernel BUG at kernel/futex.c:679!
      Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
      Modules linked in:
      CPU: 0 PID: 3695 Comm: syz-executor1 Not tainted 4.13.0-rc3-00020-g307fec773ba3 #3
      Hardware name: linux,dummy-virt (DT)
      task: ffff80001e271780 task.stack: ffff000010908000
      PC is at get_futex_key+0x6a4/0xcf0 kernel/futex.c:679
      LR is at get_futex_key+0x6a4/0xcf0 kernel/futex.c:679
      pc : [<ffff00000821ac14>] lr : [<ffff00000821ac14>] pstate: 80000145
    
    The fact that it's a bug instead of a warning was due to an unrelated
    arm64 problem, but the warning itself triggered because the underlying
    mapping changed.
    
    This is an application issue but from a kernel perspective it's a
    recoverable situation and the warning is unnecessary so this patch
    removes the warning.  The warning may potentially be triggered with the
    following test program from Mark although it may be necessary to adjust
    NR_FUTEX_THREADS to be a value smaller than the number of CPUs in the
    system.
    
        #include <linux/futex.h>
        #include <pthread.h>
        #include <stdio.h>
        #include <stdlib.h>
        #include <sys/mman.h>
        #include <sys/syscall.h>
        #include <sys/time.h>
        #include <unistd.h>
    
        #define NR_FUTEX_THREADS 16
        pthread_t threads[NR_FUTEX_THREADS];
    
        void *mem;
    
        #define MEM_PROT  (PROT_READ | PROT_WRITE)
        #define MEM_SIZE  65536
    
        static int futex_wrapper(int *uaddr, int op, int val,
                                 const struct timespec *timeout,
                                 int *uaddr2, int val3)
        {
            syscall(SYS_futex, uaddr, op, val, timeout, uaddr2, val3);
        }
    
        void *poll_futex(void *unused)
        {
            for (;;) {
                futex_wrapper(mem, FUTEX_CMP_REQUEUE_PI, 1, NULL, mem + 4, 1);
            }
        }
    
        int main(int argc, char *argv[])
        {
            int i;
    
            mem = mmap(NULL, MEM_SIZE, MEM_PROT,
                   MAP_SHARED | MAP_ANONYMOUS, -1, 0);
    
            printf("Mapping @ %p\n", mem);
    
            printf("Creating futex threads...\n");
    
            for (i = 0; i < NR_FUTEX_THREADS; i++)
                pthread_create(&threads[i], NULL, poll_futex, NULL);
    
            printf("Flipping mapping...\n");
            for (;;) {
                mmap(mem, MEM_SIZE, MEM_PROT,
                     MAP_FIXED | MAP_SHARED | MAP_ANONYMOUS, -1, 0);
            }
    
            return 0;
        }
    
    Reported-and-tested-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Mel Gorman <mgorman@suse.de>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Mel Gorman authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    5c1d458 View commit details
    Browse the repository at this point in the history
  4. xtensa: fix cache aliasing handling code for WT cache

    commit 6d0f581 upstream.
    
    Currently building kernel for xtensa core with aliasing WT cache fails
    with the following messages:
    
      mm/memory.c:2152: undefined reference to `flush_dcache_page'
      mm/memory.c:2332: undefined reference to `local_flush_cache_page'
      mm/memory.c:1919: undefined reference to `local_flush_cache_range'
      mm/memory.c:4179: undefined reference to `copy_to_user_page'
      mm/memory.c:4183: undefined reference to `copy_from_user_page'
    
    This happens because implementation of these functions is only compiled
    when data cache is WB, which looks wrong: even when data cache doesn't
    need flushing it still needs invalidation. The functions like
    __flush_[invalidate_]dcache_* are correctly defined for both WB and WT
    caches (and even if they weren't that'd still be ok, just slower).
    
    Fix this by providing the same implementation of the above functions for
    both WB and WT cache.
    
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jcmvbkbc authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    5e96389 View commit details
    Browse the repository at this point in the history
  5. xtensa: mm/cache: add missing EXPORT_SYMBOLs

    commit bc652eb upstream.
    
    Functions clear_user_highpage, copy_user_highpage, flush_dcache_page,
    local_flush_cache_range and local_flush_cache_page may be used from
    modules. Export them.
    
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jcmvbkbc authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    094849d View commit details
    Browse the repository at this point in the history
  6. xtensa: don't limit csum_partial export by CONFIG_NET

    commit 7f81e55 upstream.
    
    csum_partial and csum_partial_copy_generic are defined unconditionally
    and are available even when CONFIG_NET is disabled. They are used not
    only by the network drivers, but also by scsi and media.
    Don't limit these functions export by CONFIG_NET.
    
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jcmvbkbc authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    0af6995 View commit details
    Browse the repository at this point in the history
  7. xfs: Fix leak of discard bio

    commit ea7bd56 upstream.
    
    The bio describing discard operation is allocated by
    __blkdev_issue_discard() which returns us a reference to it. That
    reference is never released and thus we leak this bio. Drop the bio
    reference once it completes in xlog_discard_endio().
    
    Fixes: 4560e78
    Signed-off-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jankara authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    8452494 View commit details
    Browse the repository at this point in the history
  8. pinctrl: armada-37xx: Fix number of pin in south bridge

    commit 6b67c39 upstream.
    
    On the south bridge we have pin from to 29, so it gives 30 pins (and not
    29).
    
    Without this patch the kernel complain with the following traces:
    cat /sys/kernel/debug/pinctrl/d0018800.pinctrl/pingroups
    [  154.530205] armada-37xx-pinctrl d0018800.pinctrl: failed to get pin(29) name
    [  154.537567] ------------[ cut here ]------------
    [  154.542348] WARNING: CPU: 1 PID: 1347 at /home/gclement/open/kernel/marvell-mainline-linux/drivers/pinctrl/core.c:1610 pinctrl_groups_show+0x15c/0x1a0
    [  154.555918] Modules linked in:
    [  154.558890] CPU: 1 PID: 1347 Comm: cat Tainted: G        W       4.13.0-rc1-00001-g19e1b9fa219d #525
    [  154.568316] Hardware name: Marvell Armada 3720 Development Board DB-88F3720-DDR3 (DT)
    [  154.576311] task: ffff80001d32d100 task.stack: ffff80001bdc0000
    [  154.583048] PC is at pinctrl_groups_show+0x15c/0x1a0
    [  154.587816] LR is at pinctrl_groups_show+0x148/0x1a0
    [  154.592847] pc : [<ffff0000083e3adc>] lr : [<ffff0000083e3ac8>] pstate: 00000145
    [  154.600840] sp : ffff80001bdc3c80
    [  154.604255] x29: ffff80001bdc3c80 x28: 00000000f7750000
    [  154.609825] x27: ffff80001d05d198 x26: 0000000000000009
    [  154.615224] x25: ffff0000089ead20 x24: 0000000000000002
    [  154.620705] x23: ffff000008c8e1d0 x22: ffff80001be55700
    [  154.626187] x21: ffff80001d05d100 x20: 0000000000000005
    [  154.631667] x19: 0000000000000006 x18: 0000000000000010
    [  154.637238] x17: 0000000000000000 x16: ffff0000081fc4b8
    [  154.642726] x15: 0000000000000006 x14: ffff0000899e537f
    [  154.648214] x13: ffff0000099e538d x12: 206f742064656c69
    [  154.653613] x11: 6166203a6c727463 x10: 0000000005f5e0ff
    [  154.659094] x9 : ffff80001bdc38c0 x8 : 286e697020746567
    [  154.664576] x7 : ffff000008551870 x6 : 000000000000011b
    [  154.670146] x5 : 0000000000000000 x4 : 0000000000000000
    [  154.675544] x3 : 0000000000000000 x2 : 0000000000000000
    [  154.681025] x1 : ffff000008c8e1d0 x0 : ffff80001be55700
    [  154.686507] Call trace:
    [  154.688668] Exception stack(0xffff80001bdc3ab0 to 0xffff80001bdc3be0)
    [  154.695224] 3aa0:                                   0000000000000006 0001000000000000
    [  154.703310] 3ac0: ffff80001bdc3c80 ffff0000083e3adc ffff80001bdc3bb0 00000000ffffffd8
    [  154.711304] 3ae0: 4554535953425553 6f6674616c703d4d 4349564544006d72 6674616c702b3d45
    [  154.719478] 3b00: 313030643a6d726f 6e69702e30303838 ffff80006c727463 ffff0000089635d8
    [  154.727562] 3b20: ffff80001d1ca0cb ffff000008af0fa4 ffff80001bdc3b40 ffff000008c8e1dc
    [  154.735648] 3b40: ffff80001bdc3bc0 ffff000008223174 ffff80001be55700 ffff000008c8e1d0
    [  154.743731] 3b60: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
    [  154.752354] 3b80: 000000000000011b ffff000008551870 286e697020746567 ffff80001bdc38c0
    [  154.760446] 3ba0: 0000000005f5e0ff 6166203a6c727463 206f742064656c69 ffff0000099e538d
    [  154.767910] 3bc0: ffff0000899e537f 0000000000000006 ffff0000081fc4b8 0000000000000000
    [  154.776085] [<ffff0000083e3adc>] pinctrl_groups_show+0x15c/0x1a0
    [  154.782823] [<ffff000008222abc>] seq_read+0x184/0x460
    [  154.787505] [<ffff000008344120>] full_proxy_read+0x60/0xa8
    [  154.793431] [<ffff0000081f9bec>] __vfs_read+0x1c/0x110
    [  154.799001] [<ffff0000081faff4>] vfs_read+0x84/0x140
    [  154.803860] [<ffff0000081fc4fc>] SyS_read+0x44/0xa0
    [  154.808983] [<ffff000008082f30>] el0_svc_naked+0x24/0x28
    [  154.814459] ---[ end trace 4cbb00a92d616b95 ]---
    
    Fixes: 87466cc ("pinctrl: armada-37xx: Add pin controller support
    for Armada 37xx")
    Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    gclement authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    0eda7e0 View commit details
    Browse the repository at this point in the history
  9. mtd: nand: atmel: Fix DT backward compatibility in pmecc.c

    commit 3aa0907 upstream.
    
    PMECC caps extraction from old DT bindings is broken, thus leading to
    erroneous EL registers offset, which in turn make HW ECC unusable on
    sama5d2 when old bindings are in use.
    
    Passing the NAND dev node instead of the NFC node to of_match_node()
    solves the problem.
    
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Fixes: f88fc12 ("mtd: nand: Cleanup/rework the atmel_nand driver")
    Tested-by: Romain Izard <romain.izard.pro@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Boris Brezillon authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    a34d48d View commit details
    Browse the repository at this point in the history
  10. mtd: nand: Fix timing setup for NANDs that do not support SET FEATURES

    commit a11bf5e upstream.
    
    Some ONFI NANDs do not support the SET/GET FEATURES commands, which,
    according to the spec, is perfectly valid.
    
    On these NANDs we can't set a specific timing mode using the "timing
    mode" feature, and we should assume the NAND does not require any setup
    to enter a specific timing mode.
    
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Fixes: d8e725d ("mtd: nand: automate NAND timings selection")
    Reported-by: Alexander Dahl <ada@thorsis.com>
    Tested-by: Alexander Dahl <ada@thorsis.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Boris Brezillon authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    867c077 View commit details
    Browse the repository at this point in the history
  11. mtd: nand: Declare tBERS, tR and tPROG as u64 to avoid integer overflow

    commit 6d29231 upstream.
    
    All timings in nand_sdr_timings are expressed in picoseconds but some
    of them may not fit in an u32.
    
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Fixes: 204e7ec ("mtd: nand: Add a few more timings to nand_sdr_timings")
    Reported-by: Alexander Dahl <ada@thorsis.com>
    Reviewed-by: Alexander Dahl <ada@thorsis.com>
    Tested-by: Alexander Dahl <ada@thorsis.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Boris Brezillon authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    a0e1953 View commit details
    Browse the repository at this point in the history
  12. iscsi-target: fix memory leak in iscsit_setup_text_cmd()

    commit ea8dc5b upstream.
    
    On receiving text request iscsi-target allocates buffer for
    payload in iscsit_handle_text_cmd() and assigns buffer pointer
    to cmd->text_in_ptr, this buffer is currently freed in
    iscsit_release_cmd(), if iscsi-target sets 'C' bit in text
    response then it will receive another text request from the
    initiator with ttt != 0xffffffff in this case iscsi-target
    will find cmd using itt and call iscsit_setup_text_cmd()
    which will set cmd->text_in_ptr to NULL without freeing
    previously allocated buffer.
    
    This patch fixes this issue by calling kfree(cmd->text_in_ptr)
    in iscsit_setup_text_cmd() before assigning NULL to it.
    
    For the first text request cmd->text_in_ptr is NULL as
    cmd is memset to 0 in iscsit_allocate_cmd().
    
    Signed-off-by: Varun Prakash <varun@chelsio.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Varun Prakash authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    f838bd1 View commit details
    Browse the repository at this point in the history
  13. iscsi-target: Fix iscsi_np reset hung task during parallel delete

    commit 978d13d upstream.
    
    This patch fixes a bug associated with iscsit_reset_np_thread()
    that can occur during parallel configfs rmdir of a single iscsi_np
    used across multiple iscsi-target instances, that would result in
    hung task(s) similar to below where configfs rmdir process context
    was blocked indefinately waiting for iscsi_np->np_restart_comp
    to finish:
    
    [ 6726.112076] INFO: task dcp_proxy_node_:15550 blocked for more than 120 seconds.
    [ 6726.119440]       Tainted: G        W  O     4.1.26-3321 #2
    [ 6726.125045] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    [ 6726.132927] dcp_proxy_node_ D ffff8803f202bc88     0 15550      1 0x00000000
    [ 6726.140058]  ffff8803f202bc88 ffff88085c64d960 ffff88083b3b1ad0 ffff88087fffeb08
    [ 6726.147593]  ffff8803f202c000 7fffffffffffffff ffff88083f459c28 ffff88083b3b1ad0
    [ 6726.155132]  ffff88035373c100 ffff8803f202bca8 ffffffff8168ced2 ffff8803f202bcb8
    [ 6726.162667] Call Trace:
    [ 6726.165150]  [<ffffffff8168ced2>] schedule+0x32/0x80
    [ 6726.170156]  [<ffffffff8168f5b4>] schedule_timeout+0x214/0x290
    [ 6726.176030]  [<ffffffff810caef2>] ? __send_signal+0x52/0x4a0
    [ 6726.181728]  [<ffffffff8168d7d6>] wait_for_completion+0x96/0x100
    [ 6726.187774]  [<ffffffff810e7c80>] ? wake_up_state+0x10/0x10
    [ 6726.193395]  [<ffffffffa035d6e2>] iscsit_reset_np_thread+0x62/0xe0 [iscsi_target_mod]
    [ 6726.201278]  [<ffffffffa0355d86>] iscsit_tpg_disable_portal_group+0x96/0x190 [iscsi_target_mod]
    [ 6726.210033]  [<ffffffffa0363f7f>] lio_target_tpg_store_enable+0x4f/0xc0 [iscsi_target_mod]
    [ 6726.218351]  [<ffffffff81260c5a>] configfs_write_file+0xaa/0x110
    [ 6726.224392]  [<ffffffff811ea364>] vfs_write+0xa4/0x1b0
    [ 6726.229576]  [<ffffffff811eb111>] SyS_write+0x41/0xb0
    [ 6726.234659]  [<ffffffff8169042e>] system_call_fastpath+0x12/0x71
    
    It would happen because each iscsit_reset_np_thread() sets state
    to ISCSI_NP_THREAD_RESET, sends SIGINT, and then blocks waiting
    for completion on iscsi_np->np_restart_comp.
    
    However, if iscsi_np was active processing a login request and
    more than a single iscsit_reset_np_thread() caller to the same
    iscsi_np was blocked on iscsi_np->np_restart_comp, iscsi_np
    kthread process context in __iscsi_target_login_thread() would
    flush pending signals and only perform a single completion of
    np->np_restart_comp before going back to sleep within transport
    specific iscsit_transport->iscsi_accept_np code.
    
    To address this bug, add a iscsi_np->np_reset_count and update
    __iscsi_target_login_thread() to keep completing np->np_restart_comp
    until ->np_reset_count has reached zero.
    
    Reported-by: Gary Guo <ghg@datera.io>
    Tested-by: Gary Guo <ghg@datera.io>
    Cc: Mike Christie <mchristi@redhat.com>
    Cc: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Nicholas Bellinger authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    4280481 View commit details
    Browse the repository at this point in the history
  14. usb-storage: fix deadlock involving host lock and scsi_done

    commit 8b52291 upstream.
    
    Christoph Hellwig says that since version 4.12, the kernel switched to
    using blk-mq by default.  The old code used a softirq for handling
    request completions, but blk-mq can handle completions in the caller's
    context.  This may cause a problem for usb-storage, because it invokes
    the ->scsi_done callback while holding the host lock, and the
    completion routine sometimes tries to acquire the same lock (when
    running the error handler, for example).
    
    The consequence is that the existing code will sometimes deadlock upon
    error completion of a SCSI command (with a lockdep warning).
    
    This is easy enough to fix, since usb-storage doesn't really need to
    hold the host lock while the callback runs.  It was simpler to write
    it that way, but moving the call outside the locked region is pretty
    easy and there's no downside.  That's what this patch does.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-and-tested-by: Arthur Marsh <arthur.marsh@internode.on.net>
    CC: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    AlanStern authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    7b0d44e View commit details
    Browse the repository at this point in the history
  15. target: Fix node_acl demo-mode + uncached dynamic shutdown regression

    commit 6f48655 upstream.
    
    This patch fixes a generate_node_acls = 1 + cache_dynamic_acls = 0
    regression, that was introduced by
    
      commit 01d4d67
      Author: Nicholas Bellinger <nab@linux-iscsi.org>
      Date:   Wed Dec 7 12:55:54 2016 -0800
    
    which originally had the proper list_del_init() usage, but was
    dropped during list review as it was thought unnecessary by HCH.
    
    However, list_del_init() usage is required during the special
    generate_node_acls = 1 + cache_dynamic_acls = 0 case when
    transport_free_session() does a list_del(&se_nacl->acl_list),
    followed by target_complete_nacl() doing the same thing.
    
    This was manifesting as a general protection fault as reported
    by Justin:
    
    kernel: general protection fault: 0000 [#1] SMP
    kernel: Modules linked in:
    kernel: CPU: 0 PID: 11047 Comm: iscsi_ttx Not tainted 4.13.0-rc2.x86_64.1+ #20
    kernel: Hardware name: Intel Corporation S5500BC/S5500BC, BIOS S5500.86B.01.00.0064.050520141428 05/05/2014
    kernel: task: ffff88026939e800 task.stack: ffffc90007884000
    kernel: RIP: 0010:target_put_nacl+0x49/0xb0
    kernel: RSP: 0018:ffffc90007887d70 EFLAGS: 00010246
    kernel: RAX: dead000000000200 RBX: ffff8802556ca000 RCX: 0000000000000000
    kernel: RDX: dead000000000100 RSI: 0000000000000246 RDI: ffff8802556ce028
    kernel: RBP: ffffc90007887d88 R08: 0000000000000001 R09: 0000000000000000
    kernel: R10: ffffc90007887df8 R11: ffffea0009986900 R12: ffff8802556ce020
    kernel: R13: ffff8802556ce028 R14: ffff8802556ce028 R15: ffffffff88d85540
    kernel: FS:  0000000000000000(0000) GS:ffff88027fc00000(0000) knlGS:0000000000000000
    kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    kernel: CR2: 00007fffe36f5f94 CR3: 0000000009209000 CR4: 00000000003406f0
    kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    kernel: DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    kernel: Call Trace:
    kernel:  transport_free_session+0x67/0x140
    kernel:  transport_deregister_session+0x7a/0xc0
    kernel:  iscsit_close_session+0x92/0x210
    kernel:  iscsit_close_connection+0x5f9/0x840
    kernel:  iscsit_take_action_for_connection_exit+0xfe/0x110
    kernel:  iscsi_target_tx_thread+0x140/0x1e0
    kernel:  ? wait_woken+0x90/0x90
    kernel:  kthread+0x124/0x160
    kernel:  ? iscsit_thread_get_cpumask+0x90/0x90
    kernel:  ? kthread_create_on_node+0x40/0x40
    kernel:  ret_from_fork+0x22/0x30
    kernel: Code: 00 48 89 fb 4c 8b a7 48 01 00 00 74 68 4d 8d 6c 24 08 4c
    89 ef e8 e8 28 43 00 48 8b 93 20 04 00 00 48 8b 83 28 04 00 00 4c 89
    ef <48> 89 42 08 48 89 10 48 b8 00 01 00 00 00 00 ad de 48 89 83 20
    kernel: RIP: target_put_nacl+0x49/0xb0 RSP: ffffc90007887d70
    kernel: ---[ end trace f12821adbfd46fed ]---
    
    To address this, go ahead and use proper list_del_list() for all
    cases of se_nacl->acl_list deletion.
    
    Reported-by: Justin Maggard <jmaggard01@gmail.com>
    Tested-by: Justin Maggard <jmaggard01@gmail.com>
    Cc: Justin Maggard <jmaggard01@gmail.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Nicholas Bellinger authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    59c7423 View commit details
    Browse the repository at this point in the history
  16. fuse: initialize the flock flag in fuse_file on allocation

    commit 68227c0 upstream.
    
    Before the patch, the flock flag could remain uninitialized for the
    lifespan of the fuse_file allocation. Unless set to true in
    fuse_file_flock(), it would remain in an indeterminate state until read in
    an if statement in fuse_release_common(). This could consequently lead to
    taking an unexpected branch in the code.
    
    The bug was discovered by a runtime instrumentation designed to detect use
    of uninitialized memory in the kernel.
    
    Signed-off-by: Mateusz Jurczyk <mjurczyk@google.com>
    Fixes: 37fb3a3 ("fuse: fix flock")
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    j00ru authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    cfea042 View commit details
    Browse the repository at this point in the history
  17. i2c: designware: Some broken DSTDs use 1MiHz instead of 1MHz

    commit 682c6c2 upstream.
    
    At least the Acer Iconia Tab8 / aka W1-810 uses 1MiHz instead of
    1MHz for one of its busses, fix this up to 1MHz instead of failing
    the probe of that bus.
    
    This fixes the accelerometer on the Acer Iconia Tab8 not working.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jwrdegoede authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    1f2f0f1 View commit details
    Browse the repository at this point in the history
  18. nand: fix wrong default oob layout for small pages using soft ecc

    commit f7f8c17 upstream.
    
    When using soft ecc, if no ooblayout is given, the core automatically
    uses one of the nand_ooblayout_{sp,lp}*() functions to determine the
    layout inside the out of band data.
    
    Until kernel version 4.6, struct nand_ecclayout was used for that
    purpose. During the migration from 4.6 to 4.7, an error shown up in the
    small page layout, in the case oob section is only 8 bytes long.
    
    The layout was using three bytes (0, 1, 2) for ecc, two bytes (3, 4)
    as free bytes, one byte (5) for bad block marker and finally
    two bytes (6, 7) as free bytes, as shown there:
    
    [linux-4.6] drivers/mtd/nand/nand_base.c:52
    static struct nand_ecclayout nand_oob_8 = {
    	.eccbytes = 3,
    	.eccpos = {0, 1, 2},
    	.oobfree = {
    		{.offset = 3,
    		 .length = 2},
    		{.offset = 6,
    		 .length = 2} }
    };
    
    This fixes the current implementation which is incoherent. It
    references bit 3 at the same time as an ecc byte and a free byte.
    
    Furthermore, it is clear with the previous implementation that there
    is only one ecc section with 8 bytes oob sections. We shall return
    -ERANGE in the nand_ooblayout_ecc_sp() function when asked for the
    second section.
    
    Signed-off-by: Miquel Raynal <miquel.raynal@free-electrons.com>
    Fixes: 41b207a ("mtd: nand: implement the default mtd_ooblayout_ops")
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    miquelraynal authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    3329fe0 View commit details
    Browse the repository at this point in the history
  19. mmc: mmc: correct the logic for setting HS400ES signal voltage

    commit 92ddd95 upstream.
    
    Change the default err value to -EINVAL, make sure the card only
    has type EXT_CSD_CARD_TYPE_HS400_1_8V also do the signal voltage
    setting when select hs400es mode.
    
    Fixes: commit 1720d35 ("mmc: core: switch to 1V8 or 1V2 for hs400es mode")
    Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
    Reviewed-by: Shawn Lin <shawn.lin@rock-chips.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Haibo Chen authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    8d189f6 View commit details
    Browse the repository at this point in the history
  20. nfs/flexfiles: fix leak of nfs4_ff_ds_version arrays

    commit 1feb261 upstream.
    
    The client was freeing the nfs4_ff_layout_ds, but not the contained
    nfs4_ff_ds_version array.
    
    Signed-off-by: Weston Andros Adamson <dros@primarydata.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    westonandrosadamson authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    1cc5cd5 View commit details
    Browse the repository at this point in the history
  21. drm/bridge: tc358767: fix probe without attached output node

    commit d630213 upstream.
    
    The output node of the TC358767 is only used if another bridge is chained
    behind it. Panels attached to the TC358767 can be detected using the usual
    DP AUX probing. This restores the old behavior of ignoring the output if
    no endpoint is found.
    
    Fixes: ebc9446 (drm: convert drivers to use drm_of_find_panel_or_bridge)
    Acked-by: Andrey Gusakov <andrey.gusakov@cogentembedded.com>
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Signed-off-by: Archit Taneja <architt@codeaurora.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20170710124125.9019-1-l.stach@pengutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    lynxeye-dev authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    8f0f15c View commit details
    Browse the repository at this point in the history
  22. drm/etnaviv: Fix off-by-one error in reloc checking

    commit d6f756e upstream.
    
    A relocation pointing to the last four bytes of a buffer can
    legitimately happen in the case of small vertex buffers.
    
    Signed-off-by: Wladimir J. van der Laan <laanwj@gmail.com>
    Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
    Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    laanwj authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    4eedc8a View commit details
    Browse the repository at this point in the history
  23. drm/i915: Fix out-of-bounds array access in bdw_load_gamma_lut

    commit 5279fc7 upstream.
    
    bdw_load_gamma_lut is writing beyond the array to the maximum value.
    The intend of the function is to clamp values > 1 to 1, so write
    the intended color to the max register.
    
    This fixes the following KASAN warning:
    
    [  197.020857] [IGT] kms_pipe_color: executing
    [  197.063434] [IGT] kms_pipe_color: starting subtest ctm-0-25-pipe0
    [  197.078989] ==================================================================
    [  197.079127] BUG: KASAN: slab-out-of-bounds in bdw_load_gamma_lut.isra.2+0x3b9/0x570 [i915]
    [  197.079188] Read of size 2 at addr ffff8800d38db150 by task kms_pipe_color/1839
    [  197.079208] CPU: 2 PID: 1839 Comm: kms_pipe_color Tainted: G     U 4.13.0-rc1-patser+ #5211
    [  197.079215] Hardware name: NUC5i7RYB, BIOS RYBDWi35.86A.0246.2015.0309.1355 03/09/2015
    [  197.079220] Call Trace:
    [  197.079230]  dump_stack+0x68/0x9e
    [  197.079239]  print_address_description+0x6f/0x250
    [  197.079251]  kasan_report+0x216/0x370
    [  197.079374]  ? bdw_load_gamma_lut.isra.2+0x3b9/0x570 [i915]
    [  197.079451]  ? gen8_write16+0x4e0/0x4e0 [i915]
    [  197.079460]  __asan_report_load2_noabort+0x14/0x20
    [  197.079535]  bdw_load_gamma_lut.isra.2+0x3b9/0x570 [i915]
    [  197.079612]  broadwell_load_luts+0x1df/0x550 [i915]
    [  197.079690]  intel_color_load_luts+0x7b/0x80 [i915]
    [  197.079764]  intel_begin_crtc_commit+0x138/0x760 [i915]
    [  197.079783]  drm_atomic_helper_commit_planes_on_crtc+0x1a3/0x820 [drm_kms_helper]
    [  197.079859]  ? intel_pre_plane_update+0x571/0x580 [i915]
    [  197.079937]  intel_update_crtc+0x238/0x330 [i915]
    [  197.080016]  intel_update_crtcs+0x10f/0x210 [i915]
    [  197.080092]  intel_atomic_commit_tail+0x1552/0x3340 [i915]
    [  197.080101]  ? _raw_spin_unlock+0x3c/0x40
    [  197.080110]  ? __queue_work+0xb40/0xbf0
    [  197.080188]  ? skl_update_crtcs+0xc00/0xc00 [i915]
    [  197.080195]  ? trace_hardirqs_on+0xd/0x10
    [  197.080269]  ? intel_atomic_commit_ready+0x128/0x13c [i915]
    [  197.080329]  ? __i915_sw_fence_complete+0x5b8/0x6d0 [i915]
    [  197.080336]  ? debug_object_activate+0x39e/0x580
    [  197.080397]  ? i915_sw_fence_await+0x30/0x30 [i915]
    [  197.080409]  ? __might_sleep+0x15b/0x180
    [  197.080483]  intel_atomic_commit+0x944/0xa70 [i915]
    [  197.080490]  ? refcount_dec_and_test+0x11/0x20
    [  197.080567]  ? intel_atomic_commit_tail+0x3340/0x3340 [i915]
    [  197.080597]  ? drm_atomic_crtc_set_property+0x303/0x580 [drm]
    [  197.080674]  ? intel_atomic_commit_tail+0x3340/0x3340 [i915]
    [  197.080704]  drm_atomic_commit+0xd7/0xe0 [drm]
    [  197.080722]  drm_atomic_helper_crtc_set_property+0xec/0x130 [drm_kms_helper]
    [  197.080749]  drm_mode_crtc_set_obj_prop+0x7d/0xb0 [drm]
    [  197.080775]  drm_mode_obj_set_property_ioctl+0x50b/0x5d0 [drm]
    [  197.080783]  ? __might_fault+0x104/0x180
    [  197.080809]  ? drm_mode_obj_find_prop_id+0x160/0x160 [drm]
    [  197.080838]  ? drm_mode_obj_find_prop_id+0x160/0x160 [drm]
    [  197.080861]  drm_ioctl_kernel+0x154/0x1a0 [drm]
    [  197.080885]  drm_ioctl+0x624/0x8f0 [drm]
    [  197.080910]  ? drm_mode_obj_find_prop_id+0x160/0x160 [drm]
    [  197.080934]  ? drm_getunique+0x210/0x210 [drm]
    [  197.080943]  ? __handle_mm_fault+0x1bd0/0x1ce0
    [  197.080949]  ? lock_downgrade+0x610/0x610
    [  197.080957]  ? __lru_cache_add+0x15a/0x180
    [  197.080967]  do_vfs_ioctl+0xd92/0xe40
    [  197.080975]  ? ioctl_preallocate+0x1b0/0x1b0
    [  197.080982]  ? selinux_capable+0x20/0x20
    [  197.080991]  ? __do_page_fault+0x7b7/0x9a0
    [  197.080997]  ? lock_downgrade+0x5bb/0x610
    [  197.081007]  ? security_file_ioctl+0x57/0x90
    [  197.081016]  SyS_ioctl+0x4e/0x80
    [  197.081024]  entry_SYSCALL_64_fastpath+0x18/0xad
    [  197.081030] RIP: 0033:0x7f61f287a987
    [  197.081035] RSP: 002b:00007fff7d44d188 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    [  197.081043] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f61f287a987
    [  197.081048] RDX: 00007fff7d44d1c0 RSI: 00000000c01864ba RDI: 0000000000000003
    [  197.081053] RBP: 00007f61f2b3eb00 R08: 0000000000000059 R09: 0000000000000000
    [  197.081058] R10: 0000002ea5c4a290 R11: 0000000000000246 R12: 00007f61f2b3eb58
    [  197.081063] R13: 0000000000001010 R14: 00007f61f2b3eb58 R15: 0000000000002702
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101659
    Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Reported-by: Martin Peres <martin.peres@linux.intel.com>
    Cc: Martin Peres <martin.peres@linux.intel.com>
    Fixes: 82cf435 ("drm/i915: Implement color management on bdw/skl/bxt/kbl")
    Cc: Shashank Sharma <shashank.sharma@intel.com>
    Cc: Kiran S Kumar <kiran.s.kumar@intel.com>
    Cc: Kausal Malladi <kausalmalladi@gmail.com>
    Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
    Cc: Matt Roper <matthew.d.roper@intel.com>
    Cc: Daniel Vetter <daniel.vetter@intel.com>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Cc: intel-gfx@lists.freedesktop.org
    Link: https://patchwork.freedesktop.org/patch/msgid/20170724091431.24251-1-maarten.lankhorst@linux.intel.com
    Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
    (cherry picked from commit 09a92bc)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    mlankhorst authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    59f1322 View commit details
    Browse the repository at this point in the history
  24. USB: serial: option: add D-Link DWM-222 device ID

    commit fd1b866 upstream.
    
    Add device id for D-Link DWM-222.
    
    Signed-off-by: Hector Martin <marcan@marcan.st>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    marcan authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    b576de1 View commit details
    Browse the repository at this point in the history
  25. USB: serial: cp210x: add support for Qivicon USB ZigBee dongle

    commit 9585e34 upstream.
    
    The German Telekom offers a ZigBee USB Stick under the brand name Qivicon
    for their SmartHome Home Base in its 1. Generation. The productId is not
    known by the according kernel module, this patch adds support for it.
    
    Signed-off-by: Stefan Triller <github@stefantriller.de>
    Reviewed-by: Frans Klaver <fransklaver@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    t2000 authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    492eb61 View commit details
    Browse the repository at this point in the history
  26. USB: serial: pl2303: add new ATEN device id

    commit 3b6bcd3 upstream.
    
    This adds a new ATEN device id for a new pl2303-based device.
    
    Reported-by: Peter Kuo <PeterKuo@aten.com.tw>
    Cc: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    ab51515 View commit details
    Browse the repository at this point in the history
  27. usb: musb: fix tx fifo flush handling again

    commit 45d7386 upstream.
    
    commit 68fe05e ("usb: musb: fix tx fifo flush handling") drops the
    1ms delay trying to solve the long disconnect time issue when
    application queued many tx urbs. However, the 1ms delay is needed for
    some use cases, for example, without the delay, reconnecting AR9271 WIFI
    dongle no longer works if the connection is dropped from the AP.
    
    So let's add back the 1ms delay in musb_h_tx_flush_fifo(), and solve the
    long disconnect time problem with a separate patch for
    usb_hcd_flush_endpoint().
    
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    liubiin authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    792c00c View commit details
    Browse the repository at this point in the history
  28. USB: hcd: Mark secondary HCD as dead if the primary one died

    commit cd5a6a4 upstream.
    
    Make usb_hc_died() clear the HCD_FLAG_RH_RUNNING flag for the shared
    HCD and set HCD_FLAG_DEAD for it, in analogy with what is done for
    the primary one.
    
    Among other thigs, this prevents check_root_hub_suspended() from
    returning -EBUSY for dead HCDs which helps to work around system
    suspend issues in some situations.
    
    This actually fixes occasional suspend failures on one of my test
    machines.
    
    Suggested-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    rafaeljw authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    9ccd63a View commit details
    Browse the repository at this point in the history
  29. staging:iio:resolver:ad2s1210 fix negative IIO_ANGL_VEL read

    commit 105967a upstream.
    
    gcc-7 points out an older regression:
    
    drivers/staging/iio/resolver/ad2s1210.c: In function 'ad2s1210_read_raw':
    drivers/staging/iio/resolver/ad2s1210.c:515:42: error: '<<' in boolean context, did you mean '<' ? [-Werror=int-in-bool-context]
    
    The original code had 'unsigned short' here, but incorrectly got
    converted to 'bool'. This reverts the regression and uses a normal
    type instead.
    
    Fixes: 2914854 ("staging:iio:resolver:ad2s1210 minimal chan spec conversion.")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    arndb authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    f0ab97d View commit details
    Browse the repository at this point in the history
  30. iio: aspeed-adc: wait for initial sequence.

    commit 737cc2a upstream.
    
    This patch enables adc engine at initialization time and waits
    for the initial sequence completion before enabling adc channels.
    
    Without this code adc channels are not functional and shows
    zeros for all connected channels.
    
    Tested on mellanox msn platform.
    
    v1 -> v2:
    Pointed by Rick Altherr:
     - Wait init sequence code enabled by bool
    from OF match table.
    
    Signed-off-by: Mykola Kostenok <c_mykolak@mellanox.com>
    Reviewed-by: Rick Altherr <raltherr@google.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    odmyko authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    5f26ebe View commit details
    Browse the repository at this point in the history
  31. iio: accel: st_accel: add SPI-3wire support

    commit a7b8829 upstream.
    
    Add SPI Serial Interface Mode (SIM) register information
    in st_sensor_settings look up table to support devices
    (like LSM303AGR accel sensor) that allow just SPI-3wire
    communication mode. SIM mode has to be configured before any
    other operation since it is not enabled by default and the driver
    is not able to read without that configuration
    
    Whilst a fairly substantial patch, the actual logic is simple and it
    is better to have the generic fix than a band aid.
    
    Fixes: ddc05fa (iio: st-accel: add support for lsm303agr accel)
    Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@st.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    LorenzoBianconi authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    3fdd085 View commit details
    Browse the repository at this point in the history
  32. iio: accel: bmc150: Always restore device to normal mode after suspen…

    …d-resume
    
    commit e59e189 upstream.
    
    After probe we would put the device in normal mode, after a runtime
    suspend-resume we would put it back in normal mode. But for a regular
    suspend-resume we would only put it back in normal mode if triggers
    or events have been requested.  This is not consistent and breaks
    reading raw values after a suspend-resume.
    
    This commit changes the regular resume path to also unconditionally put
    the device back in normal mode, fixing reading of raw values not working
    after a regular suspend-resume cycle.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jwrdegoede authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    8886738 View commit details
    Browse the repository at this point in the history
  33. iio: pressure: st_pressure_core: disable multiread by default for LPS…

    …22HB
    
    commit add6e6a upstream.
    
    Set multiread variable to false for LPS22HB pressure sensor since
    it is already enabled in CTRL_REG2. Previous configuration does not
    cause any issue in I2C communication since SUB Msb has no meaning
    whereas it breaks register address in SPI communication
    
    Fixes: e039e2f (iio:st_pressure:initial lps22hb sensor support)
    Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@st.com>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    LorenzoBianconi authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    39e07a5 View commit details
    Browse the repository at this point in the history
  34. iio: light: tsl2563: use correct event code

    commit a3507e4 upstream.
    
    The TSL2563 driver provides three iio channels, two of which are raw ADC
    channels (channel 0 and channel 1) in the device and the remaining one
    is calculated by the two.  The ADC channel 0 only supports programmable
    interrupt with threshold settings and this driver supports the event but
    the generated event code does not contain the corresponding iio channel
    type.
    
    This is going to change userspace ABI.  Hopefully fixing this to be
    what it should always have been won't break any userspace code.
    
    Cc: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    mita authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    c1164cc View commit details
    Browse the repository at this point in the history
  35. iio: adc: Revert "axp288: Drop bogus AXP288_ADC_TS_PIN_CTRL register …

    …modifications"
    
    commit 631b010 upstream.
    
    Inheriting the ADC BIAS current settings from the BIOS instead of
    hardcoding then causes the AXP288 to disable charging (I think it
    mis-detects an overheated battery) on at least one model tablet.
    
    So lets go back to hard coding the values, this reverts
    commit fa2849e ("iio: adc: axp288: Drop bogus
    AXP288_ADC_TS_PIN_CTRL register modifications"), fixing charging not
    working on the model tablet in question.
    
    The exact cause is not fully understood, hence the revert to a known working
    state.
    
    Reported-by: Umberto Ixxo <sfumato1977@gmail.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jwrdegoede authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    20035ab View commit details
    Browse the repository at this point in the history
  36. staging: comedi: comedi_fops: do not call blocking ops when !TASK_RUN…

    …NING
    
    commit cef9886 upstream.
    
    Comedi's read and write file operation handlers (`comedi_read()` and
    `comedi_write()`) currently call `copy_to_user()` or `copy_from_user()`
    whilst in the `TASK_INTERRUPTIBLE` state, which falls foul of the
    `might_fault()` checks when enabled.  Fix it by setting the current task
    state back to `TASK_RUNNING` a bit earlier before calling these
    functions.
    
    Reported-by: Piotr Gregor <piotrgregor@rsyncme.org>
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ian-abbott authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    c208cb9 View commit details
    Browse the repository at this point in the history
  37. uas: Add US_FL_IGNORE_RESIDUE for Initio Corporation INIC-3069

    commit 89f23d5 upstream.
    
    Similar to commit d595259 ("usb-storage: Add ignore-residue quirk for
    Initio INIC-3619") for INIC-3169 in unusual_devs.h but INIC-3069 already
    present in unusual_uas.h. Both in same controller IC family.
    
    Issue is that MakeMKV fails during key exchange with installed bluray drive
    with following error:
    
    002004:0000 Error 'Scsi error - ILLEGAL REQUEST:COPY PROTECTION KEY EXCHANGE FAILURE - KEY NOT ESTABLISHED'
    occurred while issuing SCSI command AD010..080002400 to device 'SG:dev_11:0'
    
    Signed-off-by: Alan Swanson <reiver@improbability.net>
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    alanswanson authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    f0834df View commit details
    Browse the repository at this point in the history
  38. firmware: fix batched requests - wake all waiters

    commit e44565f upstream.
    
    The firmware cache mechanism serves two purposes, the secondary purpose is
    not well documented nor understood. This fixes a regression with the
    secondary purpose of the firmware cache mechanism: batched requests on
    successful lookups. Without this fix *any* time a batched request is
    triggered, secondary requests for which the batched request mechanism
    was designed for will seem to last forver and seem to never return.
    This issue is present for all kernel builds possible, and a hard reset
    is required.
    
    The firmware cache is used for:
    
    1) Addressing races with file lookups during the suspend/resume cycle
       by keeping firmware in memory during the suspend/resume cycle
    
    2) Batched requests for the same file rely only on work from the first file
       lookup, which keeps the firmware in memory until the last
       release_firmware() is called
    
    Batched requests *only* take effect if secondary requests come in prior to
    the first user calling release_firmware(). The devres name used for the
    internal firmware cache is used as a hint other pending requests are
    ongoing, the firmware buffer data is kept in memory until the last user of
    the buffer calls release_firmware(), therefore serializing requests and
    delaying the release until all requests are done.
    
    Batched requests wait for a wakup or signal so we can rely on the first file
    fetch to write to the pending secondary requests. Commit 5b02962
    ("firmware: do not use fw_lock for fw_state protection") ported the firmware
    API to use swait, and in doing so failed to convert complete_all() to
    swake_up_all() -- it used swake_up(), loosing the ability for *some* batched
    requests to take effect.
    
    We *could* fix this by just using swake_up_all() *but* swait is now known
    to be very special use case, so its best to just move away from it. So we
    just go back to using completions as before commit 5b02962 ("firmware:
    do not use fw_lock for fw_state protection") given this was using
    complete_all().
    
    Without this fix it has been reported plugging in two Intel 6260 Wifi cards
    on a system will end up enumerating the two devices only 50% of the time
    [0]. The ported swake_up() should have actually handled the case with two
    devices, however, *if more than two cards are used* the swake_up() would
    not have sufficed. This change is only part of the required fixes for
    batched requests. Another fix is provided in the next patch.
    
    This particular change should fix the cases where more than three requests
    with the same firmware name is used, otherwise batched requests will wait
    for MAX_SCHEDULE_TIMEOUT and just timeout eventually.
    
    Below is a summary of tests triggering batched requests on different
    kernel builds.
    
    Before this patch:
    ============================================================================
    CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n
    CONFIG_FW_LOADER_USER_HELPER=y
    
    Most common Linux distribution setup.
    
    API-type                               no-firmware-found   firmware-found
    ----------------------------------------------------------------------
    request_firmware()                     FAIL                FAIL
    request_firmware_direct()              FAIL                FAIL
    request_firmware_nowait(uevent=true)   FAIL                FAIL
    request_firmware_nowait(uevent=false)  FAIL                FAIL
    ============================================================================
    CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n
    CONFIG_FW_LOADER_USER_HELPER=n
    
    Only possible if CONFIG_DELL_RBU=n and CONFIG_LEDS_LP55XX_COMMON=n, rare.
    
    API-type                               no-firmware-found   firmware-found
    ----------------------------------------------------------------------
    request_firmware()                     FAIL                FAIL
    request_firmware_direct()              FAIL                FAIL
    request_firmware_nowait(uevent=true)   FAIL                FAIL
    request_firmware_nowait(uevent=false)  FAIL                FAIL
    ============================================================================
    CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
    CONFIG_FW_LOADER_USER_HELPER=y
    
    Google Android setup.
    
    API-type                               no-firmware-found   firmware-found
    ----------------------------------------------------------------------
    request_firmware()                     FAIL                FAIL
    request_firmware_direct()              FAIL                FAIL
    request_firmware_nowait(uevent=true)   FAIL                FAIL
    request_firmware_nowait(uevent=false)  FAIL                FAIL
    ============================================================================
    
    After this patch:
    ============================================================================
    CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n
    CONFIG_FW_LOADER_USER_HELPER=y
    
    Most common Linux distribution setup.
    
    API-type                               no-firmware-found   firmware-found
    ----------------------------------------------------------------------
    request_firmware()                     FAIL                OK
    request_firmware_direct()              FAIL                OK
    request_firmware_nowait(uevent=true)   FAIL                OK
    request_firmware_nowait(uevent=false)  FAIL                OK
    ============================================================================
    CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n
    CONFIG_FW_LOADER_USER_HELPER=n
    
    Only possible if CONFIG_DELL_RBU=n and CONFIG_LEDS_LP55XX_COMMON=n, rare.
    
    API-type                               no-firmware-found   firmware-found
    ----------------------------------------------------------------------
    request_firmware()                     FAIL                OK
    request_firmware_direct()              FAIL                OK
    request_firmware_nowait(uevent=true)   FAIL                OK
    request_firmware_nowait(uevent=false)  FAIL                OK
    ============================================================================
    CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
    CONFIG_FW_LOADER_USER_HELPER=y
    
    Google Android setup.
    
    API-type                               no-firmware-found   firmware-found
    ----------------------------------------------------------------------
    request_firmware()                     OK                  OK
    request_firmware_direct()              FAIL                OK
    request_firmware_nowait(uevent=true)   OK                  OK
    request_firmware_nowait(uevent=false)  OK                  OK
    ============================================================================
    
    [0] https://bugzilla.kernel.org/show_bug.cgi?id=195477
    
    Cc: Ming Lei <ming.lei@redhat.com>
    Fixes: 5b02962 ("firmware: do not use fw_lock for fw_state protection")
    Reported-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    mcgrof authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    c2c32ed View commit details
    Browse the repository at this point in the history
  39. firmware: fix batched requests - send wake up on failure on direct lo…

    …okups
    
    commit 90d41e7 upstream.
    
    Fix batched requests from waiting forever on failure.
    
    The firmware API batched requests feature has been broken since the API call
    request_firmware_direct() was introduced on commit bba3a87 ("firmware:
    Introduce request_firmware_direct()"), added on v3.14 *iff* the firmware
    being requested was not present in *certain kernel builds* [0].
    
    When no firmware is found the worker which goes on to finish never informs
    waiters queued up of this, so any batched request will stall in what seems
    to be forever (MAX_SCHEDULE_TIMEOUT). Sadly, a reboot will also stall, as
    the reboot notifier was only designed to kill custom fallback workers. The
    issue seems to the user as a type of soft lockup, what *actually* happens
    underneath the hood is a wait call which never completes as we failed to
    issue a completion on error.
    
    For device drivers with optional firmware schemes (ie, Intel iwlwifi, or
    Netronome -- even though it uses request_firmware() and not
    request_firmware_direct()), this could mean that when you boot a system with
    multiple cards the firmware will seem to never load on the system, or that
    the card is just not responsive even the driver initialization. Due to
    differences in scheduling possible this should not always trigger --
    one would need to to ensure that multiple requests are in place at the
    right time for this to work, also release_firmware() must not be called
    prior to any other incoming request. The complexity may not be worth
    supporting batched requests in the future given the wait mechanism is
    only used also for the fallback mechanism. We'll keep it for now and
    just fix it.
    
    Its reported that at least with the Intel WiFi cards on one system this
    issue was creeping up 50% of the boots [0].
    
    Before this commit batched requests testing revealed:
    ============================================================================
    CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n
    CONFIG_FW_LOADER_USER_HELPER=y
    
    Most common Linux distribution setup.
    
    API-type                               no-firmware-found   firmware-found
    ----------------------------------------------------------------------
    request_firmware()                     FAIL                OK
    request_firmware_direct()              FAIL                OK
    request_firmware_nowait(uevent=true)   FAIL                OK
    request_firmware_nowait(uevent=false)  FAIL                OK
    ============================================================================
    CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n
    CONFIG_FW_LOADER_USER_HELPER=n
    
    Only possible if CONFIG_DELL_RBU=n and CONFIG_LEDS_LP55XX_COMMON=n, rare.
    
    API-type                               no-firmware-found   firmware-found
    ----------------------------------------------------------------------
    request_firmware()                     FAIL                OK
    request_firmware_direct()              FAIL                OK
    request_firmware_nowait(uevent=true)   FAIL                OK
    request_firmware_nowait(uevent=false)  FAIL                OK
    ============================================================================
    CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
    CONFIG_FW_LOADER_USER_HELPER=y
    
    Google Android setup.
    
    API-type                               no-firmware-found   firmware-found
    ----------------------------------------------------------------------
    request_firmware()                     OK                  OK
    request_firmware_direct()              FAIL                OK
    request_firmware_nowait(uevent=true)   OK                  OK
    request_firmware_nowait(uevent=false)  OK                  OK
    ============================================================================
    
    Ater this commit batched testing results:
    ============================================================================
    CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n
    CONFIG_FW_LOADER_USER_HELPER=y
    
    Most common Linux distribution setup.
    
    API-type                               no-firmware-found   firmware-found
    ----------------------------------------------------------------------
    request_firmware()                     OK                  OK
    request_firmware_direct()              OK                  OK
    request_firmware_nowait(uevent=true)   OK                  OK
    request_firmware_nowait(uevent=false)  OK                  OK
    ============================================================================
    CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n
    CONFIG_FW_LOADER_USER_HELPER=n
    
    Only possible if CONFIG_DELL_RBU=n and CONFIG_LEDS_LP55XX_COMMON=n, rare.
    
    API-type                               no-firmware-found   firmware-found
    ----------------------------------------------------------------------
    request_firmware()                     OK                  OK
    request_firmware_direct()              OK                  OK
    request_firmware_nowait(uevent=true)   OK                  OK
    request_firmware_nowait(uevent=false)  OK                  OK
    ============================================================================
    CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
    CONFIG_FW_LOADER_USER_HELPER=y
    
    Google Android setup.
    
    API-type                               no-firmware-found   firmware-found
    ----------------------------------------------------------------------
    request_firmware()                     OK                  OK
    request_firmware_direct()              OK                  OK
    request_firmware_nowait(uevent=true)   OK                  OK
    request_firmware_nowait(uevent=false)  OK                  OK
    ============================================================================
    
    [0] https://bugzilla.kernel.org/show_bug.cgi?id=195477
    
    Fixes: bba3a87 ("firmware: Introduce request_firmware_direct()"
    Reported-by: Nicolas <nbroeking@me.com>
    Reported-by: John Ewalt  <jewalt@lgsinnovations.com>
    Reported-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    mcgrof authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    b1b5c0b View commit details
    Browse the repository at this point in the history
  40. firmware: avoid invalid fallback aborts by using killable wait

    commit 260d9f2 upstream.
    
    Commit 0cb6424 ("firmware_loader: abort request if wait_for_completion
    is interrupted") added via 4.0 added support to abort the fallback mechanism
    when a signal was detected and wait_for_completion_interruptible() returned
    -ERESTARTSYS -- for instance when a user hits CTRL-C. The abort was overly
    *too* effective.
    
    When a child process terminates (successful or not) the signal SIGCHLD can
    be sent to the parent process which ran the child in the background and
    later triggered a sync request for firmware through a sysfs interface which
    relies on the fallback mechanism. This signal in turn can be recieved by the
    interruptible wait we constructed on firmware_class and detects it as an
    abort *before* userspace could get a chance to write the firmware. Upon
    failure -EAGAIN is returned, so userspace is also kept in the dark about
    exactly what happened.
    
    We can reproduce the issue with the fw_fallback.sh selftest:
    
    Before this patch:
    $ sudo tools/testing/selftests/firmware/fw_fallback.sh
    ...
    tools/testing/selftests/firmware/fw_fallback.sh: error - sync firmware request cancelled due to SIGCHLD
    
    After this patch:
    $ sudo tools/testing/selftests/firmware/fw_fallback.sh
    ...
    tools/testing/selftests/firmware/fw_fallback.sh: SIGCHLD on sync ignored as expected
    
    Fix this by making the wait killable -- only killable by SIGKILL (kill -9).
    We loose the ability to allow userspace to cancel a write with CTRL-C
    (SIGINT), however its been decided the compromise to require SIGKILL is
    worth the gains.
    
    Chances of this issue occuring are low due to the number of drivers upstream
    exclusively relying on the fallback mechanism for firmware (2 drivers),
    however this is observed in the field with custom drivers with sysfs
    triggers to load firmware. Only distributions relying on the fallback
    mechanism are impacted as well. An example reported issue was on Android,
    as follows:
    
    1) Android init (pid=1) fork()s (say pid=42) [this child process is totally
       unrelated to firmware loading, it could be sleep 2; for all we care ]
    2) Android init (pid=1) does a write() on a (driver custom) sysfs file which
       ends up calling request_firmware() kernel side
    3) The firmware loading fallback mechanism is used, the request is sent to
       userspace and pid 1 waits in the kernel on wait_*
    4) before firmware loading completes pid 42 dies (for any reason, even
       normal termination)
    5) Kernel delivers SIGCHLD to pid=1 to tell it a child has died, which
       causes -ERESTARTSYS to be returned from wait_*
    6) The kernel's wait aborts and return -EAGAIN for the
       request_firmware() caller.
    
    Fixes: 0cb6424 ("firmware_loader: abort request if wait_for_completion is interrupted")
    Suggested-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Suggested-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Tested-by: Martin Fuzzey <mfuzzey@parkeon.com>
    Reported-by: Martin Fuzzey <mfuzzey@parkeon.com>
    Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    mcgrof authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    67e1a98 View commit details
    Browse the repository at this point in the history
  41. block: Make blk_mq_delay_kick_requeue_list() rerun the queue at a qui…

    …et time
    
    commit d4acf36 upstream.
    
    The blk_mq_delay_kick_requeue_list() function is used by the device
    mapper and only by the device mapper to rerun the queue and requeue
    list after a delay. This function is called once per request that
    gets requeued. Modify this function such that the queue is run once
    per path change event instead of once per request that is requeued.
    
    Fixes: commit 2849450 ("blk-mq: introduce blk_mq_delay_kick_requeue_list()")
    Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
    Cc: Mike Snitzer <snitzer@redhat.com>
    Cc: Laurence Oberman <loberman@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    KAGA-KOKO authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    7926348 View commit details
    Browse the repository at this point in the history
  42. usb: gadget: udc: renesas_usb3: Fix usb_gadget_giveback_request() cal…

    …ling
    
    commit aca5b9e upstream.
    
    According to the gadget.h, a "complete" function will always be called
    with interrupts disabled. However, sometimes usb3_request_done() function
    is called with interrupts enabled. So, this function should be held
    by spin_lock_irqsave() to disable interruption. Also, this driver has
    to call spin_unlock() to avoid spinlock recursion by this driver before
    calling usb_gadget_giveback_request().
    
    Reported-by: Kazuya Mizuguchi <kazuya.mizuguchi.ks@renesas.com>
    Tested-by: Kazuya Mizuguchi <kazuya.mizuguchi.ks@renesas.com>
    Fixes: 746bfe6 ("usb: gadget: renesas_usb3: add support for Renesas USB3.0 peripheral controller")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    shimoday authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    f532402 View commit details
    Browse the repository at this point in the history
  43. usb: renesas_usbhs: Fix UGCTRL2 value for R-Car Gen3

    commit 2acecd5 upstream.
    
    The latest HW manual (Rev.0.55) shows us this UGCTRL2.VBUSSEL bit.
    If the bit sets to 1, the VBUS drive is controlled by phy related
    registers (called "UCOM Registers" on the manual). Since R-Car Gen3
    environment will control VBUS by phy-rcar-gen3-usb2 driver,
    the UGCTRL2.VBUSSEL bit should be set to 1. So, this patch fixes
    the register's value. Otherwise, even if the ID pin indicates to
    peripheral, the R-Car will output USBn_PWEN to 1 when a host driver
    is running.
    
    Fixes: de18757 ("usb: renesas_usbhs: add R-Car Gen3 power control"
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    shimoday authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    c45923e View commit details
    Browse the repository at this point in the history
  44. USB: Check for dropped connection before switching to full speed

    commit 94c43b9 upstream.
    
    Some buggy USB disk adapters disconnect and reconnect multiple times
    during the enumeration procedure.  This may lead to a device
    connecting at full speed instead of high speed, because when the USB
    stack sees that a device isn't able to enumerate at high speed, it
    tries to hand the connection over to a full-speed companion
    controller.
    
    The logic for doing this is careful to check that the device is still
    connected.  But this check is inadequate if the device disconnects and
    reconnects before the check is done.  The symptom is that a device
    works, but much more slowly than it is capable of operating.
    
    The situation was made worse recently by commit 22547c4 ("usb:
    hub: Wait for connection to be reestablished after port reset"), which
    increases the delay following a reset before a disconnect is
    recognized, thus giving the device more time to reconnect.
    
    This patch makes the check more robust.  If the device was
    disconnected at any time during enumeration, we will now skip the
    full-speed handover.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-and-tested-by: Zdenek Kabelac <zkabelac@redhat.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    AlanStern authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    7ff799a View commit details
    Browse the repository at this point in the history
  45. usb: core: unlink urbs from the tail of the endpoint's urb_list

    commit 2eac136 upstream.
    
    While unlink an urb, if the urb has been programmed in the controller,
    the controller driver might do some hw related actions to tear down the
    urb.
    
    Currently usb_hcd_flush_endpoint() passes each urb from the head of the
    endpoint's urb_list to the controller driver, which could make the
    controller driver think each urb has been programmed and take the
    unnecessary actions for each urb.
    
    This patch changes the behavior in usb_hcd_flush_endpoint() to pass the
    urbs from the tail of the list, to avoid any unnecessary actions in an
    controller driver.
    
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    liubiin authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    488f4d8 View commit details
    Browse the repository at this point in the history
  46. usb: quirks: Add no-lpm quirk for Moshi USB to Ethernet Adapter

    commit 7496cfe upstream.
    
    Moshi USB to Ethernet Adapter internally uses a Genesys Logic hub to
    connect to Realtek r8153.
    
    The Realtek r8153 ethernet does not work on the internal hub, no-lpm quirk
    can make it work.
    
    Since another r8153 dongle at my hand does not have the issue, so add
    the quirk to the Genesys Logic hub instead.
    
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    khfeng authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    73e7a2d View commit details
    Browse the repository at this point in the history
  47. usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume

    commit e788787 upstream.
    
    Certain HP keyboards would keep inputting a character automatically which
    is the wake-up key after S3 resume
    
    On some AMD platforms USB host fails to respond (by holding resume-K) to
    USB device (an HP keyboard) resume request within 1ms (TURSM) and ensures
    that resume is signaled for at least 20 ms (TDRSMDN), which is defined in
    USB 2.0 spec. The result is that the keyboard is out of function.
    
    In SNPS USB design, the host responds to the resume request only after
    system gets back to S0 and the host gets to functional after the internal
    HW restore operation that is more than 1 second after the initial resume
    request from the USB device.
    
    As a workaround for specific keyboard ID(HP Keyboards), applying port reset
    after resume when the keyboard is plugged in.
    
    Signed-off-by: Sandeep Singh <Sandeep.Singh@amd.com>
    Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
    cc: Nehal Shah <Nehal-bakulchandra.Shah@amd.com>
    Reviewed-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Sandeep Singh authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    b23ef7b View commit details
    Browse the repository at this point in the history
  48. PCI: Protect pci_error_handlers->reset_notify() usage with device_lock()

    commit b014e96 upstream.
    
    Every method in struct device_driver or structures derived from it like
    struct pci_driver MUST provide exclusion vs the driver's ->remove() method,
    usually by using device_lock().
    
    Protect use of pci_error_handlers->reset_notify() by holding the device
    lock while calling it.
    
    Note:
    
      - pci_dev_lock() calls device_lock() in addition to blocking user-space
        config accesses.
    
      - pci_err_handlers->reset_notify() is used inside
        pci_dev_save_and_disable() and pci_dev_restore().  We could hold the
        device lock directly in pci_reset_notify(), but we expand the region
        since we have several calls following each other.
    
    Without this, ->reset_notify() may race with ->remove() calls, which can be
    easily triggered in NVMe.
    
    [bhelgaas: changelog, add pci_reset_notify() comment]
    [bhelgaas: fold in fix from Dan Carpenter <dan.carpenter@oracle.com>:
    http://lkml.kernel.org/r/20170701135323.x5vaj4e2wcs2mcro@mwanda]
    Link: http://lkml.kernel.org/r/20170601111039.8913-2-hch@lst.de
    Reported-by: Rakesh Pandit <rakesh@tuxera.com>
    Tested-by: Rakesh Pandit <rakesh@tuxera.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Christoph Hellwig authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    31e7193 View commit details
    Browse the repository at this point in the history
  49. PCI: Remove __pci_dev_reset() and pci_dev_reset()

    commit 52354b9 upstream.
    
    Implement the reset probing / reset chain directly in
    __pci_probe_reset_function() and __pci_reset_function_locked()
    respectively.
    
    Link: http://lkml.kernel.org/r/20170601111039.8913-4-hch@lst.de
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Christoph Hellwig authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    c71305e View commit details
    Browse the repository at this point in the history
  50. PCI: Add pci_reset_function_locked()

    commit a477b9c upstream.
    
    The implementation of PCI workarounds may require that the device is reset
    from its probe function.  This implies that the PCI device lock is already
    held, and makes calling pci_reset_function() impossible (since it will
    itself try to take that lock).
    
    Add pci_reset_function_locked(), which is the equivalent of
    pci_reset_function(), except that it requires the PCI device lock to be
    already held by the caller.
    
    Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    [bhelgaas: folded in fix for conflict with 52354b9 ("PCI: Remove
    __pci_dev_reset() and pci_dev_reset()")]
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Marc Zyngier authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    ea9647c View commit details
    Browse the repository at this point in the history
  51. xhci: Reset Renesas uPD72020x USB controller for 32-bit DMA issue

    commit 8466489 upstream.
    
    The Renesas uPD72020x XHCI controller seems to suffer from a really
    annoying bug, where it may retain some of its DMA programming across a XHCI
    reset, and despite the driver correctly programming new DMA addresses.
    This is visible if the device has been using 64-bit DMA addresses, and is
    then switched to using 32-bit DMA addresses.  The top 32 bits of the
    address (now zero) are ignored are replaced by the 32 bits from the
    *previous* programming.  Sticking with 64-bit DMA always works, but doesn't
    seem very appropriate.
    
    A PCI reset of the device restores the normal functionality, which is done
    at probe time.  Unfortunately, this has to be done before any quirk has
    been discovered, hence the intrusive nature of the fix.
    
    Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Marc Zyngier authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    0e1f0ea View commit details
    Browse the repository at this point in the history
  52. iio: adc: vf610_adc: Fix VALT selection value for REFSEL bits

    commit d466d3c upstream.
    
    In order to select the alternate voltage reference pair (VALTH/VALTL), the
    right value for the REFSEL field in the ADCx_CFG register is "01", leading
    to 0x800 as register mask. See section 8.2.6.4 in the reference manual[1].
    
    [1] http://www.nxp.com/docs/en/reference-manual/VFXXXRM.pdf
    
    Fixes: a775427 ("iio:adc:imx: add Freescale Vybrid vf610 adc driver")
    Signed-off-by: Stefan-Gabriel Mirea <stefan-gabriel.mirea@nxp.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stefan-Gabriel Mirea authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    e8a1eda View commit details
    Browse the repository at this point in the history
  53. pnfs/blocklayout: require 64-bit sector_t

    commit 8a9d6e9 upstream.
    
    The blocklayout code does not compile cleanly for a 32-bit sector_t,
    and also has no reliable checks for devices sizes, which makes it
    unsafe to use with a kernel that doesn't support large block devices.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reported-by: Arnd Bergmann <arnd@arndb.de>
    Fixes: 5c83746 ("pnfs/blocklayout: in-kernel GETDEVICEINFO XDR parsing")
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Christoph Hellwig authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    cc7f330 View commit details
    Browse the repository at this point in the history
  54. pinctrl: cherryview: Add Setzer models to the Chromebook DMI quirk

    commit 2d80bd3 upstream.
    
    Add one more model to the Chromebook DMI quirk to make it working again.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=194945
    Fixes: 2a8209f ("pinctrl: cherryview: Extend the Chromebook DMI quirk to Intel_Strago systems")
    Reported-by: mail@abhishek.geek.nz
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    andy-shev authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    c75a48e View commit details
    Browse the repository at this point in the history
  55. pinctrl: sunxi: add a missing function of A10/A20 pinctrl driver

    commit d81ece7 upstream.
    
    The PH16 pin has a function with mux id 0x5, which is the DET pin of the
    "sim" (smart card reader) IP block.
    
    This function is missing in old versions of A10/A20 SoCs' datasheets and
    user manuals, so it's also missing in the old drivers. The newest A10
    Datasheet V1.70 and A20 Datasheet V1.41 contain this pin function, and
    it's discovered during implementing R40 pinctrl driver.
    
    Add it to the driver. As we now merged A20 pinctrl driver to the A10
    one, we need to only fix the A10 driver now.
    
    Fixes: f2821b1 ("pinctrl: sunxi: Move Allwinner A10 pinctrl
    driver to a driver of its own")
    
    Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
    Reviewed-by: Chen-Yu Tsai <wens@csie.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Icenowy authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    5fa72b4 View commit details
    Browse the repository at this point in the history
  56. pinctrl: intel: merrifield: Correct UART pin lists

    commit 5d99613 upstream.
    
    UART pin lists consist GPIO numbers which is simply wrong.
    Replace it by pin numbers.
    
    Fixes: 4e80c8f ("pinctrl: intel: Add Intel Merrifield pin controller support")
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    andy-shev authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    be9f658 View commit details
    Browse the repository at this point in the history
  57. pinctrl: uniphier: fix WARN_ON() of pingroups dump on LD11

    commit 9592bc2 upstream.
    
    The pingroups dump of debugfs hits WARN_ON() in pinctrl_groups_show().
    Filling non-existing ports with '-1' turned out a bad idea.
    
    Fixes: 70f2f9c ("pinctrl: uniphier: add UniPhier PH1-LD11 pinctrl driver")
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    masahir0y authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    338ac5d View commit details
    Browse the repository at this point in the history
  58. pinctrl: uniphier: fix WARN_ON() of pingroups dump on LD20

    commit 1bd303d upstream.
    
    The pingroups dump of debugfs hits WARN_ON() in pinctrl_groups_show().
    Filling non-existing ports with '-1' turned out a bad idea.
    
    Fixes: 336306e ("pinctrl: uniphier: add UniPhier PH1-LD20 pinctrl driver")
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    masahir0y authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    21d22df View commit details
    Browse the repository at this point in the history
  59. pinctrl: samsung: Remove bogus irq_[un]mask from resource management

    commit 3fa53ec upstream.
    
    The irq chip callbacks irq_request/release_resources() have absolutely no
    business with masking and unmasking the irq.
    
    The core code unmasks the interrupt after complete setup and masks it
    before invoking irq_release_resources().
    
    The unmask is actually harmful as it happens before the interrupt is
    completely initialized in __setup_irq().
    
    Remove it.
    
    Fixes: f6a8249 ("pinctrl: exynos: Lock GPIOs as interrupts when used as EINTs")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Krzysztof Kozlowski <krzk@kernel.org>
    Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Cc: Kukjin Kim <kgene@kernel.org>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-samsung-soc@vger.kernel.org
    Cc: linux-gpio@vger.kernel.org
    Acked-by: Tomasz Figa <tomasz.figa@gmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    KAGA-KOKO authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    155407b View commit details
    Browse the repository at this point in the history
  60. pinctrl: meson-gxbb: Add missing GPIODV_18 pin entry

    commit 34e6180 upstream.
    
    GPIODV_18 entry was missing in the original driver push.
    
    Fixes: 468c234 ("pinctrl: amlogic: Add support for Amlogic Meson GXBB SoC")
    Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
    Reviewed-by: Jerome Brunet <jbrunet@baylibre.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    superna9999 authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    d7b28b4 View commit details
    Browse the repository at this point in the history
  61. pinctrl: meson-gxl: Add missing GPIODV_18 pin entry

    commit aa95569 upstream.
    
    GPIODV_18 entry was missing in the original driver push.
    
    Fixes: 0f15f50 ("pinctrl: meson: Add GXL pinctrl definitions")
    Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
    Reviewed-by: Jerome Brunet <jbrunet@baylibre.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    superna9999 authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    8889864 View commit details
    Browse the repository at this point in the history
  62. MIPS: DEC: Fix an int-handler.S CPU_DADDI_WORKAROUNDS regression

    commit 68fe556 upstream.
    
    Fix a commit 3021773 ("MIPS: DEC: Avoid la pseudo-instruction in
    delay slots") regression and remove assembly errors:
    
    arch/mips/dec/int-handler.S: Assembler messages:
    arch/mips/dec/int-handler.S:162: Error: Macro used $at after ".set noat"
    arch/mips/dec/int-handler.S:163: Error: Macro used $at after ".set noat"
    arch/mips/dec/int-handler.S:229: Error: Macro used $at after ".set noat"
    arch/mips/dec/int-handler.S:230: Error: Macro used $at after ".set noat"
    
    triggering with with the CPU_DADDI_WORKAROUNDS option set and the DADDIU
    instruction.  This is because with that option in place the instruction
    becomes a macro, which expands to an LI/DADDU (or actually ADDIU/DADDU)
    sequence that uses $at as a temporary register.
    
    With CPU_DADDI_WORKAROUNDS we only support `-msym32' compilation though,
    and this is already enforced in arch/mips/Makefile, so choose the 32-bit
    expansion variant for the supported configurations and then replace the
    64-bit variant with #error just in case.
    
    Fixes: 3021773 ("MIPS: DEC: Avoid la pseudo-instruction in delay slots")
    Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/16893/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Maciej W. Rozycki authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    0a5a16f View commit details
    Browse the repository at this point in the history
  63. Revert "MIPS: Don't unnecessarily include kmalloc.h into <asm/cache.h>."

    commit ae5b067 upstream.
    
    Commit 296e46d ("MIPS: Don't unnecessarily include kmalloc.h into
    <asm/cache.h>.") claimed that the inclusion of the machine's kmalloc.h
    from asm/cache.h is unnecessary, but this is not true.
    
    Without including kmalloc.h we don't get a definition for
    ARCH_DMA_MINALIGN, which means we no longer suitably align DMA. Further
    to this the definition of ARCH_KMALLOC_MINALIGN provided by linux/slab.h
    ends up being set to the alignment of an unsigned long long value rather
    than to ARCH_DMA_MINALIGN, which means that buffers allocated using
    kmalloc may no longer be safely aligned for use with DMA.
    
    Fix this by re-adding the include of kmalloc.h in asm/cache.h. This
    reverts commit 296e46d ("MIPS: Don't unnecessarily include
    kmalloc.h into <asm/cache.h>.")
    
    Signed-off-by: Paul Burton <paul.burton@imgtec.com>
    Fixes: 296e46d ("MIPS: Don't unnecessarily include kmalloc.h into <asm/cache.h>.")
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/16895/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    paulburton authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    bc60edb View commit details
    Browse the repository at this point in the history
  64. MIPS: Octeon: Fix broken EDAC driver.

    commit 81a67e5 upstream.
    
    Commit "MIPS: Octeon: Remove unused L2C types and macros." broke the
    the EDAC driver. Bring back 'cvmx-l2d-defs.h' file and the missing
    types for L2C. Fixes: 15f6847 ("MIPS: Octeon: Remove unused L2C
    types and macros.")
    
    Fixes: 15f6847 ("MIPS: Octeon: Remove unused L2C types and macros.")
    Signed-off-by: Steven J. Hill <steven.hill@cavium.com>
    Reviewed-by: James Hogan <james.hogan@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/16906/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Steven J. Hill authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    d40a545 View commit details
    Browse the repository at this point in the history
  65. powerpc: Fix /proc/cpuinfo revision for POWER9 DD2

    commit 64ebb9a upstream.
    
    The P9 PVR bits 12-15 don't indicate a revision but instead different
    chip configurations.  From BookIV we have:
       Bits      Configuration
        0 :    Scale out 12 cores
        1 :    Scale out 24 cores
        2 :    Scale up  12 cores
        3 :    Scale up  24 cores
    
    DD1 doesn't use this but DD2 does. Linux will mostly use the "Scale
    out 24 core" configuration (ie. SMT4 not SMT8) which results in a PVR
    of 0x004e1200. The reported revision in /proc/cpuinfo is hence
    reported incorrectly as "18.0".
    
    This patch fixes this to mask off only the relevant bits for the major
    revision (ie. bits 8-11) for POWER9.
    
    Signed-off-by: Michael Neuling <mikey@neuling.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    mikey authored and gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    1d4efdd View commit details
    Browse the repository at this point in the history
  66. Linux 4.12.8

    gregkh committed Aug 16, 2017
    Configuration menu
    Copy the full SHA
    a0fb654 View commit details
    Browse the repository at this point in the history

Commits on Aug 17, 2017

  1. Merge tag 'v4.12.8' into 4.12

    This is the 4.12.8 stable release
    xanmod committed Aug 17, 2017
    Configuration menu
    Copy the full SHA
    71912b3 View commit details
    Browse the repository at this point in the history
  2. 4.12.8-xanmod9

    xanmod committed Aug 17, 2017
    Configuration menu
    Copy the full SHA
    9a28c55 View commit details
    Browse the repository at this point in the history

Commits on Aug 25, 2017

  1. audit: Fix use after free in audit_remove_watch_rule()

    commit d76036a upstream.
    
    audit_remove_watch_rule() drops watch's reference to parent but then
    continues to work with it. That is not safe as parent can get freed once
    we drop our reference. The following is a trivial reproducer:
    
    mount -o loop image /mnt
    touch /mnt/file
    auditctl -w /mnt/file -p wax
    umount /mnt
    auditctl -D
    <crash in fsnotify_destroy_mark()>
    
    Grab our own reference in audit_remove_watch_rule() earlier to make sure
    mark does not get freed under us.
    
    Reported-by: Tony Jones <tonyj@suse.de>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Tested-by: Tony Jones <tonyj@suse.de>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jankara authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    dfaf892 View commit details
    Browse the repository at this point in the history
  2. parisc: pci memory bar assignment fails with 64bit kernels on dino/cujo

    commit 4098116 upstream.
    
    For 64bit kernels the lmmio_space_offset of the host bridge window
    isn't set correctly on systems with dino/cujo PCI host bridges.
    This leads to not assigned memory bars and failing drivers, which
    need to use these bars.
    
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Acked-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    tsbogend authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    0a76684 View commit details
    Browse the repository at this point in the history
  3. crypto: ixp4xx - Fix error handling path in 'aead_perform()'

    commit 2838957 upstream.
    
    In commit 0f987e2, the source processing has been moved in front of
    the destination processing, but the error handling path has not been
    modified accordingly.
    Free resources in the correct order to avoid some leaks.
    
    Fixes: 0f987e2 ("crypto: ixp4xx - Fix false lastlen uninitialised warning")
    Reported-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    herbertx authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    f161553 View commit details
    Browse the repository at this point in the history
  4. crypto: x86/sha1 - Fix reads beyond the number of blocks passed

    commit 8861249 upstream.
    
    It was reported that the sha1 AVX2 function(sha1_transform_avx2) is
    reading ahead beyond its intended data, and causing a crash if the next
    block is beyond page boundary:
    http://marc.info/?l=linux-crypto-vger&m=149373371023377
    
    This patch makes sure that there is no overflow for any buffer length.
    
    It passes the tests written by Jan Stancek that revealed this problem:
    https://github.com/jstancek/sha1-avx2-crash
    
    I have re-enabled sha1-avx2 by reverting commit
    b82ce24
    
    Fixes: b82ce24 ("crypto: sha1-ssse3 - Disable avx2")
    Originally-by: Ilya Albrekht <ilya.albrekht@intel.com>
    Tested-by: Jan Stancek <jstancek@redhat.com>
    Signed-off-by: Megha Dey <megha.dey@linux.intel.com>
    Reported-by: Jan Stancek <jstancek@redhat.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    megha.dey@linux.intel.com authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    aac1a12 View commit details
    Browse the repository at this point in the history
  5. drm/i915: Perform an invalidate prior to executing golden renderstate

    commit a0125a9 upstream.
    
    As we may have just bound the renderstate into the GGTT for execution, we
    need to ensure that the GTT TLB are also flushed.
    
    On snb-gt2, this would cause a random GPU hang at the start of a new
    context (e.g. boot) and on snb-gt1, it was causing the renderstate batch
    to take ~10s. It was the GPU hang that revealed the truth, as the CS
    gleefully executed beyond the end of the golden renderstate batch, a good
    indicator for a GTT TLB miss.
    
    Fixes: 20fe17a ("drm/i915: Remove redundant TLB invalidate on switching contexts")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20170808131904.1385-1-chris@chris-wilson.co.uk
    Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Cc: <drm-intel-fixes@lists.freedesktop.org> # v4.12-rc1+
    (cherry picked from commit 802673d)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ickle authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    2149506 View commit details
    Browse the repository at this point in the history
  6. drm/amdgpu: save list length when fence is signaled

    commit 7a7c286 upstream.
    
    update the list first to avoid redundant checks.
    
    Signed-off-by: Chunming Zhou <David1.Zhou@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    amingriyue authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    b5e042f View commit details
    Browse the repository at this point in the history
  7. Input: elan_i2c - add ELAN0608 to the ACPI table

    commit 1874064 upstream.
    
    Similar to commit 722c5ac ("Input: elan_i2c - add ELAN0605 to the
    ACPI table"), ELAN0608 should be handled by elan_i2c.
    
    This touchpad can be found in Lenovo ideapad 320-14IKB.
    
    BugLink: https://bugs.launchpad.net/bugs/1708852
    
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    khfeng authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    04d0645 View commit details
    Browse the repository at this point in the history
  8. Input: elan_i2c - Add antoher Lenovo ACPI ID for upcoming Lenovo NB

    commit 7698869 upstream.
    
    Add 2 new IDs (ELAN0609 and ELAN060B) to the list of ACPI IDs that should
    be handled by the driver.
    
    Signed-off-by: KT Liao <kt.liao@emc.com.tw>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    KT Liao authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    5f46f33 View commit details
    Browse the repository at this point in the history
  9. md: fix test in md_write_start()

    commit 81fe48e upstream.
    
    md_write_start() needs to clear the in_sync flag is it is set, or if
    there might be a race with set_in_sync() such that the later will
    set it very soon.  In the later case it is sufficient to take the
    spinlock to synchronize with set_in_sync(), and then set the flag
    if needed.
    
    The current test is incorrect.
    It should be:
      if "flag is set" or "race is possible"
    
    "flag is set" is trivially "mddev->in_sync".
    "race is possible" should be tested by "mddev->sync_checkers".
    
    If sync_checkers is 0, then there can be no race.  set_in_sync() will
    wait in percpu_ref_switch_to_atomic_sync() for an RCU grace period,
    and as md_write_start() holds the rcu_read_lock(), set_in_sync() will
    be sure ot see the update to writes_pending.
    
    If sync_checkers is > 0, there could be race.  If md_write_start()
    happened entirely between
    		if (!mddev->in_sync &&
    		    percpu_ref_is_zero(&mddev->writes_pending)) {
    and
    			mddev->in_sync = 1;
    in set_in_sync(), then it would not see that is_sync had been set,
    and set_in_sync() would not see that writes_pending had been
    incremented.
    
    This bug means that in_sync is sometimes not set when it should be.
    Consequently there is a small chance that the array will be marked as
    "clean" when in fact it is inconsistent.
    
    Fixes: 4ad23a9 ("MD: use per-cpu counter for writes_pending")
    Signed-off-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    NeilBrown authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    febaf83 View commit details
    Browse the repository at this point in the history
  10. md: always clear ->safemode when md_check_recovery gets the mddev lock.

    commit 33182d1 upstream.
    
    If ->safemode == 1, md_check_recovery() will try to get the mddev lock
    and perform various other checks.
    If mddev->in_sync is zero, it will call set_in_sync, and clear
    ->safemode.  However if mddev->in_sync is not zero, ->safemode will not
    be cleared.
    
    When md_check_recovery() drops the mddev lock, the thread is woken
    up again.  Normally it would just check if there was anything else to
    do, find nothing, and go to sleep.  However as ->safemode was not
    cleared, it will take the mddev lock again, then wake itself up
    when unlocking.
    
    This results in an infinite loop, repeatedly calling
    md_check_recovery(), which RCU or the soft-lockup detector
    will eventually complain about.
    
    Prior to commit 4ad23a9 ("MD: use per-cpu counter for
    writes_pending"), safemode would only be set to one when the
    writes_pending counter reached zero, and would be cleared again
    when writes_pending is incremented.  Since that patch, safemode
    is set more freely, but is not reliably cleared.
    
    So in md_check_recovery() clear ->safemode before checking ->in_sync.
    
    Fixes: 4ad23a9 ("MD: use per-cpu counter for writes_pending")
    Reported-by: Dominik Brodowski <linux@dominikbrodowski.net>
    Reported-by: David R <david@unsolicited.net>
    Signed-off-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    NeilBrown authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    7987c40 View commit details
    Browse the repository at this point in the history
  11. MD: not clear ->safemode for external metadata array

    commit afc1f55 upstream.
    
    ->safemode should be triggered by mdadm for external metadaa array, otherwise
    array's state confuses mdadm.
    
    Fixes: 33182d1(md: always clear ->safemode when md_check_recovery gets the mddev lock.)
    Cc: NeilBrown <neilb@suse.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    shligit authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    6a280cd View commit details
    Browse the repository at this point in the history
  12. ALSA: seq: 2nd attempt at fixing race creating a queue

    commit 7e1d90f upstream.
    
    commit 4842e98 ("ALSA: seq: Fix race at
    creating a queue") attempted to fix a race reported by syzkaller. That
    fix has been described as follows:
    
    "
    When a sequencer queue is created in snd_seq_queue_alloc(),it adds the
    new queue element to the public list before referencing it.  Thus the
    queue might be deleted before the call of snd_seq_queue_use(), and it
    results in the use-after-free error, as spotted by syzkaller.
    
    The fix is to reference the queue object at the right time.
    "
    
    Even with that fix in place, syzkaller reported a use-after-free error.
    It specifically pointed to the last instruction "return q->queue" in
    snd_seq_queue_alloc(). The pointer q is being used after kfree() has
    been called on it.
    
    It turned out that there is still a small window where a race can
    happen. The window opens at
    snd_seq_ioctl_create_queue()->snd_seq_queue_alloc()->queue_list_add()
    and closes at
    snd_seq_ioctl_create_queue()->queueptr()->snd_use_lock_use(). Between
    these two calls, a different thread could delete the queue and possibly
    re-create a different queue in the same location in queue_list.
    
    This change prevents this situation by calling snd_use_lock_use() from
    snd_seq_queue_alloc() prior to calling queue_list_add(). It is then the
    caller's responsibility to call snd_use_lock_free(&q->use_lock).
    
    Fixes: 4842e98 ("ALSA: seq: Fix race at creating a queue")
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Daniel Mentz <danielmentz@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    danielmentzgoogle authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    8f05296 View commit details
    Browse the repository at this point in the history
  13. ALSA: usb-audio: Apply sample rate quirk to Sennheiser headset

    commit a8e800f upstream.
    
    A Senheisser headset requires the typical sample-rate quirk for
    avoiding spurious errors from inquiring the current sample rate like:
     usb 1-1: 2:1: cannot get freq at ep 0x4
     usb 1-1: 3:1: cannot get freq at ep 0x83
    
    The USB ID 1395:740a has to be added to the entries in
    snd_usb_get_sample_rate_quirk().
    
    Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1052580
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    tiwai authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    b33fcbb View commit details
    Browse the repository at this point in the history
  14. ALSA: usb-audio: Add mute TLV for playback volumes on C-Media devices

    commit 0f174b3 upstream.
    
    C-Media devices (at least some models) mute the playback stream when
    volumes are set to the minimum value.  But this isn't informed via TLV
    and the user-space, typically PulseAudio, gets confused as if it's
    still played in a low volume.
    
    This patch adds the new flag, min_mute, to struct usb_mixer_elem_info
    for indicating that the mixer element is with the minimum-mute volume.
    This flag is set for known C-Media devices in
    snd_usb_mixer_fu_apply_quirk() in turn.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=196669
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    tiwai authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    c482b08 View commit details
    Browse the repository at this point in the history
  15. ALSA: usb-audio: add DSD support for new Amanero PID

    commit ed993c6 upstream.
    
    Add DSD support for new Amanero Combo384 firmware version with a new
    PID. This firmware uses DSD_U32_BE.
    
    Fixes: 3eff682 ("ALSA: usb-audio: Support both DSD LE/BE Amanero firmware versions")
    Signed-off-by: Jussi Laako <jussi@sonarnerd.net>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jlaako authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    c241387 View commit details
    Browse the repository at this point in the history
  16. mm: discard memblock data later

    commit 3010f87 upstream.
    
    There is existing use after free bug when deferred struct pages are
    enabled:
    
    The memblock_add() allocates memory for the memory array if more than
    128 entries are needed.  See comment in e820__memblock_setup():
    
      * The bootstrap memblock region count maximum is 128 entries
      * (INIT_MEMBLOCK_REGIONS), but EFI might pass us more E820 entries
      * than that - so allow memblock resizing.
    
    This memblock memory is freed here:
            free_low_memory_core_early()
    
    We access the freed memblock.memory later in boot when deferred pages
    are initialized in this path:
    
            deferred_init_memmap()
                    for_each_mem_pfn_range()
                      __next_mem_pfn_range()
                        type = &memblock.memory;
    
    One possible explanation for why this use-after-free hasn't been hit
    before is that the limit of INIT_MEMBLOCK_REGIONS has never been
    exceeded at least on systems where deferred struct pages were enabled.
    
    Tested by reducing INIT_MEMBLOCK_REGIONS down to 4 from the current 128,
    and verifying in qemu that this code is getting excuted and that the
    freed pages are sane.
    
    Link: http://lkml.kernel.org/r/1502485554-318703-2-git-send-email-pasha.tatashin@oracle.com
    Fixes: 7e18adb ("mm: meminit: initialise remaining struct pages in parallel with kswapd")
    Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>
    Reviewed-by: Steven Sistare <steven.sistare@oracle.com>
    Reviewed-by: Daniel Jordan <daniel.m.jordan@oracle.com>
    Reviewed-by: Bob Picco <bob.picco@oracle.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Pavel Tatashin authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    4d45f00 View commit details
    Browse the repository at this point in the history
  17. slub: fix per memcg cache leak on css offline

    commit f6ba488 upstream.
    
    To avoid a possible deadlock, sysfs_slab_remove() schedules an
    asynchronous work to delete sysfs entries corresponding to the kmem
    cache.  To ensure the cache isn't freed before the work function is
    called, it takes a reference to the cache kobject.  The reference is
    supposed to be released by the work function.
    
    However, the work function (sysfs_slab_remove_workfn()) does nothing in
    case the cache sysfs entry has already been deleted, leaking the kobject
    and the corresponding cache.
    
    This may happen on a per memcg cache destruction, because sysfs entries
    of a per memcg cache are deleted on memcg offline if the cache is empty
    (see __kmemcg_cache_deactivate()).
    
    The kmemleak report looks like this:
    
      unreferenced object 0xffff9f798a79f540 (size 32):
        comm "kworker/1:4", pid 15416, jiffies 4307432429 (age 28687.554s)
        hex dump (first 32 bytes):
          6b 6d 61 6c 6c 6f 63 2d 31 36 28 31 35 39 39 3a  kmalloc-16(1599:
          6e 65 77 72 6f 6f 74 29 00 23 6b c0 ff ff ff ff  newroot).#k.....
        backtrace:
           kmemleak_alloc+0x4a/0xa0
           __kmalloc_track_caller+0x148/0x2c0
           kvasprintf+0x66/0xd0
           kasprintf+0x49/0x70
           memcg_create_kmem_cache+0xe6/0x160
           memcg_kmem_cache_create_func+0x20/0x110
           process_one_work+0x205/0x5d0
           worker_thread+0x4e/0x3a0
           kthread+0x109/0x140
           ret_from_fork+0x2a/0x40
      unreferenced object 0xffff9f79b6136840 (size 416):
        comm "kworker/1:4", pid 15416, jiffies 4307432429 (age 28687.573s)
        hex dump (first 32 bytes):
          40 fb 80 c2 3e 33 00 00 00 00 00 40 00 00 00 00  @...>3.....@....
          00 00 00 00 00 00 00 00 10 00 00 00 10 00 00 00  ................
        backtrace:
           kmemleak_alloc+0x4a/0xa0
           kmem_cache_alloc+0x128/0x280
           create_cache+0x3b/0x1e0
           memcg_create_kmem_cache+0x118/0x160
           memcg_kmem_cache_create_func+0x20/0x110
           process_one_work+0x205/0x5d0
           worker_thread+0x4e/0x3a0
           kthread+0x109/0x140
           ret_from_fork+0x2a/0x40
    
    Fix the leak by adding the missing call to kobject_put() to
    sysfs_slab_remove_workfn().
    
    Link: http://lkml.kernel.org/r/20170812181134.25027-1-vdavydov.dev@gmail.com
    Fixes: 3b7b314 ("slub: make sysfs file removal asynchronous")
    Signed-off-by: Vladimir Davydov <vdavydov.dev@gmail.com>
    Reported-by: Andrei Vagin <avagin@gmail.com>
    Tested-by: Andrei Vagin <avagin@gmail.com>
    Acked-by: Tejun Heo <tj@kernel.org>
    Acked-by: David Rientjes <rientjes@google.com>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    locker authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    889a170 View commit details
    Browse the repository at this point in the history
  18. mm: fix double mmap_sem unlock on MMF_UNSTABLE enforced SIGBUS

    commit 5b53a6e upstream.
    
    Tetsuo Handa has noticed that MMF_UNSTABLE SIGBUS path in
    handle_mm_fault causes a lockdep splat
    
      Out of memory: Kill process 1056 (a.out) score 603 or sacrifice child
      Killed process 1056 (a.out) total-vm:4268108kB, anon-rss:2246048kB, file-rss:0kB, shmem-rss:0kB
      a.out (1169) used greatest stack depth: 11664 bytes left
      DEBUG_LOCKS_WARN_ON(depth <= 0)
      ------------[ cut here ]------------
      WARNING: CPU: 6 PID: 1339 at kernel/locking/lockdep.c:3617 lock_release+0x172/0x1e0
      CPU: 6 PID: 1339 Comm: a.out Not tainted 4.13.0-rc3-next-20170803+ #142
      Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 07/02/2015
      RIP: 0010:lock_release+0x172/0x1e0
      Call Trace:
         up_read+0x1a/0x40
         __do_page_fault+0x28e/0x4c0
         do_page_fault+0x30/0x80
         page_fault+0x28/0x30
    
    The reason is that the page fault path might have dropped the mmap_sem
    and returned with VM_FAULT_RETRY.  MMF_UNSTABLE check however rewrites
    the error path to VM_FAULT_SIGBUS and we always expect mmap_sem taken in
    that path.  Fix this by taking mmap_sem when VM_FAULT_RETRY is held in
    the MMF_UNSTABLE path.
    
    We cannot simply add VM_FAULT_SIGBUS to the existing error code because
    all arch specific page fault handlers and g-u-p would have to learn a
    new error code combination.
    
    Link: http://lkml.kernel.org/r/20170807113839.16695-2-mhocko@kernel.org
    Fixes: 3f70dc3 ("mm: make sure that kthreads will not refault oom reaped memory")
    Reported-by: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Acked-by: David Rientjes <rientjes@google.com>
    Cc: Andrea Argangeli <andrea@kernel.org>
    Cc: "Kirill A. Shutemov" <kirill@shutemov.name>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Wenwei Tao <wenwei.tww@alibaba-inc.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Michal Hocko authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    76e8fe0 View commit details
    Browse the repository at this point in the history
  19. mm/cma_debug.c: fix stack corruption due to sprintf usage

    commit da094e4 upstream.
    
    name[] in cma_debugfs_add_one() can only accommodate 16 chars including
    NULL to store sprintf output.  It's common for cma device name to be
    larger than 15 chars.  This can cause stack corrpution.  If the gcc
    stack protector is turned on, this can cause a panic due to stack
    corruption.
    
    Below is one example trace:
    
      Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in:
      ffffff8e69a75730
      Call trace:
         dump_backtrace+0x0/0x2c4
         show_stack+0x20/0x28
         dump_stack+0xb8/0xf4
         panic+0x154/0x2b0
         print_tainted+0x0/0xc0
         cma_debugfs_init+0x274/0x290
         do_one_initcall+0x5c/0x168
         kernel_init_freeable+0x1c8/0x280
    
    Fix the short sprintf buffer in cma_debugfs_add_one() by using
    scnprintf() instead of sprintf().
    
    Link: http://lkml.kernel.org/r/1502446217-21840-1-git-send-email-guptap@codeaurora.org
    Fixes: f318dd0 ("cma: Store a name in the cma structure")
    Signed-off-by: Prakash Gupta <guptap@codeaurora.org>
    Acked-by: Laura Abbott <labbott@redhat.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Prakash Gupta authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    8b53b75 View commit details
    Browse the repository at this point in the history
  20. mm/mempolicy: fix use after free when calling get_mempolicy

    commit 73223e4 upstream.
    
    I hit a use after free issue when executing trinity and repoduced it
    with KASAN enabled.  The related call trace is as follows.
    
      BUG: KASan: use after free in SyS_get_mempolicy+0x3c8/0x960 at addr ffff8801f582d766
      Read of size 2 by task syz-executor1/798
    
      INFO: Allocated in mpol_new.part.2+0x74/0x160 age=3 cpu=1 pid=799
         __slab_alloc+0x768/0x970
         kmem_cache_alloc+0x2e7/0x450
         mpol_new.part.2+0x74/0x160
         mpol_new+0x66/0x80
         SyS_mbind+0x267/0x9f0
         system_call_fastpath+0x16/0x1b
      INFO: Freed in __mpol_put+0x2b/0x40 age=4 cpu=1 pid=799
         __slab_free+0x495/0x8e0
         kmem_cache_free+0x2f3/0x4c0
         __mpol_put+0x2b/0x40
         SyS_mbind+0x383/0x9f0
         system_call_fastpath+0x16/0x1b
      INFO: Slab 0xffffea0009cb8dc0 objects=23 used=8 fp=0xffff8801f582de40 flags=0x200000000004080
      INFO: Object 0xffff8801f582d760 @offset=5984 fp=0xffff8801f582d600
    
      Bytes b4 ffff8801f582d750: ae 01 ff ff 00 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a  ........ZZZZZZZZ
      Object ffff8801f582d760: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
      Object ffff8801f582d770: 6b 6b 6b 6b 6b 6b 6b a5                          kkkkkkk.
      Redzone ffff8801f582d778: bb bb bb bb bb bb bb bb                          ........
      Padding ffff8801f582d8b8: 5a 5a 5a 5a 5a 5a 5a 5a                          ZZZZZZZZ
      Memory state around the buggy address:
      ffff8801f582d600: fb fb fb fc fc fc fc fc fc fc fc fc fc fc fc fc
      ffff8801f582d680: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
      >ffff8801f582d700: fc fc fc fc fc fc fc fc fc fc fc fc fb fb fb fc
    
    !shared memory policy is not protected against parallel removal by other
    thread which is normally protected by the mmap_sem.  do_get_mempolicy,
    however, drops the lock midway while we can still access it later.
    
    Early premature up_read is a historical artifact from times when
    put_user was called in this path see https://lwn.net/Articles/124754/
    but that is gone since 8bccd85 ("[PATCH] Implement sys_* do_*
    layering in the memory policy layer.").  but when we have the the
    current mempolicy ref count model.  The issue was introduced
    accordingly.
    
    Fix the issue by removing the premature release.
    
    Link: http://lkml.kernel.org/r/1502950924-27521-1-git-send-email-zhongjiang@huawei.com
    Signed-off-by: zhong jiang <zhongjiang@huawei.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    xiongzhongjiang authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    6b2676e View commit details
    Browse the repository at this point in the history
  21. mm/vmalloc.c: don't unconditonally use __GFP_HIGHMEM

    commit 704b862 upstream.
    
    Commit 19809c2 ("mm, vmalloc: use __GFP_HIGHMEM implicitly") added
    use of __GFP_HIGHMEM for allocations.  vmalloc_32 may use
    GFP_DMA/GFP_DMA32 which does not play nice with __GFP_HIGHMEM and will
    trigger a BUG in gfp_zone.
    
    Only add __GFP_HIGHMEM if we aren't using GFP_DMA/GFP_DMA32.
    
    Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1482249
    Link: http://lkml.kernel.org/r/20170816220705.31374-1-labbott@redhat.com
    Fixes: 19809c2 ("mm, vmalloc: use __GFP_HIGHMEM implicitly")
    Signed-off-by: Laura Abbott <labbott@redhat.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    labbott authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    8ac8e1d View commit details
    Browse the repository at this point in the history
  22. mm: revert x86_64 and arm64 ELF_ET_DYN_BASE base changes

    commit c715b72 upstream.
    
    Moving the x86_64 and arm64 PIE base from 0x555555554000 to 0x000100000000
    broke AddressSanitizer.  This is a partial revert of:
    
      eab0953 ("binfmt_elf: use ELF_ET_DYN_BASE only for PIE")
      0244599 ("arm64: move ELF_ET_DYN_BASE to 4GB / 4MB")
    
    The AddressSanitizer tool has hard-coded expectations about where
    executable mappings are loaded.
    
    The motivation for changing the PIE base in the above commits was to
    avoid the Stack-Clash CVEs that allowed executable mappings to get too
    close to heap and stack.  This was mainly a problem on 32-bit, but the
    64-bit bases were moved too, in an effort to proactively protect those
    systems (proofs of concept do exist that show 64-bit collisions, but
    other recent changes to fix stack accounting and setuid behaviors will
    minimize the impact).
    
    The new 32-bit PIE base is fine for ASan (since it matches the ET_EXEC
    base), so only the 64-bit PIE base needs to be reverted to let x86 and
    arm64 ASan binaries run again.  Future changes to the 64-bit PIE base on
    these architectures can be made optional once a more dynamic method for
    dealing with AddressSanitizer is found.  (e.g.  always loading PIE into
    the mmap region for marked binaries.)
    
    Link: http://lkml.kernel.org/r/20170807201542.GA21271@beast
    Fixes: eab0953 ("binfmt_elf: use ELF_ET_DYN_BASE only for PIE")
    Fixes: 0244599 ("arm64: move ELF_ET_DYN_BASE to 4GB / 4MB")
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Reported-by: Kostya Serebryany <kcc@google.com>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    kees authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    aab425d View commit details
    Browse the repository at this point in the history
  23. xen: fix bio vec merging

    commit 462cdac upstream.
    
    The current test for bio vec merging is not fully accurate and can be
    tricked into merging bios when certain grant combinations are used.
    The result of these malicious bio merges is a bio that extends past
    the memory page used by any of the originating bios.
    
    Take into account the following scenario, where a guest creates two
    grant references that point to the same mfn, ie: grant 1 -> mfn A,
    grant 2 -> mfn A.
    
    These references are then used in a PV block request, and mapped by
    the backend domain, thus obtaining two different pfns that point to
    the same mfn, pfn B -> mfn A, pfn C -> mfn A.
    
    If those grants happen to be used in two consecutive sectors of a disk
    IO operation becoming two different bios in the backend domain, the
    checks in xen_biovec_phys_mergeable will succeed, because bfn1 == bfn2
    (they both point to the same mfn). However due to the bio merging,
    the backend domain will end up with a bio that expands past mfn A into
    mfn A + 1.
    
    Fix this by making sure the check in xen_biovec_phys_mergeable takes
    into account the offset and the length of the bio, this basically
    replicates whats done in __BIOVEC_PHYS_MERGEABLE using mfns (bus
    addresses). While there also remove the usage of
    __BIOVEC_PHYS_MERGEABLE, since that's already checked by the callers
    of xen_biovec_phys_mergeable.
    
    Reported-by: "Jan H. Schönherr" <jschoenh@amazon.de>
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    royger authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    c1cee60 View commit details
    Browse the repository at this point in the history
  24. ARM: dts: imx6qdl-nitrogen6_som2: fix PCIe reset

    commit c40bc54 upstream.
    
    Previous value was a bad copy of nitrogen6_max device tree.
    
    Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
    Fixes: 3faa1bb ("ARM: dts: imx: add Boundary Devices Nitrogen6_SOM2 support")
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    gibsson authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    e88bdec View commit details
    Browse the repository at this point in the history
  25. blk-mq-pci: add a fallback when pci_irq_get_affinity returns NULL

    commit c005390 upstream.
    
    While pci_irq_get_affinity should never fail for SMP kernel that
    implement the affinity mapping, it will always return NULL in the
    UP case, so provide a fallback mapping of all queues to CPU 0 in
    that case.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Omar Sandoval <osandov@fb.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Christoph Hellwig authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    a77b5b8 View commit details
    Browse the repository at this point in the history
  26. powerpc: Fix VSX enabling/flushing to also test MSR_FP and MSR_VEC

    commit 5a69aec upstream.
    
    VSX uses a combination of the old vector registers, the old FP
    registers and new "second halves" of the FP registers.
    
    Thus when we need to see the VSX state in the thread struct
    (flush_vsx_to_thread()) or when we'll use the VSX in the kernel
    (enable_kernel_vsx()) we need to ensure they are all flushed into
    the thread struct if either of them is individually enabled.
    
    Unfortunately we only tested if the whole VSX was enabled, not if they
    were individually enabled.
    
    Fixes: 72cd7b4 ("powerpc: Uncomment and make enable_kernel_vsx() routine available")
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ozbenh authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    bd876f3 View commit details
    Browse the repository at this point in the history
  27. xen-blkfront: use a right index when checking requests

    commit b15bd8c upstream.
    
    Since commit d05d7f4 ("Merge branch 'for-4.8/core' of
    git://git.kernel.dk/linux-block") and 3fc9d69 ("Merge branch
    'for-4.8/drivers' of git://git.kernel.dk/linux-block"), blkfront_resume()
    has been using an index for iterating ring_info to check request when
    iterating blk_shadow in an inner loop. This seems to have been
    accidentally introduced during the massive rewrite of the block layer
    macros in the commits.
    
    This may cause crash like this:
    
    [11798.057074] BUG: unable to handle kernel NULL pointer dereference at 0000000000000048
    [11798.058832] IP: [<ffffffff814411fa>] blkfront_resume+0x10a/0x610
    ....
    [11798.061063] Call Trace:
    [11798.061063]  [<ffffffff8139ce93>] xenbus_dev_resume+0x53/0x140
    [11798.061063]  [<ffffffff8139ce40>] ? xenbus_dev_probe+0x150/0x150
    [11798.061063]  [<ffffffff813f359e>] dpm_run_callback+0x3e/0x110
    [11798.061063]  [<ffffffff813f3a08>] device_resume+0x88/0x190
    [11798.061063]  [<ffffffff813f4cc0>] dpm_resume+0x100/0x2d0
    [11798.061063]  [<ffffffff813f5221>] dpm_resume_end+0x11/0x20
    [11798.061063]  [<ffffffff813950a8>] do_suspend+0xe8/0x1a0
    [11798.061063]  [<ffffffff813954bd>] shutdown_handler+0xfd/0x130
    [11798.061063]  [<ffffffff8139aba0>] ? split+0x110/0x110
    [11798.061063]  [<ffffffff8139ac26>] xenwatch_thread+0x86/0x120
    [11798.061063]  [<ffffffff810b4570>] ? prepare_to_wait_event+0x110/0x110
    [11798.061063]  [<ffffffff8108fe57>] kthread+0xd7/0xf0
    [11798.061063]  [<ffffffff811da811>] ? kfree+0x121/0x170
    [11798.061063]  [<ffffffff8108fd80>] ? kthread_park+0x60/0x60
    [11798.061063]  [<ffffffff810863b0>] ?  call_usermodehelper_exec_work+0xb0/0xb0
    [11798.061063]  [<ffffffff810864ea>] ?  call_usermodehelper_exec_async+0x13a/0x140
    [11798.061063]  [<ffffffff81534a45>] ret_from_fork+0x25/0x30
    
    Use the right index in the inner loop.
    
    Fixes: d05d7f4 ("Merge branch 'for-4.8/core' of git://git.kernel.dk/linux-block")
    Fixes: 3fc9d69 ("Merge branch 'for-4.8/drivers' of git://git.kernel.dk/linux-block")
    Signed-off-by: Munehisa Kamata <kamatam@amazon.com>
    Reviewed-by: Thomas Friebel <friebelt@amazon.de>
    Reviewed-by: Eduardo Valentin <eduval@amazon.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Reviewed-by: Roger Pau Monne <roger.pau@citrix.com>
    Cc: xen-devel@lists.xenproject.org
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    kamatam9 authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    33f1d0c View commit details
    Browse the repository at this point in the history
  28. perf/x86: Fix RDPMC vs. mm_struct tracking

    commit bfe3349 upstream.
    
    Vince reported the following rdpmc() testcase failure:
    
     > Failing test case:
     >
     >	fd=perf_event_open();
     >	addr=mmap(fd);
     >	exec()  // without closing or unmapping the event
     >	fd=perf_event_open();
     >	addr=mmap(fd);
     >	rdpmc()	// GPFs due to rdpmc being disabled
    
    The problem is of course that exec() plays tricks with what is
    current->mm, only destroying the old mappings after having
    installed the new mm.
    
    Fix this confusion by passing along vma->vm_mm instead of relying on
    current->mm.
    
    Reported-by: Vince Weaver <vincent.weaver@maine.edu>
    Tested-by: Vince Weaver <vincent.weaver@maine.edu>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Andy Lutomirski <luto@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: 1e0fb9e ("perf: Add pmu callbacks to track event mapping and unmapping")
    Link: http://lkml.kernel.org/r/20170802173930.cstykcqefmqt7jau@hirez.programming.kicks-ass.net
    [ Minor cleanups. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Peter Zijlstra authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    44e9d5a View commit details
    Browse the repository at this point in the history
  29. x86/asm/64: Clear AC on NMI entries

    commit e93c173 upstream.
    
    This closes a hole in our SMAP implementation.
    
    This patch comes from grsecurity. Good catch!
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/314cc9f294e8f14ed85485727556ad4f15bb1659.1502159503.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    amluto authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    c588e0c View commit details
    Browse the repository at this point in the history
  30. x86: Fix norandmaps/ADDR_NO_RANDOMIZE

    commit 47ac548 upstream.
    
    Documentation/admin-guide/kernel-parameters.txt says:
    
        norandmaps  Don't use address space randomization. Equivalent
                    to echo 0 > /proc/sys/kernel/randomize_va_space
    
    but it doesn't work because arch_rnd() which is used to randomize
    mm->mmap_base returns a random value unconditionally. And as Kirill
    pointed out, ADDR_NO_RANDOMIZE is broken by the same reason.
    
    Just shift the PF_RANDOMIZE check from arch_mmap_rnd() to arch_rnd().
    
    Fixes: 1b028f7 ("x86/mm: Introduce mmap_compat_base() for 32-bit mmap()")
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Acked-by: Cyrill Gorcunov <gorcunov@openvz.org>
    Reviewed-by: Dmitry Safonov <dsafonov@virtuozzo.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Link: http://lkml.kernel.org/r/20170815153952.GA1076@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    oleg-nesterov authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    932769e View commit details
    Browse the repository at this point in the history
  31. x86/elf: Remove the unnecessary ADDR_NO_RANDOMIZE checks

    commit 01578e3 upstream.
    
    The ADDR_NO_RANDOMIZE checks in stack_maxrandom_size() and
    randomize_stack_top() are not required.
    
    PF_RANDOMIZE is set by load_elf_binary() only if ADDR_NO_RANDOMIZE is not
    set, no need to re-check after that.
    
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Dmitry Safonov <dsafonov@virtuozzo.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Link: http://lkml.kernel.org/r/20170815154011.GB1076@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    oleg-nesterov authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    c4ab73e View commit details
    Browse the repository at this point in the history
  32. irqchip/atmel-aic: Fix unbalanced of_node_put() in aic_common_irq_fix…

    …up()
    
    commit 469bcef upstream.
    
    aic_common_irq_fixup() is calling twice of_node_put() on the same node
    thus leading to an unbalanced refcount on the root node.
    
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Reported-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Fixes: b2f579b ("irqchip: atmel-aic: Add irq fixup infrastructure")
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Boris Brezillon authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    2eceab6 View commit details
    Browse the repository at this point in the history
  33. irqchip/atmel-aic: Fix unbalanced refcount in aic_common_rtc_irq_fixup()

    commit 277867a upstream.
    
    of_find_compatible_node() is calling of_node_put() on its first argument
    thus leading to an unbalanced of_node_get/put() issue if the node has not
    been retained before that.
    
    Instead of passing the root node, pass NULL, which does exactly the same:
    iterate over all DT nodes, starting from the root node.
    
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Reported-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Fixes: 3d61467 ("irqchip: atmel-aic: Implement RTC irq fixup")
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Boris Brezillon authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    399193e View commit details
    Browse the repository at this point in the history
  34. genirq: Restore trigger settings in irq_modify_status()

    commit e8f2418 upstream.
    
    irq_modify_status starts by clearing the trigger settings from
    irq_data before applying the new settings, but doesn't restore them,
    leaving them to IRQ_TYPE_NONE.
    
    That's pretty confusing to the potential request_irq() that could
    follow. Instead, snapshot the settings before clearing them, and restore
    them if the irq_modify_status() invocation was not changing the trigger.
    
    Fixes: 1e2a7d7 ("irqdomain: Don't set type when mapping an IRQ")
    Reported-and-tested-by: jeffy <jeffy.chen@rock-chips.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Jon Hunter <jonathanh@nvidia.com>
    Link: http://lkml.kernel.org/r/20170818095345.12378-1-marc.zyngier@arm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Marc Zyngier authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    8eee5da View commit details
    Browse the repository at this point in the history
  35. genirq/ipi: Fixup checks against nr_cpu_ids

    commit 8fbbe2d upstream.
    
    Valid CPU ids are [0, nr_cpu_ids-1] inclusive.
    
    Fixes: 3b8e29a ("genirq: Implement ipi_send_mask/single()")
    Fixes: f9bce79 ("genirq: Add a new function to get IPI reverse mapping")
    Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20170819095751.GB27864@avx2
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Alexey Dobriyan authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    ee7025f View commit details
    Browse the repository at this point in the history
  36. kernel/watchdog: Prevent false positives with turbo modes

    commit 7edaeb6 upstream.
    
    The hardlockup detector on x86 uses a performance counter based on unhalted
    CPU cycles and a periodic hrtimer. The hrtimer period is about 2/5 of the
    performance counter period, so the hrtimer should fire 2-3 times before the
    performance counter NMI fires. The NMI code checks whether the hrtimer
    fired since the last invocation. If not, it assumess a hard lockup.
    
    The calculation of those periods is based on the nominal CPU
    frequency. Turbo modes increase the CPU clock frequency and therefore
    shorten the period of the perf/NMI watchdog. With extreme Turbo-modes (3x
    nominal frequency) the perf/NMI period is shorter than the hrtimer period
    which leads to false positives.
    
    A simple fix would be to shorten the hrtimer period, but that comes with
    the side effect of more frequent hrtimer and softlockup thread wakeups,
    which is not desired.
    
    Implement a low pass filter, which checks the perf/NMI period against
    kernel time. If the perf/NMI fires before 4/5 of the watchdog period has
    elapsed then the event is ignored and postponed to the next perf/NMI.
    
    That solves the problem and avoids the overhead of shorter hrtimer periods
    and more frequent softlockup thread wakeups.
    
    Fixes: 58687ac ("lockup_detector: Combine nmi_watchdog and softlockup detector")
    Reported-and-tested-by: Kan Liang <Kan.liang@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: dzickus@redhat.com
    Cc: prarit@redhat.com
    Cc: ak@linux.intel.com
    Cc: babu.moger@oracle.com
    Cc: peterz@infradead.org
    Cc: eranian@google.com
    Cc: acme@redhat.com
    Cc: atomlin@redhat.com
    Cc: akpm@linux-foundation.org
    Cc: torvalds@linux-foundation.org
    Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1708150931310.1886@nanos
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    KAGA-KOKO authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    7cbc3a8 View commit details
    Browse the repository at this point in the history
  37. Sanitize 'move_pages()' permission checks

    commit 197e7e5 upstream.
    
    The 'move_paghes()' system call was introduced long long ago with the
    same permission checks as for sending a signal (except using
    CAP_SYS_NICE instead of CAP_SYS_KILL for the overriding capability).
    
    That turns out to not be a great choice - while the system call really
    only moves physical page allocations around (and you need other
    capabilities to do a lot of it), you can check the return value to map
    out some the virtual address choices and defeat ASLR of a binary that
    still shares your uid.
    
    So change the access checks to the more common 'ptrace_may_access()'
    model instead.
    
    This tightens the access checks for the uid, and also effectively
    changes the CAP_SYS_NICE check to CAP_SYS_PTRACE, but it's unlikely that
    anybody really _uses_ this legacy system call any more (we hav ebetter
    NUMA placement models these days), so I expect nobody to notice.
    
    Famous last words.
    
    Reported-by: Otto Ebeling <otto.ebeling@iki.fi>
    Acked-by: Eric W. Biederman <ebiederm@xmission.com>
    Cc: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    torvalds authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    e950adf View commit details
    Browse the repository at this point in the history
  38. pids: make task_tgid_nr_ns() safe

    commit dd1c1f2 upstream.
    
    This was reported many times, and this was even mentioned in commit
    52ee2df ("pids: refactor vnr/nr_ns helpers to make them safe") but
    somehow nobody bothered to fix the obvious problem: task_tgid_nr_ns() is
    not safe because task->group_leader points to nowhere after the exiting
    task passes exit_notify(), rcu_read_lock() can not help.
    
    We really need to change __unhash_process() to nullify group_leader,
    parent, and real_parent, but this needs some cleanups.  Until then we
    can turn task_tgid_nr_ns() into another user of __task_pid_nr_ns() and
    fix the problem.
    
    Reported-by: Troy Kensinger <tkensinger@google.com>
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    oleg-nesterov authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    c170b79 View commit details
    Browse the repository at this point in the history
  39. debug: Fix WARN_ON_ONCE() for modules

    commit 325cdac upstream.
    
    Mike Galbraith reported a situation where a WARN_ON_ONCE() call in DRM
    code turned into an oops.  As it turns out, WARN_ON_ONCE() seems to be
    completely broken when called from a module.
    
    The bug was introduced with the following commit:
    
      19d4362 ("debug: Add _ONCE() logic to report_bug()")
    
    That commit changed WARN_ON_ONCE() to move its 'once' logic into the bug
    trap handler.  It requires a writable bug table so that the BUGFLAG_DONE
    bit can be written to the flags to indicate the first warning has
    occurred.
    
    The bug table was made writable for vmlinux, which relies on
    vmlinux.lds.S and vmlinux.lds.h for laying out the sections.  However,
    it wasn't made writable for modules, which rely on the ELF section
    header flags.
    
    Reported-by: Mike Galbraith <efault@gmx.de>
    Tested-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: 19d4362 ("debug: Add _ONCE() logic to report_bug()")
    Link: http://lkml.kernel.org/r/a53b04235a65478dd9afc51f5b329fdc65c84364.1500095401.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Changbin Du <changbin.du@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jpoimboe authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    6632ae8 View commit details
    Browse the repository at this point in the history
  40. usb: optimize acpi companion search for usb port devices

    commit ed18c5f upstream.
    
    This optimization significantly reduces xhci driver load time.
    
    In ACPI tables the acpi companion port devices are children of
    the hub device. The port devices are identified by their port number
    returned by the ACPI _ADR method.
    _ADR 0 is reserved for the root hub device.
    
    The current implementation to find a acpi companion port device
    loops through all acpi port devices under that parent hub, evaluating
    their _ADR method each time a new port device is added.
    
    for a xHC controller with 25 ports under its roothub it
    will end up invoking ACPI bytecode 625 times before all ports
    are ready, making it really slow.
    
    The _ADR values are already read and cached earler. So instead of
    running the bytecode again we can check the cached _ADR value first,
    and then fall back to the old way.
    
    As one of the more significant changes, the xhci load time on
    Intel kabylake reduced by 70%, (28ms) from
    initcall xhci_pci_init+0x0/0x49 returned 0 after 39537 usecs
    to
    initcall xhci_pci_init+0x0/0x49 returned 0 after 11270 usecs
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    matnyman authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    e2322bc View commit details
    Browse the repository at this point in the history
  41. usb: qmi_wwan: add D-Link DWM-222 device ID

    commit bed9ff1 upstream.
    
    Signed-off-by: Hector Martin <marcan@marcan.st>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    marcan authored and gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    3f40666 View commit details
    Browse the repository at this point in the history
  42. Linux 4.12.9

    gregkh committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    e0e7ae9 View commit details
    Browse the repository at this point in the history
  43. Merge tag 'v4.12.9' into 4.12

    This is the 4.12.9 stable release
    xanmod committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    73127a1 View commit details
    Browse the repository at this point in the history
  44. 4.12.9-xanmod10

    xanmod committed Aug 25, 2017
    Configuration menu
    Copy the full SHA
    fbb0167 View commit details
    Browse the repository at this point in the history

Commits on Aug 30, 2017

  1. sparc64: remove unnecessary log message

    [ Upstream commit 6170a50 ]
    
    There is no need to log message if ATU hvapi couldn't get register.
    Unlike PCI hvapi, ATU hvapi registration failure is not hard error.
    Even if ATU hvapi registration fails (on system with ATU or without
    ATU) system continues with legacy IOMMU. So only log message when
    ATU hvapi successfully get registered.
    
    Signed-off-by: Tushar Dave <tushar.n.dave@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    tndave authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    16caf8d View commit details
    Browse the repository at this point in the history
  2. bonding: require speed/duplex only for 802.3ad, alb and tlb

    [ Upstream commit ad729bc ]
    
    The patch c4adfc8 ("bonding: make speed, duplex setting consistent
    with link state") puts the link state to down if
    bond_update_speed_duplex() cannot retrieve speed and duplex settings.
    Assumably the patch was written with 802.3ad mode in mind which relies
    on link speed/duplex settings. For other modes like active-backup these
    settings are not required. Thus, only for these other modes, this patch
    reintroduces support for slaves that do not support reporting speed or
    duplex such as wireless devices. This fixes the regression reported in
    bug 196547 (https://bugzilla.kernel.org/show_bug.cgi?id=196547).
    
    Fixes: c4adfc8 ("bonding: make speed, duplex setting consistent
    with link state")
    Signed-off-by: Andreas Born <futur.andy@googlemail.com>
    Acked-by: Mahesh Bandewar <maheshb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Phoosha authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    b39ae1c View commit details
    Browse the repository at this point in the history
  3. bonding: ratelimit failed speed/duplex update warning

    [ Upstream commit 11e9d78 ]
    
    bond_miimon_commit() handles the UP transition for each slave of a bond
    in the case of MII. It is triggered 10 times per second for the default
    MII Polling interval of 100ms. For device drivers that do not implement
    __ethtool_get_link_ksettings() the call to bond_update_speed_duplex()
    fails persistently while the MII status could remain UP. That is, in
    this and other cases where the speed/duplex update keeps failing over a
    longer period of time while the MII state is UP, a warning is printed
    every MII polling interval.
    
    To address these excessive warnings net_ratelimit() should be used.
    Printing a warning once would not be sufficient since the call to
    bond_update_speed_duplex() could recover to succeed and fail again
    later. In that case there would be no new indication what went wrong.
    
    Fixes: b5bf0f5 (bonding: correctly update link status during mii-commit phase)
    Signed-off-by: Andreas Born <futur.andy@googlemail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Phoosha authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    7294201 View commit details
    Browse the repository at this point in the history
  4. af_key: do not use GFP_KERNEL in atomic contexts

    [ Upstream commit 36f41f8 ]
    
    pfkey_broadcast() might be called from non process contexts,
    we can not use GFP_KERNEL in these cases [1].
    
    This patch partially reverts commit ba51b6b ("net: Fix RCU splat in
    af_key"), only keeping the GFP_ATOMIC forcing under rcu_read_lock()
    section.
    
    [1] : syzkaller reported :
    
    in_atomic(): 1, irqs_disabled(): 0, pid: 2932, name: syzkaller183439
    3 locks held by syzkaller183439/2932:
     #0:  (&net->xfrm.xfrm_cfg_mutex){+.+.+.}, at: [<ffffffff83b43888>] pfkey_sendmsg+0x4c8/0x9f0 net/key/af_key.c:3649
     #1:  (&pfk->dump_lock){+.+.+.}, at: [<ffffffff83b467f6>] pfkey_do_dump+0x76/0x3f0 net/key/af_key.c:293
     #2:  (&(&net->xfrm.xfrm_policy_lock)->rlock){+...+.}, at: [<ffffffff83957632>] spin_lock_bh include/linux/spinlock.h:304 [inline]
     #2:  (&(&net->xfrm.xfrm_policy_lock)->rlock){+...+.}, at: [<ffffffff83957632>] xfrm_policy_walk+0x192/0xa30 net/xfrm/xfrm_policy.c:1028
    CPU: 0 PID: 2932 Comm: syzkaller183439 Not tainted 4.13.0-rc4+ #24
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:16 [inline]
     dump_stack+0x194/0x257 lib/dump_stack.c:52
     ___might_sleep+0x2b2/0x470 kernel/sched/core.c:5994
     __might_sleep+0x95/0x190 kernel/sched/core.c:5947
     slab_pre_alloc_hook mm/slab.h:416 [inline]
     slab_alloc mm/slab.c:3383 [inline]
     kmem_cache_alloc+0x24b/0x6e0 mm/slab.c:3559
     skb_clone+0x1a0/0x400 net/core/skbuff.c:1037
     pfkey_broadcast_one+0x4b2/0x6f0 net/key/af_key.c:207
     pfkey_broadcast+0x4ba/0x770 net/key/af_key.c:281
     dump_sp+0x3d6/0x500 net/key/af_key.c:2685
     xfrm_policy_walk+0x2f1/0xa30 net/xfrm/xfrm_policy.c:1042
     pfkey_dump_sp+0x42/0x50 net/key/af_key.c:2695
     pfkey_do_dump+0xaa/0x3f0 net/key/af_key.c:299
     pfkey_spddump+0x1a0/0x210 net/key/af_key.c:2722
     pfkey_process+0x606/0x710 net/key/af_key.c:2814
     pfkey_sendmsg+0x4d6/0x9f0 net/key/af_key.c:3650
    sock_sendmsg_nosec net/socket.c:633 [inline]
     sock_sendmsg+0xca/0x110 net/socket.c:643
     ___sys_sendmsg+0x755/0x890 net/socket.c:2035
     __sys_sendmsg+0xe5/0x210 net/socket.c:2069
     SYSC_sendmsg net/socket.c:2080 [inline]
     SyS_sendmsg+0x2d/0x50 net/socket.c:2076
     entry_SYSCALL_64_fastpath+0x1f/0xbe
    RIP: 0033:0x445d79
    RSP: 002b:00007f32447c1dc8 EFLAGS: 00000202 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 0000000000445d79
    RDX: 0000000000000000 RSI: 000000002023dfc8 RDI: 0000000000000008
    RBP: 0000000000000086 R08: 00007f32447c2700 R09: 00007f32447c2700
    R10: 00007f32447c2700 R11: 0000000000000202 R12: 0000000000000000
    R13: 00007ffe33edec4f R14: 00007f32447c29c0 R15: 0000000000000000
    
    Fixes: ba51b6b ("net: Fix RCU splat in af_key")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: David Ahern <dsa@cumulusnetworks.com>
    Acked-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Eric Dumazet authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    94fd355 View commit details
    Browse the repository at this point in the history
  5. dccp: purge write queue in dccp_destroy_sock()

    [ Upstream commit 7749d4f ]
    
    syzkaller reported that DCCP could have a non empty
    write queue at dismantle time.
    
    WARNING: CPU: 1 PID: 2953 at net/core/stream.c:199 sk_stream_kill_queues+0x3ce/0x520 net/core/stream.c:199
    Kernel panic - not syncing: panic_on_warn set ...
    
    CPU: 1 PID: 2953 Comm: syz-executor0 Not tainted 4.13.0-rc4+ #2
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:16 [inline]
     dump_stack+0x194/0x257 lib/dump_stack.c:52
     panic+0x1e4/0x417 kernel/panic.c:180
     __warn+0x1c4/0x1d9 kernel/panic.c:541
     report_bug+0x211/0x2d0 lib/bug.c:183
     fixup_bug+0x40/0x90 arch/x86/kernel/traps.c:190
     do_trap_no_signal arch/x86/kernel/traps.c:224 [inline]
     do_trap+0x260/0x390 arch/x86/kernel/traps.c:273
     do_error_trap+0x120/0x390 arch/x86/kernel/traps.c:310
     do_invalid_op+0x1b/0x20 arch/x86/kernel/traps.c:323
     invalid_op+0x1e/0x30 arch/x86/entry/entry_64.S:846
    RIP: 0010:sk_stream_kill_queues+0x3ce/0x520 net/core/stream.c:199
    RSP: 0018:ffff8801d182f108 EFLAGS: 00010297
    RAX: ffff8801d1144140 RBX: ffff8801d13cb280 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: ffffffff85137b00 RDI: ffff8801d13cb280
    RBP: ffff8801d182f148 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: ffff8801d13cb4d0
    R13: ffff8801d13cb3b8 R14: ffff8801d13cb300 R15: ffff8801d13cb3b8
     inet_csk_destroy_sock+0x175/0x3f0 net/ipv4/inet_connection_sock.c:835
     dccp_close+0x84d/0xc10 net/dccp/proto.c:1067
     inet_release+0xed/0x1c0 net/ipv4/af_inet.c:425
     sock_release+0x8d/0x1e0 net/socket.c:597
     sock_close+0x16/0x20 net/socket.c:1126
     __fput+0x327/0x7e0 fs/file_table.c:210
     ____fput+0x15/0x20 fs/file_table.c:246
     task_work_run+0x18a/0x260 kernel/task_work.c:116
     exit_task_work include/linux/task_work.h:21 [inline]
     do_exit+0xa32/0x1b10 kernel/exit.c:865
     do_group_exit+0x149/0x400 kernel/exit.c:969
     get_signal+0x7e8/0x17e0 kernel/signal.c:2330
     do_signal+0x94/0x1ee0 arch/x86/kernel/signal.c:808
     exit_to_usermode_loop+0x21c/0x2d0 arch/x86/entry/common.c:157
     prepare_exit_to_usermode arch/x86/entry/common.c:194 [inline]
     syscall_return_slowpath+0x3a7/0x450 arch/x86/entry/common.c:263
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Eric Dumazet authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    a8de69b View commit details
    Browse the repository at this point in the history
  6. dccp: defer ccid_hc_tx_delete() at dismantle time

    [ Upstream commit 120e9da ]
    
    syszkaller team reported another problem in DCCP [1]
    
    Problem here is that the structure holding RTO timer
    (ccid2_hc_tx_rto_expire() handler) is freed too soon.
    
    We can not use del_timer_sync() to cancel the timer
    since this timer wants to grab socket lock (that would risk a dead lock)
    
    Solution is to defer the freeing of memory when all references to
    the socket were released. Socket timers do own a reference, so this
    should fix the issue.
    
    [1]
    
    ==================================================================
    BUG: KASAN: use-after-free in ccid2_hc_tx_rto_expire+0x51c/0x5c0 net/dccp/ccids/ccid2.c:144
    Read of size 4 at addr ffff8801d2660540 by task kworker/u4:7/3365
    
    CPU: 1 PID: 3365 Comm: kworker/u4:7 Not tainted 4.13.0-rc4+ #3
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: events_unbound call_usermodehelper_exec_work
    Call Trace:
     <IRQ>
     __dump_stack lib/dump_stack.c:16 [inline]
     dump_stack+0x194/0x257 lib/dump_stack.c:52
     print_address_description+0x73/0x250 mm/kasan/report.c:252
     kasan_report_error mm/kasan/report.c:351 [inline]
     kasan_report+0x24e/0x340 mm/kasan/report.c:409
     __asan_report_load4_noabort+0x14/0x20 mm/kasan/report.c:429
     ccid2_hc_tx_rto_expire+0x51c/0x5c0 net/dccp/ccids/ccid2.c:144
     call_timer_fn+0x233/0x830 kernel/time/timer.c:1268
     expire_timers kernel/time/timer.c:1307 [inline]
     __run_timers+0x7fd/0xb90 kernel/time/timer.c:1601
     run_timer_softirq+0x21/0x80 kernel/time/timer.c:1614
     __do_softirq+0x2f5/0xba3 kernel/softirq.c:284
     invoke_softirq kernel/softirq.c:364 [inline]
     irq_exit+0x1cc/0x200 kernel/softirq.c:405
     exiting_irq arch/x86/include/asm/apic.h:638 [inline]
     smp_apic_timer_interrupt+0x76/0xa0 arch/x86/kernel/apic/apic.c:1044
     apic_timer_interrupt+0x93/0xa0 arch/x86/entry/entry_64.S:702
    RIP: 0010:arch_local_irq_enable arch/x86/include/asm/paravirt.h:824 [inline]
    RIP: 0010:__raw_write_unlock_irq include/linux/rwlock_api_smp.h:267 [inline]
    RIP: 0010:_raw_write_unlock_irq+0x56/0x70 kernel/locking/spinlock.c:343
    RSP: 0018:ffff8801cd50eaa8 EFLAGS: 00000286 ORIG_RAX: ffffffffffffff10
    RAX: dffffc0000000000 RBX: ffffffff85a090c0 RCX: 0000000000000006
    RDX: 1ffffffff0b595f3 RSI: 1ffff1003962f989 RDI: ffffffff85acaf98
    RBP: ffff8801cd50eab0 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: ffff8801cc96ea60
    R13: dffffc0000000000 R14: ffff8801cc96e4c0 R15: ffff8801cc96e4c0
     </IRQ>
     release_task+0xe9e/0x1a40 kernel/exit.c:220
     wait_task_zombie kernel/exit.c:1162 [inline]
     wait_consider_task+0x29b8/0x33c0 kernel/exit.c:1389
     do_wait_thread kernel/exit.c:1452 [inline]
     do_wait+0x441/0xa90 kernel/exit.c:1523
     kernel_wait4+0x1f5/0x370 kernel/exit.c:1665
     SYSC_wait4+0x134/0x140 kernel/exit.c:1677
     SyS_wait4+0x2c/0x40 kernel/exit.c:1673
     call_usermodehelper_exec_sync kernel/kmod.c:286 [inline]
     call_usermodehelper_exec_work+0x1a0/0x2c0 kernel/kmod.c:323
     process_one_work+0xbf3/0x1bc0 kernel/workqueue.c:2097
     worker_thread+0x223/0x1860 kernel/workqueue.c:2231
     kthread+0x35e/0x430 kernel/kthread.c:231
     ret_from_fork+0x2a/0x40 arch/x86/entry/entry_64.S:425
    
    Allocated by task 21267:
     save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:59
     save_stack+0x43/0xd0 mm/kasan/kasan.c:447
     set_track mm/kasan/kasan.c:459 [inline]
     kasan_kmalloc+0xad/0xe0 mm/kasan/kasan.c:551
     kasan_slab_alloc+0x12/0x20 mm/kasan/kasan.c:489
     kmem_cache_alloc+0x127/0x750 mm/slab.c:3561
     ccid_new+0x20e/0x390 net/dccp/ccid.c:151
     dccp_hdlr_ccid+0x27/0x140 net/dccp/feat.c:44
     __dccp_feat_activate+0x142/0x2a0 net/dccp/feat.c:344
     dccp_feat_activate_values+0x34e/0xa90 net/dccp/feat.c:1538
     dccp_rcv_request_sent_state_process net/dccp/input.c:472 [inline]
     dccp_rcv_state_process+0xed1/0x1620 net/dccp/input.c:677
     dccp_v4_do_rcv+0xeb/0x160 net/dccp/ipv4.c:679
     sk_backlog_rcv include/net/sock.h:911 [inline]
     __release_sock+0x124/0x360 net/core/sock.c:2269
     release_sock+0xa4/0x2a0 net/core/sock.c:2784
     inet_wait_for_connect net/ipv4/af_inet.c:557 [inline]
     __inet_stream_connect+0x671/0xf00 net/ipv4/af_inet.c:643
     inet_stream_connect+0x58/0xa0 net/ipv4/af_inet.c:682
     SYSC_connect+0x204/0x470 net/socket.c:1642
     SyS_connect+0x24/0x30 net/socket.c:1623
     entry_SYSCALL_64_fastpath+0x1f/0xbe
    
    Freed by task 3049:
     save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:59
     save_stack+0x43/0xd0 mm/kasan/kasan.c:447
     set_track mm/kasan/kasan.c:459 [inline]
     kasan_slab_free+0x71/0xc0 mm/kasan/kasan.c:524
     __cache_free mm/slab.c:3503 [inline]
     kmem_cache_free+0x77/0x280 mm/slab.c:3763
     ccid_hc_tx_delete+0xc5/0x100 net/dccp/ccid.c:190
     dccp_destroy_sock+0x1d1/0x2b0 net/dccp/proto.c:225
     inet_csk_destroy_sock+0x166/0x3f0 net/ipv4/inet_connection_sock.c:833
     dccp_done+0xb7/0xd0 net/dccp/proto.c:145
     dccp_time_wait+0x13d/0x300 net/dccp/minisocks.c:72
     dccp_rcv_reset+0x1d1/0x5b0 net/dccp/input.c:160
     dccp_rcv_state_process+0x8fc/0x1620 net/dccp/input.c:663
     dccp_v4_do_rcv+0xeb/0x160 net/dccp/ipv4.c:679
     sk_backlog_rcv include/net/sock.h:911 [inline]
     __sk_receive_skb+0x33e/0xc00 net/core/sock.c:521
     dccp_v4_rcv+0xef1/0x1c00 net/dccp/ipv4.c:871
     ip_local_deliver_finish+0x2e2/0xba0 net/ipv4/ip_input.c:216
     NF_HOOK include/linux/netfilter.h:248 [inline]
     ip_local_deliver+0x1ce/0x6d0 net/ipv4/ip_input.c:257
     dst_input include/net/dst.h:477 [inline]
     ip_rcv_finish+0x8db/0x19c0 net/ipv4/ip_input.c:397
     NF_HOOK include/linux/netfilter.h:248 [inline]
     ip_rcv+0xc3f/0x17d0 net/ipv4/ip_input.c:488
     __netif_receive_skb_core+0x19af/0x33d0 net/core/dev.c:4417
     __netif_receive_skb+0x2c/0x1b0 net/core/dev.c:4455
     process_backlog+0x203/0x740 net/core/dev.c:5130
     napi_poll net/core/dev.c:5527 [inline]
     net_rx_action+0x792/0x1910 net/core/dev.c:5593
     __do_softirq+0x2f5/0xba3 kernel/softirq.c:284
    
    The buggy address belongs to the object at ffff8801d2660100
     which belongs to the cache ccid2_hc_tx_sock of size 1240
    The buggy address is located 1088 bytes inside of
     1240-byte region [ffff8801d2660100, ffff8801d26605d8)
    The buggy address belongs to the page:
    page:ffffea0007499800 count:1 mapcount:0 mapping:ffff8801d2660100 index:0x0 compound_mapcount: 0
    flags: 0x200000000008100(slab|head)
    raw: 0200000000008100 ffff8801d2660100 0000000000000000 0000000100000005
    raw: ffffea00075271a0 ffffea0007538820 ffff8801d3aef9c0 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff8801d2660400: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff8801d2660480: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    >ffff8801d2660500: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                               ^
     ffff8801d2660580: fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc fc
     ffff8801d2660600: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    ==================================================================
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: Gerrit Renker <gerrit@erg.abdn.ac.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Eric Dumazet authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    f1d0554 View commit details
    Browse the repository at this point in the history
  7. ipv4: fix NULL dereference in free_fib_info_rcu()

    [ Upstream commit 187e5b3 ]
    
    If fi->fib_metrics could not be allocated in fib_create_info()
    we attempt to dereference a NULL pointer in free_fib_info_rcu() :
    
        m = fi->fib_metrics;
        if (m != &dst_default_metrics && atomic_dec_and_test(&m->refcnt))
                kfree(m);
    
    Before my recent patch, we used to call kfree(NULL) and nothing wrong
    happened.
    
    Instead of using RCU to defer freeing while we are under memory stress,
    it seems better to take immediate action.
    
    This was reported by syzkaller team.
    
    Fixes: 3fb07da ("ipv4: add reference counting to metrics")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Eric Dumazet authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    163db2c View commit details
    Browse the repository at this point in the history
  8. net_sched/sfq: update hierarchical backlog when drop packet

    [ Upstream commit 325d5dc ]
    
    When sfq_enqueue() drops head packet or packet from another queue it
    have to update backlog at upper qdiscs too.
    
    Fixes: 2ccccf5 ("net_sched: update hierarchical backlog too")
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    koct9i authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    cf665a6 View commit details
    Browse the repository at this point in the history
  9. net_sched: remove warning from qdisc_hash_add

    [ Upstream commit c90e951 ]
    
    It was added in commit e57a784 ("pkt_sched: set root qdisc
    before change() in attach_default_qdiscs()") to hide duplicates
    from "tc qdisc show" for incative deivices.
    
    After 59cc1f6 ("net: sched: convert qdisc linked list to hashtable")
    it triggered when classful qdisc is added to inactive device because
    default qdiscs are added before switching root qdisc.
    
    Anyway after commit ea32746 ("net: sched: avoid duplicates in
    qdisc dump") duplicates are filtered right in dumper.
    
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    koct9i authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    99f635d View commit details
    Browse the repository at this point in the history
  10. bpf: fix bpf_trace_printk on 32 bit archs

    [ Upstream commit 88a5c69 ]
    
    James reported that on MIPS32 bpf_trace_printk() is currently
    broken while MIPS64 works fine:
    
      bpf_trace_printk() uses conditional operators to attempt to
      pass different types to __trace_printk() depending on the
      format operators. This doesn't work as intended on 32-bit
      architectures where u32 and long are passed differently to
      u64, since the result of C conditional operators follows the
      "usual arithmetic conversions" rules, such that the values
      passed to __trace_printk() will always be u64 [causing issues
      later in the va_list handling for vscnprintf()].
    
      For example the samples/bpf/tracex5 test printed lines like
      below on MIPS32, where the fd and buf have come from the u64
      fd argument, and the size from the buf argument:
    
        [...] 1180.941542: 0x00000001: write(fd=1, buf=  (null), size=6258688)
    
      Instead of this:
    
        [...] 1625.616026: 0x00000001: write(fd=1, buf=009e4000, size=512)
    
    One way to get it working is to expand various combinations
    of argument types into 8 different combinations for 32 bit
    and 64 bit kernels. Fix tested by James on MIPS32 and MIPS64
    as well that it resolves the issue.
    
    Fixes: 9c959c8 ("tracing: Allow BPF programs to call bpf_trace_printk()")
    Reported-by: James Hogan <james.hogan@imgtec.com>
    Tested-by: James Hogan <james.hogan@imgtec.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    borkmann authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    921739a View commit details
    Browse the repository at this point in the history
  11. net: igmp: Use ingress interface rather than vrf device

    [ Upstream commit c7b725b ]
    
    Anuradha reported that statically added groups for interfaces enslaved
    to a VRF device were not persisting. The problem is that igmp queries
    and reports need to use the data in the in_dev for the real ingress
    device rather than the VRF device. Update igmp_rcv accordingly.
    
    Fixes: e58e415 ("net: Enable support for VRF with ipv4 multicast")
    Reported-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
    Signed-off-by: David Ahern <dsahern@gmail.com>
    Reviewed-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    dsahern authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    c6fc7b9 View commit details
    Browse the repository at this point in the history
  12. openvswitch: fix skb_panic due to the incorrect actions attrlen

    [ Upstream commit 494bea3 ]
    
    For sw_flow_actions, the actions_len only represents the kernel part's
    size, and when we dump the actions to the userspace, we will do the
    convertions, so it's true size may become bigger than the actions_len.
    
    But unfortunately, for OVS_PACKET_ATTR_ACTIONS, we use the actions_len
    to alloc the skbuff, so the user_skb's size may become insufficient and
    oops will happen like this:
      skbuff: skb_over_panic: text:ffffffff8148fabf len:1749 put:157 head:
      ffff881300f39000 data:ffff881300f39000 tail:0x6d5 end:0x6c0 dev:<NULL>
      ------------[ cut here ]------------
      kernel BUG at net/core/skbuff.c:129!
      [...]
      Call Trace:
       <IRQ>
       [<ffffffff8148be82>] skb_put+0x43/0x44
       [<ffffffff8148fabf>] skb_zerocopy+0x6c/0x1f4
       [<ffffffffa0290d36>] queue_userspace_packet+0x3a3/0x448 [openvswitch]
       [<ffffffffa0292023>] ovs_dp_upcall+0x30/0x5c [openvswitch]
       [<ffffffffa028d435>] output_userspace+0x132/0x158 [openvswitch]
       [<ffffffffa01e6890>] ? ip6_rcv_finish+0x74/0x77 [ipv6]
       [<ffffffffa028e277>] do_execute_actions+0xcc1/0xdc8 [openvswitch]
       [<ffffffffa028e3f2>] ovs_execute_actions+0x74/0x106 [openvswitch]
       [<ffffffffa0292130>] ovs_dp_process_packet+0xe1/0xfd [openvswitch]
       [<ffffffffa0292b77>] ? key_extract+0x63c/0x8d5 [openvswitch]
       [<ffffffffa029848b>] ovs_vport_receive+0xa1/0xc3 [openvswitch]
      [...]
    
    Also we can find that the actions_len is much little than the orig_len:
      crash> struct sw_flow_actions 0xffff8812f539d000
      struct sw_flow_actions {
        rcu = {
          next = 0xffff8812f5398800,
          func = 0xffffe3b00035db32
        },
        orig_len = 1384,
        actions_len = 592,
        actions = 0xffff8812f539d01c
      }
    
    So as a quick fix, use the orig_len instead of the actions_len to alloc
    the user_skb.
    
    Last, this oops happened on our system running a relative old kernel, but
    the same risk still exists on the mainline, since we use the wrong
    actions_len from the beginning.
    
    Fixes: ccea744 ("openvswitch: include datapath actions with sampled-packet upcall to userspace")
    Cc: Neil McKee <neil.mckee@inmon.com>
    Signed-off-by: Liping Zhang <zlpnobody@gmail.com>
    Acked-by: Pravin B Shelar <pshelar@ovn.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Liping Zhang authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    cb445bf View commit details
    Browse the repository at this point in the history
  13. ptr_ring: use kmalloc_array()

    [ Upstream commit 81fbfe8 ]
    
    As found by syzkaller, malicious users can set whatever tx_queue_len
    on a tun device and eventually crash the kernel.
    
    Lets remove the ALIGN(XXX, SMP_CACHE_BYTES) thing since a small
    ring buffer is not fast anyway.
    
    Fixes: 2e0ab8c ("ptr_ring: array based FIFO for pointers")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Cc: Jason Wang <jasowang@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Eric Dumazet authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    12ee6d7 View commit details
    Browse the repository at this point in the history
  14. ipv4: better IP_MAX_MTU enforcement

    [ Upstream commit c780a04 ]
    
    While working on yet another syzkaller report, I found
    that our IP_MAX_MTU enforcements were not properly done.
    
    gcc seems to reload dev->mtu for min(dev->mtu, IP_MAX_MTU), and
    final result can be bigger than IP_MAX_MTU :/
    
    This is a problem because device mtu can be changed on other cpus or
    threads.
    
    While this patch does not fix the issue I am working on, it is
    probably worth addressing it.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Eric Dumazet authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    9c579ac View commit details
    Browse the repository at this point in the history
  15. nfp: fix infinite loop on umapping cleanup

    [ Upstream commit eac2c68 ]
    
    The while loop that performs the dma page unmapping never decrements
    index counter f and hence loops forever. Fix this with a pre-decrement
    on f.
    
    Detected by CoverityScan, CID#1357309 ("Infinite loop")
    
    Fixes: 4c35236 ("net: add driver for Netronome NFP4000/NFP6000 NIC VFs")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Acked-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Colin Ian King authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    3c3181e View commit details
    Browse the repository at this point in the history
  16. tun: handle register_netdevice() failures properly

    [ Upstream commit ff244c6 ]
    
    syzkaller reported a double free [1], caused by the fact
    that tun driver was not updated properly when priv_destructor
    was added.
    
    When/if register_netdevice() fails, priv_destructor() must have been
    called already.
    
    [1]
    BUG: KASAN: double-free or invalid-free in selinux_tun_dev_free_security+0x15/0x20 security/selinux/hooks.c:5023
    
    CPU: 0 PID: 2919 Comm: syzkaller227220 Not tainted 4.13.0-rc4+ #23
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:16 [inline]
     dump_stack+0x194/0x257 lib/dump_stack.c:52
     print_address_description+0x7f/0x260 mm/kasan/report.c:252
     kasan_report_double_free+0x55/0x80 mm/kasan/report.c:333
     kasan_slab_free+0xa0/0xc0 mm/kasan/kasan.c:514
     __cache_free mm/slab.c:3503 [inline]
     kfree+0xd3/0x260 mm/slab.c:3820
     selinux_tun_dev_free_security+0x15/0x20 security/selinux/hooks.c:5023
     security_tun_dev_free_security+0x48/0x80 security/security.c:1512
     tun_set_iff drivers/net/tun.c:1884 [inline]
     __tun_chr_ioctl+0x2ce6/0x3d50 drivers/net/tun.c:2064
     tun_chr_ioctl+0x2a/0x40 drivers/net/tun.c:2309
     vfs_ioctl fs/ioctl.c:45 [inline]
     do_vfs_ioctl+0x1b1/0x1520 fs/ioctl.c:685
     SYSC_ioctl fs/ioctl.c:700 [inline]
     SyS_ioctl+0x8f/0xc0 fs/ioctl.c:691
     entry_SYSCALL_64_fastpath+0x1f/0xbe
    RIP: 0033:0x443ff9
    RSP: 002b:00007ffc34271f68 EFLAGS: 00000217 ORIG_RAX: 0000000000000010
    RAX: ffffffffffffffda RBX: 00000000004002e0 RCX: 0000000000443ff9
    RDX: 0000000020533000 RSI: 00000000400454ca RDI: 0000000000000003
    RBP: 0000000000000086 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000217 R12: 0000000000401ce0
    R13: 0000000000401d70 R14: 0000000000000000 R15: 0000000000000000
    
    Allocated by task 2919:
     save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:59
     save_stack+0x43/0xd0 mm/kasan/kasan.c:447
     set_track mm/kasan/kasan.c:459 [inline]
     kasan_kmalloc+0xaa/0xd0 mm/kasan/kasan.c:551
     kmem_cache_alloc_trace+0x101/0x6f0 mm/slab.c:3627
     kmalloc include/linux/slab.h:493 [inline]
     kzalloc include/linux/slab.h:666 [inline]
     selinux_tun_dev_alloc_security+0x49/0x170 security/selinux/hooks.c:5012
     security_tun_dev_alloc_security+0x6d/0xa0 security/security.c:1506
     tun_set_iff drivers/net/tun.c:1839 [inline]
     __tun_chr_ioctl+0x1730/0x3d50 drivers/net/tun.c:2064
     tun_chr_ioctl+0x2a/0x40 drivers/net/tun.c:2309
     vfs_ioctl fs/ioctl.c:45 [inline]
     do_vfs_ioctl+0x1b1/0x1520 fs/ioctl.c:685
     SYSC_ioctl fs/ioctl.c:700 [inline]
     SyS_ioctl+0x8f/0xc0 fs/ioctl.c:691
     entry_SYSCALL_64_fastpath+0x1f/0xbe
    
    Freed by task 2919:
     save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:59
     save_stack+0x43/0xd0 mm/kasan/kasan.c:447
     set_track mm/kasan/kasan.c:459 [inline]
     kasan_slab_free+0x6e/0xc0 mm/kasan/kasan.c:524
     __cache_free mm/slab.c:3503 [inline]
     kfree+0xd3/0x260 mm/slab.c:3820
     selinux_tun_dev_free_security+0x15/0x20 security/selinux/hooks.c:5023
     security_tun_dev_free_security+0x48/0x80 security/security.c:1512
     tun_free_netdev+0x13b/0x1b0 drivers/net/tun.c:1563
     register_netdevice+0x8d0/0xee0 net/core/dev.c:7605
     tun_set_iff drivers/net/tun.c:1859 [inline]
     __tun_chr_ioctl+0x1caf/0x3d50 drivers/net/tun.c:2064
     tun_chr_ioctl+0x2a/0x40 drivers/net/tun.c:2309
     vfs_ioctl fs/ioctl.c:45 [inline]
     do_vfs_ioctl+0x1b1/0x1520 fs/ioctl.c:685
     SYSC_ioctl fs/ioctl.c:700 [inline]
     SyS_ioctl+0x8f/0xc0 fs/ioctl.c:691
     entry_SYSCALL_64_fastpath+0x1f/0xbe
    
    The buggy address belongs to the object at ffff8801d2843b40
     which belongs to the cache kmalloc-32 of size 32
    The buggy address is located 0 bytes inside of
     32-byte region [ffff8801d2843b40, ffff8801d2843b60)
    The buggy address belongs to the page:
    page:ffffea000660cea8 count:1 mapcount:0 mapping:ffff8801d2843000 index:0xffff8801d2843fc1
    flags: 0x200000000000100(slab)
    raw: 0200000000000100 ffff8801d2843000 ffff8801d2843fc1 000000010000003f
    raw: ffffea0006626a40 ffffea00066141a0 ffff8801dbc00100
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff8801d2843a00: fb fb fb fb fc fc fc fc fb fb fb fb fc fc fc fc
     ffff8801d2843a80: 00 00 00 fc fc fc fc fc fb fb fb fb fc fc fc fc
    >ffff8801d2843b00: 00 00 00 00 fc fc fc fc fb fb fb fb fc fc fc fc
                                               ^
     ffff8801d2843b80: fb fb fb fb fc fc fc fc fb fb fb fb fc fc fc fc
     ffff8801d2843c00: fb fb fb fb fc fc fc fc fb fb fb fb fc fc fc fc
    
    ==================================================================
    
    Fixes: cf124db ("net: Fix inconsistent teardown and release of private netdev state.")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Eric Dumazet authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    dda8447 View commit details
    Browse the repository at this point in the history
  17. sctp: fully initialize the IPv6 address in sctp_v6_to_addr()

    [ Upstream commit 15339e4 ]
    
    KMSAN reported use of uninitialized sctp_addr->v4.sin_addr.s_addr and
    sctp_addr->v6.sin6_scope_id in sctp_v6_cmp_addr() (see below).
    Make sure all fields of an IPv6 address are initialized, which
    guarantees that the IPv4 fields are also initialized.
    
    ==================================================================
     BUG: KMSAN: use of uninitialized memory in sctp_v6_cmp_addr+0x8d4/0x9f0
     net/sctp/ipv6.c:517
     CPU: 2 PID: 31056 Comm: syz-executor1 Not tainted 4.11.0-rc5+ #2944
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs
     01/01/2011
     Call Trace:
      dump_stack+0x172/0x1c0 lib/dump_stack.c:42
      is_logbuf_locked mm/kmsan/kmsan.c:59 [inline]
      kmsan_report+0x12a/0x180 mm/kmsan/kmsan.c:938
      native_save_fl arch/x86/include/asm/irqflags.h:18 [inline]
      arch_local_save_flags arch/x86/include/asm/irqflags.h:72 [inline]
      arch_local_irq_save arch/x86/include/asm/irqflags.h:113 [inline]
      __msan_warning_32+0x61/0xb0 mm/kmsan/kmsan_instr.c:467
      sctp_v6_cmp_addr+0x8d4/0x9f0 net/sctp/ipv6.c:517
      sctp_v6_get_dst+0x8c7/0x1630 net/sctp/ipv6.c:290
      sctp_transport_route+0x101/0x570 net/sctp/transport.c:292
      sctp_assoc_add_peer+0x66d/0x16f0 net/sctp/associola.c:651
      sctp_sendmsg+0x35a5/0x4f90 net/sctp/socket.c:1871
      inet_sendmsg+0x498/0x670 net/ipv4/af_inet.c:762
      sock_sendmsg_nosec net/socket.c:633 [inline]
      sock_sendmsg net/socket.c:643 [inline]
      SYSC_sendto+0x608/0x710 net/socket.c:1696
      SyS_sendto+0x8a/0xb0 net/socket.c:1664
      entry_SYSCALL_64_fastpath+0x13/0x94
     RIP: 0033:0x44b479
     RSP: 002b:00007f6213f21c08 EFLAGS: 00000286 ORIG_RAX: 000000000000002c
     RAX: ffffffffffffffda RBX: 0000000020000000 RCX: 000000000044b479
     RDX: 0000000000000041 RSI: 0000000020edd000 RDI: 0000000000000006
     RBP: 00000000007080a8 R08: 0000000020b85fe4 R09: 000000000000001c
     R10: 0000000000040005 R11: 0000000000000286 R12: 00000000ffffffff
     R13: 0000000000003760 R14: 00000000006e5820 R15: 0000000000ff8000
     origin description: ----dst_saddr@sctp_v6_get_dst
     local variable created at:
      sk_fullsock include/net/sock.h:2321 [inline]
      inet6_sk include/linux/ipv6.h:309 [inline]
      sctp_v6_get_dst+0x91/0x1630 net/sctp/ipv6.c:241
      sctp_transport_route+0x101/0x570 net/sctp/transport.c:292
    ==================================================================
     BUG: KMSAN: use of uninitialized memory in sctp_v6_cmp_addr+0x8d4/0x9f0
     net/sctp/ipv6.c:517
     CPU: 2 PID: 31056 Comm: syz-executor1 Not tainted 4.11.0-rc5+ #2944
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs
     01/01/2011
     Call Trace:
      dump_stack+0x172/0x1c0 lib/dump_stack.c:42
      is_logbuf_locked mm/kmsan/kmsan.c:59 [inline]
      kmsan_report+0x12a/0x180 mm/kmsan/kmsan.c:938
      native_save_fl arch/x86/include/asm/irqflags.h:18 [inline]
      arch_local_save_flags arch/x86/include/asm/irqflags.h:72 [inline]
      arch_local_irq_save arch/x86/include/asm/irqflags.h:113 [inline]
      __msan_warning_32+0x61/0xb0 mm/kmsan/kmsan_instr.c:467
      sctp_v6_cmp_addr+0x8d4/0x9f0 net/sctp/ipv6.c:517
      sctp_v6_get_dst+0x8c7/0x1630 net/sctp/ipv6.c:290
      sctp_transport_route+0x101/0x570 net/sctp/transport.c:292
      sctp_assoc_add_peer+0x66d/0x16f0 net/sctp/associola.c:651
      sctp_sendmsg+0x35a5/0x4f90 net/sctp/socket.c:1871
      inet_sendmsg+0x498/0x670 net/ipv4/af_inet.c:762
      sock_sendmsg_nosec net/socket.c:633 [inline]
      sock_sendmsg net/socket.c:643 [inline]
      SYSC_sendto+0x608/0x710 net/socket.c:1696
      SyS_sendto+0x8a/0xb0 net/socket.c:1664
      entry_SYSCALL_64_fastpath+0x13/0x94
     RIP: 0033:0x44b479
     RSP: 002b:00007f6213f21c08 EFLAGS: 00000286 ORIG_RAX: 000000000000002c
     RAX: ffffffffffffffda RBX: 0000000020000000 RCX: 000000000044b479
     RDX: 0000000000000041 RSI: 0000000020edd000 RDI: 0000000000000006
     RBP: 00000000007080a8 R08: 0000000020b85fe4 R09: 000000000000001c
     R10: 0000000000040005 R11: 0000000000000286 R12: 00000000ffffffff
     R13: 0000000000003760 R14: 00000000006e5820 R15: 0000000000ff8000
     origin description: ----dst_saddr@sctp_v6_get_dst
     local variable created at:
      sk_fullsock include/net/sock.h:2321 [inline]
      inet6_sk include/linux/ipv6.h:309 [inline]
      sctp_v6_get_dst+0x91/0x1630 net/sctp/ipv6.c:241
      sctp_transport_route+0x101/0x570 net/sctp/transport.c:292
    ==================================================================
    
    Signed-off-by: Alexander Potapenko <glider@google.com>
    Reviewed-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ramosian-glider authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    62b3580 View commit details
    Browse the repository at this point in the history
  18. tipc: fix use-after-free

    [ Upstream commit 5bfd37b ]
    
    syszkaller reported use-after-free in tipc [1]
    
    When msg->rep skb is freed, set the pointer to NULL,
    so that caller does not free it again.
    
    [1]
    
    ==================================================================
    BUG: KASAN: use-after-free in skb_push+0xd4/0xe0 net/core/skbuff.c:1466
    Read of size 8 at addr ffff8801c6e71e90 by task syz-executor5/4115
    
    CPU: 1 PID: 4115 Comm: syz-executor5 Not tainted 4.13.0-rc4+ #32
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:16 [inline]
     dump_stack+0x194/0x257 lib/dump_stack.c:52
     print_address_description+0x73/0x250 mm/kasan/report.c:252
     kasan_report_error mm/kasan/report.c:351 [inline]
     kasan_report+0x24e/0x340 mm/kasan/report.c:409
     __asan_report_load8_noabort+0x14/0x20 mm/kasan/report.c:430
     skb_push+0xd4/0xe0 net/core/skbuff.c:1466
     tipc_nl_compat_recv+0x833/0x18f0 net/tipc/netlink_compat.c:1209
     genl_family_rcv_msg+0x7b7/0xfb0 net/netlink/genetlink.c:598
     genl_rcv_msg+0xb2/0x140 net/netlink/genetlink.c:623
     netlink_rcv_skb+0x216/0x440 net/netlink/af_netlink.c:2397
     genl_rcv+0x28/0x40 net/netlink/genetlink.c:634
     netlink_unicast_kernel net/netlink/af_netlink.c:1265 [inline]
     netlink_unicast+0x4e8/0x6f0 net/netlink/af_netlink.c:1291
     netlink_sendmsg+0xa4a/0xe60 net/netlink/af_netlink.c:1854
     sock_sendmsg_nosec net/socket.c:633 [inline]
     sock_sendmsg+0xca/0x110 net/socket.c:643
     sock_write_iter+0x31a/0x5d0 net/socket.c:898
     call_write_iter include/linux/fs.h:1743 [inline]
     new_sync_write fs/read_write.c:457 [inline]
     __vfs_write+0x684/0x970 fs/read_write.c:470
     vfs_write+0x189/0x510 fs/read_write.c:518
     SYSC_write fs/read_write.c:565 [inline]
     SyS_write+0xef/0x220 fs/read_write.c:557
     entry_SYSCALL_64_fastpath+0x1f/0xbe
    RIP: 0033:0x4512e9
    RSP: 002b:00007f3bc8184c08 EFLAGS: 00000216 ORIG_RAX: 0000000000000001
    RAX: ffffffffffffffda RBX: 0000000000718000 RCX: 00000000004512e9
    RDX: 0000000000000020 RSI: 0000000020fdb000 RDI: 0000000000000006
    RBP: 0000000000000086 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000216 R12: 00000000004b5e76
    R13: 00007f3bc8184b48 R14: 00000000004b5e86 R15: 0000000000000000
    
    Allocated by task 4115:
     save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:59
     save_stack+0x43/0xd0 mm/kasan/kasan.c:447
     set_track mm/kasan/kasan.c:459 [inline]
     kasan_kmalloc+0xad/0xe0 mm/kasan/kasan.c:551
     kasan_slab_alloc+0x12/0x20 mm/kasan/kasan.c:489
     kmem_cache_alloc_node+0x13d/0x750 mm/slab.c:3651
     __alloc_skb+0xf1/0x740 net/core/skbuff.c:219
     alloc_skb include/linux/skbuff.h:903 [inline]
     tipc_tlv_alloc+0x26/0xb0 net/tipc/netlink_compat.c:148
     tipc_nl_compat_dumpit+0xf2/0x3c0 net/tipc/netlink_compat.c:248
     tipc_nl_compat_handle net/tipc/netlink_compat.c:1130 [inline]
     tipc_nl_compat_recv+0x756/0x18f0 net/tipc/netlink_compat.c:1199
     genl_family_rcv_msg+0x7b7/0xfb0 net/netlink/genetlink.c:598
     genl_rcv_msg+0xb2/0x140 net/netlink/genetlink.c:623
     netlink_rcv_skb+0x216/0x440 net/netlink/af_netlink.c:2397
     genl_rcv+0x28/0x40 net/netlink/genetlink.c:634
     netlink_unicast_kernel net/netlink/af_netlink.c:1265 [inline]
     netlink_unicast+0x4e8/0x6f0 net/netlink/af_netlink.c:1291
     netlink_sendmsg+0xa4a/0xe60 net/netlink/af_netlink.c:1854
     sock_sendmsg_nosec net/socket.c:633 [inline]
     sock_sendmsg+0xca/0x110 net/socket.c:643
     sock_write_iter+0x31a/0x5d0 net/socket.c:898
     call_write_iter include/linux/fs.h:1743 [inline]
     new_sync_write fs/read_write.c:457 [inline]
     __vfs_write+0x684/0x970 fs/read_write.c:470
     vfs_write+0x189/0x510 fs/read_write.c:518
     SYSC_write fs/read_write.c:565 [inline]
     SyS_write+0xef/0x220 fs/read_write.c:557
     entry_SYSCALL_64_fastpath+0x1f/0xbe
    
    Freed by task 4115:
     save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:59
     save_stack+0x43/0xd0 mm/kasan/kasan.c:447
     set_track mm/kasan/kasan.c:459 [inline]
     kasan_slab_free+0x71/0xc0 mm/kasan/kasan.c:524
     __cache_free mm/slab.c:3503 [inline]
     kmem_cache_free+0x77/0x280 mm/slab.c:3763
     kfree_skbmem+0x1a1/0x1d0 net/core/skbuff.c:622
     __kfree_skb net/core/skbuff.c:682 [inline]
     kfree_skb+0x165/0x4c0 net/core/skbuff.c:699
     tipc_nl_compat_dumpit+0x36a/0x3c0 net/tipc/netlink_compat.c:260
     tipc_nl_compat_handle net/tipc/netlink_compat.c:1130 [inline]
     tipc_nl_compat_recv+0x756/0x18f0 net/tipc/netlink_compat.c:1199
     genl_family_rcv_msg+0x7b7/0xfb0 net/netlink/genetlink.c:598
     genl_rcv_msg+0xb2/0x140 net/netlink/genetlink.c:623
     netlink_rcv_skb+0x216/0x440 net/netlink/af_netlink.c:2397
     genl_rcv+0x28/0x40 net/netlink/genetlink.c:634
     netlink_unicast_kernel net/netlink/af_netlink.c:1265 [inline]
     netlink_unicast+0x4e8/0x6f0 net/netlink/af_netlink.c:1291
     netlink_sendmsg+0xa4a/0xe60 net/netlink/af_netlink.c:1854
     sock_sendmsg_nosec net/socket.c:633 [inline]
     sock_sendmsg+0xca/0x110 net/socket.c:643
     sock_write_iter+0x31a/0x5d0 net/socket.c:898
     call_write_iter include/linux/fs.h:1743 [inline]
     new_sync_write fs/read_write.c:457 [inline]
     __vfs_write+0x684/0x970 fs/read_write.c:470
     vfs_write+0x189/0x510 fs/read_write.c:518
     SYSC_write fs/read_write.c:565 [inline]
     SyS_write+0xef/0x220 fs/read_write.c:557
     entry_SYSCALL_64_fastpath+0x1f/0xbe
    
    The buggy address belongs to the object at ffff8801c6e71dc0
     which belongs to the cache skbuff_head_cache of size 224
    The buggy address is located 208 bytes inside of
     224-byte region [ffff8801c6e71dc0, ffff8801c6e71ea0)
    The buggy address belongs to the page:
    page:ffffea00071b9c40 count:1 mapcount:0 mapping:ffff8801c6e71000 index:0x0
    flags: 0x200000000000100(slab)
    raw: 0200000000000100 ffff8801c6e71000 0000000000000000 000000010000000c
    raw: ffffea0007224a20 ffff8801d98caf48 ffff8801d9e79040 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff8801c6e71d80: fc fc fc fc fc fc fc fc fb fb fb fb fb fb fb fb
     ffff8801c6e71e00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    >ffff8801c6e71e80: fb fb fb fb fc fc fc fc fc fc fc fc fc fc fc fc
                             ^
     ffff8801c6e71f00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
     ffff8801c6e71f80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    ==================================================================
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov  <dvyukov@google.com>
    Cc: Jon Maloy <jon.maloy@ericsson.com>
    Cc: Ying Xue <ying.xue@windriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Eric Dumazet authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    c549de4 View commit details
    Browse the repository at this point in the history
  19. ipv6: reset fn->rr_ptr when replacing route

    [ Upstream commit 383143f ]
    
    syzcaller reported the following use-after-free issue in rt6_select():
    BUG: KASAN: use-after-free in rt6_select net/ipv6/route.c:755 [inline] at addr ffff8800bc6994e8
    BUG: KASAN: use-after-free in ip6_pol_route.isra.46+0x1429/0x1470 net/ipv6/route.c:1084 at addr ffff8800bc6994e8
    Read of size 4 by task syz-executor1/439628
    CPU: 0 PID: 439628 Comm: syz-executor1 Not tainted 4.3.5+ #8
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
     0000000000000000 ffff88018fe435b0 ffffffff81ca384d ffff8801d3588c00
     ffff8800bc699380 ffff8800bc699500 dffffc0000000000 ffff8801d40a47c0
     ffff88018fe435d8 ffffffff81735751 ffff88018fe43660 ffff8800bc699380
    Call Trace:
     [<ffffffff81ca384d>] __dump_stack lib/dump_stack.c:15 [inline]
     [<ffffffff81ca384d>] dump_stack+0xc1/0x124 lib/dump_stack.c:51
    sctp: [Deprecated]: syz-executor0 (pid 439615) Use of struct sctp_assoc_value in delayed_ack socket option.
    Use struct sctp_sack_info instead
     [<ffffffff81735751>] kasan_object_err+0x21/0x70 mm/kasan/report.c:158
     [<ffffffff817359c4>] print_address_description mm/kasan/report.c:196 [inline]
     [<ffffffff817359c4>] kasan_report_error+0x1b4/0x4a0 mm/kasan/report.c:285
     [<ffffffff81735d93>] kasan_report mm/kasan/report.c:305 [inline]
     [<ffffffff81735d93>] __asan_report_load4_noabort+0x43/0x50 mm/kasan/report.c:325
     [<ffffffff82a28e39>] rt6_select net/ipv6/route.c:755 [inline]
     [<ffffffff82a28e39>] ip6_pol_route.isra.46+0x1429/0x1470 net/ipv6/route.c:1084
     [<ffffffff82a28fb1>] ip6_pol_route_output+0x81/0xb0 net/ipv6/route.c:1203
     [<ffffffff82ab0a50>] fib6_rule_action+0x1f0/0x680 net/ipv6/fib6_rules.c:95
     [<ffffffff8265cbb6>] fib_rules_lookup+0x2a6/0x7a0 net/core/fib_rules.c:223
     [<ffffffff82ab1430>] fib6_rule_lookup+0xd0/0x250 net/ipv6/fib6_rules.c:41
     [<ffffffff82a22006>] ip6_route_output+0x1d6/0x2c0 net/ipv6/route.c:1224
     [<ffffffff829e83d2>] ip6_dst_lookup_tail+0x4d2/0x890 net/ipv6/ip6_output.c:943
     [<ffffffff829e889a>] ip6_dst_lookup_flow+0x9a/0x250 net/ipv6/ip6_output.c:1079
     [<ffffffff82a9f7d8>] ip6_datagram_dst_update+0x538/0xd40 net/ipv6/datagram.c:91
     [<ffffffff82aa0978>] __ip6_datagram_connect net/ipv6/datagram.c:251 [inline]
     [<ffffffff82aa0978>] ip6_datagram_connect+0x518/0xe50 net/ipv6/datagram.c:272
     [<ffffffff82aa1313>] ip6_datagram_connect_v6_only+0x63/0x90 net/ipv6/datagram.c:284
     [<ffffffff8292f790>] inet_dgram_connect+0x170/0x1f0 net/ipv4/af_inet.c:564
     [<ffffffff82565547>] SYSC_connect+0x1a7/0x2f0 net/socket.c:1582
     [<ffffffff8256a649>] SyS_connect+0x29/0x30 net/socket.c:1563
     [<ffffffff82c72032>] entry_SYSCALL_64_fastpath+0x12/0x17
    Object at ffff8800bc699380, in cache ip6_dst_cache size: 384
    
    The root cause of it is that in fib6_add_rt2node(), when it replaces an
    existing route with the new one, it does not update fn->rr_ptr.
    This commit resets fn->rr_ptr to NULL when it points to a route which is
    replaced in fib6_add_rt2node().
    
    Fixes: 2759647 ("ipv6: fix ECMP route replacement")
    Signed-off-by: Wei Wang <weiwan@google.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    tracywwnj authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    368129f View commit details
    Browse the repository at this point in the history
  20. ipv6: repair fib6 tree in failure case

    [ Upstream commit 348a400 ]
    
    In fib6_add(), it is possible that fib6_add_1() picks an intermediate
    node and sets the node's fn->leaf to NULL in order to add this new
    route. However, if fib6_add_rt2node() fails to add the new
    route for some reason, fn->leaf will be left as NULL and could
    potentially cause crash when fn->leaf is accessed in fib6_locate().
    This patch makes sure fib6_repair_tree() is called to properly repair
    fn->leaf in the above failure case.
    
    Here is the syzkaller reported general protection fault in fib6_locate:
    kasan: CONFIG_KASAN_INLINE enabled
    kasan: GPF could be caused by NULL-ptr deref or user memory access
    general protection fault: 0000 [#1] SMP KASAN
    Modules linked in:
    CPU: 0 PID: 40937 Comm: syz-executor3 Not tainted
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    task: ffff8801d7d64100 ti: ffff8801d01a0000 task.ti: ffff8801d01a0000
    RIP: 0010:[<ffffffff82a3e0e1>]  [<ffffffff82a3e0e1>] __ipv6_prefix_equal64_half include/net/ipv6.h:475 [inline]
    RIP: 0010:[<ffffffff82a3e0e1>]  [<ffffffff82a3e0e1>] ipv6_prefix_equal include/net/ipv6.h:492 [inline]
    RIP: 0010:[<ffffffff82a3e0e1>]  [<ffffffff82a3e0e1>] fib6_locate_1 net/ipv6/ip6_fib.c:1210 [inline]
    RIP: 0010:[<ffffffff82a3e0e1>]  [<ffffffff82a3e0e1>] fib6_locate+0x281/0x3c0 net/ipv6/ip6_fib.c:1233
    RSP: 0018:ffff8801d01a36a8  EFLAGS: 00010202
    RAX: 0000000000000020 RBX: ffff8801bc790e00 RCX: ffffc90002983000
    RDX: 0000000000001219 RSI: ffff8801d01a37a0 RDI: 0000000000000100
    RBP: ffff8801d01a36f0 R08: 00000000000000ff R09: 0000000000000000
    R10: 0000000000000003 R11: 0000000000000000 R12: 0000000000000001
    R13: dffffc0000000000 R14: ffff8801d01a37a0 R15: 0000000000000000
    FS:  00007f6afd68c700(0000) GS:ffff8801db400000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00000000004c6340 CR3: 00000000ba41f000 CR4: 00000000001426f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Stack:
     ffff8801d01a37a8 ffff8801d01a3780 ffffed003a0346f5 0000000c82a23ea0
     ffff8800b7bd7700 ffff8801d01a3780 ffff8800b6a1c940 ffffffff82a23ea0
     ffff8801d01a3920 ffff8801d01a3748 ffffffff82a223d6 ffff8801d7d64988
    Call Trace:
     [<ffffffff82a223d6>] ip6_route_del+0x106/0x570 net/ipv6/route.c:2109
     [<ffffffff82a23f9d>] inet6_rtm_delroute+0xfd/0x100 net/ipv6/route.c:3075
     [<ffffffff82621359>] rtnetlink_rcv_msg+0x549/0x7a0 net/core/rtnetlink.c:3450
     [<ffffffff8274c1d1>] netlink_rcv_skb+0x141/0x370 net/netlink/af_netlink.c:2281
     [<ffffffff82613ddf>] rtnetlink_rcv+0x2f/0x40 net/core/rtnetlink.c:3456
     [<ffffffff8274ad38>] netlink_unicast_kernel net/netlink/af_netlink.c:1206 [inline]
     [<ffffffff8274ad38>] netlink_unicast+0x518/0x750 net/netlink/af_netlink.c:1232
     [<ffffffff8274b83e>] netlink_sendmsg+0x8ce/0xc30 net/netlink/af_netlink.c:1778
     [<ffffffff82564aff>] sock_sendmsg_nosec net/socket.c:609 [inline]
     [<ffffffff82564aff>] sock_sendmsg+0xcf/0x110 net/socket.c:619
     [<ffffffff82564d62>] sock_write_iter+0x222/0x3a0 net/socket.c:834
     [<ffffffff8178523d>] new_sync_write+0x1dd/0x2b0 fs/read_write.c:478
     [<ffffffff817853f4>] __vfs_write+0xe4/0x110 fs/read_write.c:491
     [<ffffffff81786c38>] vfs_write+0x178/0x4b0 fs/read_write.c:538
     [<ffffffff817892a9>] SYSC_write fs/read_write.c:585 [inline]
     [<ffffffff817892a9>] SyS_write+0xd9/0x1b0 fs/read_write.c:577
     [<ffffffff82c71e32>] entry_SYSCALL_64_fastpath+0x12/0x17
    
    Note: there is no "Fixes" tag as this seems to be a bug introduced
    very early.
    
    Signed-off-by: Wei Wang <weiwan@google.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    tracywwnj authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    7bbc60d View commit details
    Browse the repository at this point in the history
  21. tcp: when rearming RTO, if RTO time is in past then fire RTO ASAP

    [ Upstream commit cdbeb63 ]
    
    In some situations tcp_send_loss_probe() can realize that it's unable
    to send a loss probe (TLP), and falls back to calling tcp_rearm_rto()
    to schedule an RTO timer. In such cases, sometimes tcp_rearm_rto()
    realizes that the RTO was eligible to fire immediately or at some
    point in the past (delta_us <= 0). Previously in such cases
    tcp_rearm_rto() was scheduling such "overdue" RTOs to happen at now +
    icsk_rto, which caused needless delays of hundreds of milliseconds
    (and non-linear behavior that made reproducible testing
    difficult). This commit changes the logic to schedule "overdue" RTOs
    ASAP, rather than at now + icsk_rto.
    
    Fixes: 6ba8a3b ("tcp: Tail loss probe (TLP)")
    Suggested-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    nealcardwell authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    2d093ad View commit details
    Browse the repository at this point in the history
  22. net/mlx4_core: Enable 4K UAR if SRIOV module parameter is not enabled

    [ Upstream commit ca3d89a ]
    
    enable_4k_uar module parameter was added in patch cited below to
    address the backward compatibility issue in SRIOV when the VM has
    system's PAGE_SIZE uar implementation and the Hypervisor has 4k uar
    implementation.
    
    The above compatibility issue does not exist in the non SRIOV case.
    In this patch, we always enable 4k uar implementation if SRIOV
    is not enabled on mlx4's supported cards.
    
    Fixes: 76e39cc ("net/mlx4_core: Fix backward compatibility on VFs")
    Signed-off-by: Huy Nguyen <huyn@mellanox.com>
    Reviewed-by: Daniel Jurgens <danielj@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Huy Nguyen authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    754df4d View commit details
    Browse the repository at this point in the history
  23. irda: do not leak initialized list.dev to userspace

    [ Upstream commit b024d94 ]
    
    list.dev has not been initialized and so the copy_to_user is copying
    data from the stack back to user space which is a potential
    information leak. Fix this ensuring all of list is initialized to
    zero.
    
    Detected by CoverityScan, CID#1357894 ("Uninitialized scalar variable")
    
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Colin Ian King authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    f4e4a29 View commit details
    Browse the repository at this point in the history
  24. net: sched: fix NULL pointer dereference when action calls some targets

    [ Upstream commit 4f8a881 ]
    
    As we know in some target's checkentry it may dereference par.entryinfo
    to check entry stuff inside. But when sched action calls xt_check_target,
    par.entryinfo is set with NULL. It would cause kernel panic when calling
    some targets.
    
    It can be reproduce with:
      # tc qd add dev eth1 ingress handle ffff:
      # tc filter add dev eth1 parent ffff: u32 match u32 0 0 action xt \
        -j ECN --ecn-tcp-remove
    
    It could also crash kernel when using target CLUSTERIP or TPROXY.
    
    By now there's no proper value for par.entryinfo in ipt_init_target,
    but it can not be set with NULL. This patch is to void all these
    panics by setting it with an ipt_entry obj with all members = 0.
    
    Note that this issue has been there since the very beginning.
    
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    lxin authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    09e1d36 View commit details
    Browse the repository at this point in the history
  25. net_sched: fix order of queue length updates in qdisc_replace()

    [ Upstream commit 68a66d1 ]
    
    This important to call qdisc_tree_reduce_backlog() after changing queue
    length. Parent qdisc should deactivate class in ->qlen_notify() called from
    qdisc_tree_reduce_backlog() but this happens only if qdisc->q.qlen in zero.
    
    Missed class deactivations leads to crashes/warnings at picking packets
    from empty qdisc and corrupting state at reactivating this class in future.
    
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Fixes: 86a7996 ("net_sched: introduce qdisc_replace() helper")
    Acked-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    koct9i authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    d8a4ae0 View commit details
    Browse the repository at this point in the history
  26. bpf, verifier: add additional patterns to evaluate_reg_imm_alu

    [ Upstream commit 4318870 ]
    
    Currently the verifier does not track imm across alu operations when
    the source register is of unknown type. This adds additional pattern
    matching to catch this and track imm. We've seen LLVM generating this
    pattern while working on cilium.
    
    Signed-off-by: John Fastabend <john.fastabend@gmail.com>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jrfastab authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    659ee96 View commit details
    Browse the repository at this point in the history
  27. bpf: fix mixed signed/unsigned derived min/max value bounds

    [ Upstream commit 4cabc5b ]
    
    Edward reported that there's an issue in min/max value bounds
    tracking when signed and unsigned compares both provide hints
    on limits when having unknown variables. E.g. a program such
    as the following should have been rejected:
    
       0: (7a) *(u64 *)(r10 -8) = 0
       1: (bf) r2 = r10
       2: (07) r2 += -8
       3: (18) r1 = 0xffff8a94cda93400
       5: (85) call bpf_map_lookup_elem#1
       6: (15) if r0 == 0x0 goto pc+7
      R0=map_value(ks=8,vs=8,id=0),min_value=0,max_value=0 R10=fp
       7: (7a) *(u64 *)(r10 -16) = -8
       8: (79) r1 = *(u64 *)(r10 -16)
       9: (b7) r2 = -1
      10: (2d) if r1 > r2 goto pc+3
      R0=map_value(ks=8,vs=8,id=0),min_value=0,max_value=0 R1=inv,min_value=0
      R2=imm-1,max_value=18446744073709551615,min_align=1 R10=fp
      11: (65) if r1 s> 0x1 goto pc+2
      R0=map_value(ks=8,vs=8,id=0),min_value=0,max_value=0 R1=inv,min_value=0,max_value=1
      R2=imm-1,max_value=18446744073709551615,min_align=1 R10=fp
      12: (0f) r0 += r1
      13: (72) *(u8 *)(r0 +0) = 0
      R0=map_value_adj(ks=8,vs=8,id=0),min_value=0,max_value=1 R1=inv,min_value=0,max_value=1
      R2=imm-1,max_value=18446744073709551615,min_align=1 R10=fp
      14: (b7) r0 = 0
      15: (95) exit
    
    What happens is that in the first part ...
    
       8: (79) r1 = *(u64 *)(r10 -16)
       9: (b7) r2 = -1
      10: (2d) if r1 > r2 goto pc+3
    
    ... r1 carries an unsigned value, and is compared as unsigned
    against a register carrying an immediate. Verifier deduces in
    reg_set_min_max() that since the compare is unsigned and operation
    is greater than (>), that in the fall-through/false case, r1's
    minimum bound must be 0 and maximum bound must be r2. Latter is
    larger than the bound and thus max value is reset back to being
    'invalid' aka BPF_REGISTER_MAX_RANGE. Thus, r1 state is now
    'R1=inv,min_value=0'. The subsequent test ...
    
      11: (65) if r1 s> 0x1 goto pc+2
    
    ... is a signed compare of r1 with immediate value 1. Here,
    verifier deduces in reg_set_min_max() that since the compare
    is signed this time and operation is greater than (>), that
    in the fall-through/false case, we can deduce that r1's maximum
    bound must be 1, meaning with prior test, we result in r1 having
    the following state: R1=inv,min_value=0,max_value=1. Given that
    the actual value this holds is -8, the bounds are wrongly deduced.
    When this is being added to r0 which holds the map_value(_adj)
    type, then subsequent store access in above case will go through
    check_mem_access() which invokes check_map_access_adj(), that
    will then probe whether the map memory is in bounds based
    on the min_value and max_value as well as access size since
    the actual unknown value is min_value <= x <= max_value; commit
    fce366a ("bpf, verifier: fix alu ops against map_value{,
    _adj} register types") provides some more explanation on the
    semantics.
    
    It's worth to note in this context that in the current code,
    min_value and max_value tracking are used for two things, i)
    dynamic map value access via check_map_access_adj() and since
    commit 06c1c04 ("bpf: allow helpers access to variable memory")
    ii) also enforced at check_helper_mem_access() when passing a
    memory address (pointer to packet, map value, stack) and length
    pair to a helper and the length in this case is an unknown value
    defining an access range through min_value/max_value in that
    case. The min_value/max_value tracking is /not/ used in the
    direct packet access case to track ranges. However, the issue
    also affects case ii), for example, the following crafted program
    based on the same principle must be rejected as well:
    
       0: (b7) r2 = 0
       1: (bf) r3 = r10
       2: (07) r3 += -512
       3: (7a) *(u64 *)(r10 -16) = -8
       4: (79) r4 = *(u64 *)(r10 -16)
       5: (b7) r6 = -1
       6: (2d) if r4 > r6 goto pc+5
      R1=ctx R2=imm0,min_value=0,max_value=0,min_align=2147483648 R3=fp-512
      R4=inv,min_value=0 R6=imm-1,max_value=18446744073709551615,min_align=1 R10=fp
       7: (65) if r4 s> 0x1 goto pc+4
      R1=ctx R2=imm0,min_value=0,max_value=0,min_align=2147483648 R3=fp-512
      R4=inv,min_value=0,max_value=1 R6=imm-1,max_value=18446744073709551615,min_align=1
      R10=fp
       8: (07) r4 += 1
       9: (b7) r5 = 0
      10: (6a) *(u16 *)(r10 -512) = 0
      11: (85) call bpf_skb_load_bytes#26
      12: (b7) r0 = 0
      13: (95) exit
    
    Meaning, while we initialize the max_value stack slot that the
    verifier thinks we access in the [1,2] range, in reality we
    pass -7 as length which is interpreted as u32 in the helper.
    Thus, this issue is relevant also for the case of helper ranges.
    Resetting both bounds in check_reg_overflow() in case only one
    of them exceeds limits is also not enough as similar test can be
    created that uses values which are within range, thus also here
    learned min value in r1 is incorrect when mixed with later signed
    test to create a range:
    
       0: (7a) *(u64 *)(r10 -8) = 0
       1: (bf) r2 = r10
       2: (07) r2 += -8
       3: (18) r1 = 0xffff880ad081fa00
       5: (85) call bpf_map_lookup_elem#1
       6: (15) if r0 == 0x0 goto pc+7
      R0=map_value(ks=8,vs=8,id=0),min_value=0,max_value=0 R10=fp
       7: (7a) *(u64 *)(r10 -16) = -8
       8: (79) r1 = *(u64 *)(r10 -16)
       9: (b7) r2 = 2
      10: (3d) if r2 >= r1 goto pc+3
      R0=map_value(ks=8,vs=8,id=0),min_value=0,max_value=0 R1=inv,min_value=3
      R2=imm2,min_value=2,max_value=2,min_align=2 R10=fp
      11: (65) if r1 s> 0x4 goto pc+2
      R0=map_value(ks=8,vs=8,id=0),min_value=0,max_value=0
      R1=inv,min_value=3,max_value=4 R2=imm2,min_value=2,max_value=2,min_align=2 R10=fp
      12: (0f) r0 += r1
      13: (72) *(u8 *)(r0 +0) = 0
      R0=map_value_adj(ks=8,vs=8,id=0),min_value=3,max_value=4
      R1=inv,min_value=3,max_value=4 R2=imm2,min_value=2,max_value=2,min_align=2 R10=fp
      14: (b7) r0 = 0
      15: (95) exit
    
    This leaves us with two options for fixing this: i) to invalidate
    all prior learned information once we switch signed context, ii)
    to track min/max signed and unsigned boundaries separately as
    done in [0]. (Given latter introduces major changes throughout
    the whole verifier, it's rather net-next material, thus this
    patch follows option i), meaning we can derive bounds either
    from only signed tests or only unsigned tests.) There is still the
    case of adjust_reg_min_max_vals(), where we adjust bounds on ALU
    operations, meaning programs like the following where boundaries
    on the reg get mixed in context later on when bounds are merged
    on the dst reg must get rejected, too:
    
       0: (7a) *(u64 *)(r10 -8) = 0
       1: (bf) r2 = r10
       2: (07) r2 += -8
       3: (18) r1 = 0xffff89b2bf87ce00
       5: (85) call bpf_map_lookup_elem#1
       6: (15) if r0 == 0x0 goto pc+6
      R0=map_value(ks=8,vs=8,id=0),min_value=0,max_value=0 R10=fp
       7: (7a) *(u64 *)(r10 -16) = -8
       8: (79) r1 = *(u64 *)(r10 -16)
       9: (b7) r2 = 2
      10: (3d) if r2 >= r1 goto pc+2
      R0=map_value(ks=8,vs=8,id=0),min_value=0,max_value=0 R1=inv,min_value=3
      R2=imm2,min_value=2,max_value=2,min_align=2 R10=fp
      11: (b7) r7 = 1
      12: (65) if r7 s> 0x0 goto pc+2
      R0=map_value(ks=8,vs=8,id=0),min_value=0,max_value=0 R1=inv,min_value=3
      R2=imm2,min_value=2,max_value=2,min_align=2 R7=imm1,max_value=0 R10=fp
      13: (b7) r0 = 0
      14: (95) exit
    
      from 12 to 15: R0=map_value(ks=8,vs=8,id=0),min_value=0,max_value=0
      R1=inv,min_value=3 R2=imm2,min_value=2,max_value=2,min_align=2 R7=imm1,min_value=1 R10=fp
      15: (0f) r7 += r1
      16: (65) if r7 s> 0x4 goto pc+2
      R0=map_value(ks=8,vs=8,id=0),min_value=0,max_value=0 R1=inv,min_value=3
      R2=imm2,min_value=2,max_value=2,min_align=2 R7=inv,min_value=4,max_value=4 R10=fp
      17: (0f) r0 += r7
      18: (72) *(u8 *)(r0 +0) = 0
      R0=map_value_adj(ks=8,vs=8,id=0),min_value=4,max_value=4 R1=inv,min_value=3
      R2=imm2,min_value=2,max_value=2,min_align=2 R7=inv,min_value=4,max_value=4 R10=fp
      19: (b7) r0 = 0
      20: (95) exit
    
    Meaning, in adjust_reg_min_max_vals() we must also reset range
    values on the dst when src/dst registers have mixed signed/
    unsigned derived min/max value bounds with one unbounded value
    as otherwise they can be added together deducing false boundaries.
    Once both boundaries are established from either ALU ops or
    compare operations w/o mixing signed/unsigned insns, then they
    can safely be added to other regs also having both boundaries
    established. Adding regs with one unbounded side to a map value
    where the bounded side has been learned w/o mixing ops is
    possible, but the resulting map value won't recover from that,
    meaning such op is considered invalid on the time of actual
    access. Invalid bounds are set on the dst reg in case i) src reg,
    or ii) in case dst reg already had them. The only way to recover
    would be to perform i) ALU ops but only 'add' is allowed on map
    value types or ii) comparisons, but these are disallowed on
    pointers in case they span a range. This is fine as only BPF_JEQ
    and BPF_JNE may be performed on PTR_TO_MAP_VALUE_OR_NULL registers
    which potentially turn them into PTR_TO_MAP_VALUE type depending
    on the branch, so only here min/max value cannot be invalidated
    for them.
    
    In terms of state pruning, value_from_signed is considered
    as well in states_equal() when dealing with adjusted map values.
    With regards to breaking existing programs, there is a small
    risk, but use-cases are rather quite narrow where this could
    occur and mixing compares probably unlikely.
    
    Joint work with Josef and Edward.
    
      [0] https://lists.iovisor.org/pipermail/iovisor-dev/2017-June/000822.html
    
    Fixes: 4846113 ("bpf: allow access into map value arrays")
    Reported-by: Edward Cree <ecree@solarflare.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Edward Cree <ecree@solarflare.com>
    Signed-off-by: Josef Bacik <jbacik@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    borkmann authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    eb6cf01 View commit details
    Browse the repository at this point in the history
  28. bpf/verifier: fix min/max handling in BPF_SUB

    [ Upstream commit 9305706 ]
    
    We have to subtract the src max from the dst min, and vice-versa, since
     (e.g.) the smallest result comes from the largest subtrahend.
    
    Fixes: 4846113 ("bpf: allow access into map value arrays")
    Signed-off-by: Edward Cree <ecree@solarflare.com>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ecree-solarflare authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    c9c682f View commit details
    Browse the repository at this point in the history
  29. Input: trackpoint - add new trackpoint firmware ID

    commit ec66768 upstream.
    
    Synaptics add new TP firmware ID: 0x2 and 0x3, for now both lower 2 bits
    are indicated as TP. Change the constant to bitwise values.
    
    This makes trackpoint to be recognized on Lenovo Carbon X1 Gen5 instead
    of it being identified as "PS/2 Generic Mouse".
    
    Signed-off-by: Aaron Ma <aaron.ma@canonical.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    pyma1 authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    38c36f9 View commit details
    Browse the repository at this point in the history
  30. Input: elan_i2c - add ELAN0602 ACPI ID to support Lenovo Yoga310

    commit 1d2226e upstream.
    
    Add ELAN0602 to the list of known ACPI IDs to enable support for ELAN
    touchpads found in Lenovo Yoga310.
    
    Signed-off-by: KT Liao <kt.liao@emc.com.tw>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    KT Liao authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    8dcee8e View commit details
    Browse the repository at this point in the history
  31. Input: ALPS - fix two-finger scroll breakage in right side on ALPS to…

    …uchpad
    
    commit 4a64658 upstream.
    
    Fixed the issue that two finger scroll does not work correctly
    on V8 protocol. The cause is that V8 protocol X-coordinate decode
    is wrong at SS4 PLUS device. I added SS4 PLUS X decode definition.
    
    Mote notes:
    the problem manifests itself by the commit e734839 ("Input: ALPS
    - fix V8+ protocol handling (73 03 28)"), where a fix for the V8+
    protocol was applied.  Although the culprit must have been present
    beforehand, the two-finger scroll worked casually even with the
    wrongly reported values by some reason.  It got broken by the commit
    above just because it changed x_max value, and this made libinput
    correctly figuring the MT events.  Since the X coord is reported as
    falsely doubled, the events on the right-half side go outside the
    boundary, thus they are no longer handled.  This resulted as a broken
    two-finger scroll.
    
    One finger event is decoded differently, and it didn't suffer from
    this problem.  The problem was only about MT events. --tiwai
    
    Fixes: e734839 ("Input: ALPS - fix V8+ protocol handling (73 03 28)")
    Signed-off-by: Masaki Ota <masaki.ota@jp.alps.com>
    Tested-by: Takashi Iwai <tiwai@suse.de>
    Tested-by: Paul Donohue <linux-kernel@PaulSD.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Masaki Ota authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    ddae9e6 View commit details
    Browse the repository at this point in the history
  32. KVM: s390: sthyi: fix sthyi inline assembly

    commit 4a4eefc upstream.
    
    The sthyi inline assembly misses register r3 within the clobber
    list. The sthyi instruction will always write a return code to
    register "R2+1", which in this case would be r3. Due to that we may
    have register corruption and see host crashes or data corruption
    depending on how gcc decided to allocate and use registers during
    compile time.
    
    Fixes: 95ca2cb ("KVM: s390: Add sthyi emulation")
    Reviewed-by: Janosch Frank <frankja@linux.vnet.ibm.com>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    heicarst authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    e516834 View commit details
    Browse the repository at this point in the history
  33. KVM: s390: sthyi: fix specification exception detection

    commit 857b8de upstream.
    
    sthyi should only generate a specification exception if the function
    code is zero and the response buffer is not on a 4k boundary.
    
    The current code would also test for unknown function codes if the
    response buffer, that is currently only defined for function code 0,
    is not on a 4k boundary and incorrectly inject a specification
    exception instead of returning with condition code 3 and return code 4
    (unsupported function code).
    
    Fix this by moving the boundary check.
    
    Fixes: 95ca2cb ("KVM: s390: Add sthyi emulation")
    Reviewed-by: Janosch Frank <frankja@linux.vnet.ibm.com>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    heicarst authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    6dc06cd View commit details
    Browse the repository at this point in the history
  34. KVM: x86: simplify handling of PKRU

    commit b9dd21e upstream.
    
    Move it to struct kvm_arch_vcpu, replacing guest_pkru_valid with a
    simple comparison against the host value of the register.  The write of
    PKRU in addition can be skipped if the guest has not enabled the feature.
    Once we do this, we need not test OSPKE in the host anymore, because
    guest_CR4.PKE=1 implies host_CR4.PKE=1.
    
    The static PKU test is kept to elide the code on older CPUs.
    
    Suggested-by: Yang Zhang <zy107165@alibaba-inc.com>
    Fixes: 1be0e61
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    bonzini authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    d0e52c8 View commit details
    Browse the repository at this point in the history
  35. KVM, pkeys: do not use PKRU value in vcpu->arch.guest_fpu.state

    commit 38cfd5e upstream.
    
    The host pkru is restored right after vcpu exit (commit 1be0e61), so
    KVM_GET_XSAVE will return the host PKRU value instead.  Fix this by
    using the guest PKRU explicitly in fill_xsave and load_xsave.  This
    part is based on a patch by Junkang Fu.
    
    The host PKRU data may also not match the value in vcpu->arch.guest_fpu.state,
    because it could have been changed by userspace since the last time
    it was saved, so skip loading it in kvm_load_guest_fpu.
    
    Reported-by: Junkang Fu <junkang.fjk@alibaba-inc.com>
    Cc: Yang Zhang <zy107165@alibaba-inc.com>
    Fixes: 1be0e61
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    bonzini authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    3c498d4 View commit details
    Browse the repository at this point in the history
  36. KVM: x86: block guest protection keys unless the host has them enabled

    commit c469268 upstream.
    
    If the host has protection keys disabled, we cannot read and write the
    guest PKRU---RDPKRU and WRPKRU fail with #GP(0) if CR4.PKE=0.  Block
    the PKU cpuid bit in that case.
    
    This ensures that guest_CR4.PKE=1 implies host_CR4.PKE=1.
    
    Fixes: 1be0e61
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    bonzini authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    2f76f62 View commit details
    Browse the repository at this point in the history
  37. ALSA: usb-audio: Add delay quirk for H650e/Jabra 550a USB headsets

    commit 07b3b5e upstream.
    
    These headsets reports a lot of: cannot set freq 44100 to ep 0x81
    and need a small delay between sample rate settings, just like
    Zoom R16/24. Add both headsets to the Zoom R16/24 quirk for
    a 1 ms delay between control msgs.
    
    Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    joakim-tjernlund authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    1157dcd View commit details
    Browse the repository at this point in the history
  38. ALSA: core: Fix unexpected error at replacing user TLV

    commit 88c54cd upstream.
    
    When user tries to replace the user-defined control TLV, the kernel
    checks the change of its content via memcmp().  The problem is that
    the kernel passes the return value from memcmp() as is.  memcmp()
    gives a non-zero negative value depending on the comparison result,
    and this shall be recognized as an error code.
    
    The patch covers that corner-case, return 1 properly for the changed
    TLV.
    
    Fixes: 8aa9b58 ("[ALSA] Control API - more robust TLV implementation")
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    tiwai authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    ba6b08b View commit details
    Browse the repository at this point in the history
  39. ALSA: hda - Add stereo mic quirk for Lenovo G50-70 (17aa:3978)

    commit bbba6f9 upstream.
    
    Lenovo G50-70 (17aa:3978) with Conexant codec chip requires the
    similar workaround for the inverted stereo dmic like other Lenovo
    models.
    
    Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1020657
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    tiwai authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    2f45c61 View commit details
    Browse the repository at this point in the history
  40. ALSA: firewire: fix NULL pointer dereference when releasing uninitial…

    …ized data of iso-resource
    
    commit 0c264af upstream.
    
    When calling 'iso_resource_free()' for uninitialized data, this function
    causes NULL pointer dereference due to its 'unit' member. This occurs when
    unplugging audio and music units on IEEE 1394 bus at failure of card
    registration.
    
    This commit fixes the bug. The bug exists since kernel v4.5.
    
    Fixes: 324540c ('ALSA: fireface: postpone sound card registration') at v4.12
    Fixes: 8865a31 ('ALSA: firewire-motu: postpone sound card registration') at v4.12
    Fixes: b610386 ('ALSA: firewire-tascam: deleyed registration of sound card') at v4.7
    Fixes: 86c8dd7 ('ALSA: firewire-digi00x: delayed registration of sound card') at v4.7
    Fixes: 6c29230 ('ALSA: oxfw: delayed registration of sound card') at v4.7
    Fixes: 7d3c1d5 ('ALSA: fireworks: delayed registration of sound card') at v4.7
    Fixes: 04a2c73 ('ALSA: bebob: delayed registration of sound card') at v4.7
    Fixes: b59fb19 ('ALSA: dice: postpone card registration') at v4.5
    Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    takaswie authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    59d0006 View commit details
    Browse the repository at this point in the history
  41. ALSA: firewire-motu: destroy stream data surely at failure of card in…

    …itialization
    
    commit dbd7396 upstream.
    
    When failing sound card registration after initializing stream data, this
    module leaves allocated data in stream data. This commit fixes the bug.
    
    Fixes: 9b2bb4f ('ALSA: firewire-motu: add stream management functionality')
    Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    takaswie authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    8537b1e View commit details
    Browse the repository at this point in the history
  42. ARCv2: SLC: Make sure busy bit is set properly for region ops

    commit b37174d upstream.
    
    c70c473 "ARCv2: SLC: Make sure busy bit is set properly on SLC flushing"
    fixes problem for entire SLC operation where the problem was initially
    caught. But given a nature of the issue it is perfectly possible for
    busy bit to be read incorrectly even when region operation was started.
    
    So extending initial fix for regional operation as well.
    
    Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    abrodkin authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    763ad31 View commit details
    Browse the repository at this point in the history
  43. ARCv2: PAE40: Explicitly set MSB counterpart of SLC region ops addresses

    commit 7d79cee upstream.
    
    It is necessary to explicitly set both SLC_AUX_RGN_START1 and SLC_AUX_RGN_END1
    which hold MSB bits of the physical address correspondingly of region start
    and end otherwise SLC region operation is executed in unpredictable manner
    
    Without this patch, SLC flushes on HSDK (IOC disabled) were taking
    seconds.
    
    Reported-by: Vladimir Kondratiev <vladimir.kondratiev@intel.com>
    Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    [vgupta: PAR40 regs only written if PAE40 exist]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    abrodkin authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    fcedf2f View commit details
    Browse the repository at this point in the history
  44. ARCv2: PAE40: set MSB even if !CONFIG_ARC_HAS_PAE40 but PAE exists in…

    … SoC
    
    commit b5ddb6d upstream.
    
    PAE40 confiuration in hardware extends some of the address registers
    for TLB/cache ops to 2 words.
    
    So far kernel was NOT setting the higher word if feature was not enabled
    in software which is wrong. Those need to be set to 0 in such case.
    
    Normally this would be done in the cache flush / tlb ops, however since
    these registers only exist conditionally, this would have to be
    conditional to a flag being set on boot which is expensive/ugly -
    specially for the more common case of PAE exists but not in use.
    Optimize that by zero'ing them once at boot - nobody will write to
    them afterwards
    
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    vineetgarc authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    8b36697 View commit details
    Browse the repository at this point in the history
  45. PM/hibernate: touch NMI watchdog when creating snapshot

    commit 556b969 upstream.
    
    There is a problem that when counting the pages for creating the
    hibernation snapshot will take significant amount of time, especially on
    system with large memory.  Since the counting job is performed with irq
    disabled, this might lead to NMI lockup.  The following warning were
    found on a system with 1.5TB DRAM:
    
      Freezing user space processes ... (elapsed 0.002 seconds) done.
      OOM killer disabled.
      PM: Preallocating image memory...
      NMI watchdog: Watchdog detected hard LOCKUP on cpu 27
      CPU: 27 PID: 3128 Comm: systemd-sleep Not tainted 4.13.0-0.rc2.git0.1.fc27.x86_64 #1
      task: ffff9f01971ac000 task.stack: ffffb1a3f325c000
      RIP: 0010:memory_bm_find_bit+0xf4/0x100
      Call Trace:
       swsusp_set_page_free+0x2b/0x30
       mark_free_pages+0x147/0x1c0
       count_data_pages+0x41/0xa0
       hibernate_preallocate_memory+0x80/0x450
       hibernation_snapshot+0x58/0x410
       hibernate+0x17c/0x310
       state_store+0xdf/0xf0
       kobj_attr_store+0xf/0x20
       sysfs_kf_write+0x37/0x40
       kernfs_fop_write+0x11c/0x1a0
       __vfs_write+0x37/0x170
       vfs_write+0xb1/0x1a0
       SyS_write+0x55/0xc0
       entry_SYSCALL_64_fastpath+0x1a/0xa5
      ...
      done (allocated 6590003 pages)
      PM: Allocated 26360012 kbytes in 19.89 seconds (1325.28 MB/s)
    
    It has taken nearly 20 seconds(2.10GHz CPU) thus the NMI lockup was
    triggered.  In case the timeout of the NMI watch dog has been set to 1
    second, a safe interval should be 6590003/20 = 320k pages in theory.
    However there might also be some platforms running at a lower frequency,
    so feed the watchdog every 100k pages.
    
    [yu.c.chen@intel.com: simplification]
      Link: http://lkml.kernel.org/r/1503460079-29721-1-git-send-email-yu.c.chen@intel.com
    [yu.c.chen@intel.com: use interval of 128k instead of 100k to avoid modulus]
    Link: http://lkml.kernel.org/r/1503328098-5120-1-git-send-email-yu.c.chen@intel.com
    Signed-off-by: Chen Yu <yu.c.chen@intel.com>
    Reported-by: Jan Filipcewicz <jan.filipcewicz@intel.com>
    Suggested-by: Michal Hocko <mhocko@suse.com>
    Reviewed-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Len Brown <lenb@kernel.org>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    yu-chen-surf authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    b271963 View commit details
    Browse the repository at this point in the history
  46. mm, shmem: fix handling /sys/kernel/mm/transparent_hugepage/shmem_ena…

    …bled
    
    commit 435c0b8 upstream.
    
    /sys/kernel/mm/transparent_hugepage/shmem_enabled controls if we want
    to allocate huge pages when allocate pages for private in-kernel shmem
    mount.
    
    Unfortunately, as Dan noticed, I've screwed it up and the only way to
    make kernel allocate huge page for the mount is to use "force" there.
    All other values will be effectively ignored.
    
    Link: http://lkml.kernel.org/r/20170822144254.66431-1-kirill.shutemov@linux.intel.com
    Fixes: 5a6e75f ("shmem: prepare huge= mount option and sysfs knob")
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    kiryl authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    735a252 View commit details
    Browse the repository at this point in the history
  47. dax: fix deadlock due to misaligned PMD faults

    commit fffa281 upstream.
    
    In DAX there are two separate places where the 2MiB range of a PMD is
    defined.
    
    The first is in the page tables, where a PMD mapping inserted for a
    given address spans from (vmf->address & PMD_MASK) to ((vmf->address &
    PMD_MASK) + PMD_SIZE - 1).  That is, from the 2MiB boundary below the
    address to the 2MiB boundary above the address.
    
    So, for example, a fault at address 3MiB (0x30 0000) falls within the
    PMD that ranges from 2MiB (0x20 0000) to 4MiB (0x40 0000).
    
    The second PMD range is in the mapping->page_tree, where a given file
    offset is covered by a radix tree entry that spans from one 2MiB aligned
    file offset to another 2MiB aligned file offset.
    
    So, for example, the file offset for 3MiB (pgoff 768) falls within the
    PMD range for the order 9 radix tree entry that ranges from 2MiB (pgoff
    512) to 4MiB (pgoff 1024).
    
    This system works so long as the addresses and file offsets for a given
    mapping both have the same offsets relative to the start of each PMD.
    
    Consider the case where the starting address for a given file isn't 2MiB
    aligned - say our faulting address is 3 MiB (0x30 0000), but that
    corresponds to the beginning of our file (pgoff 0).  Now all the PMDs in
    the mapping are misaligned so that the 2MiB range defined in the page
    tables never matches up with the 2MiB range defined in the radix tree.
    
    The current code notices this case for DAX faults to storage with the
    following test in dax_pmd_insert_mapping():
    
    	if (pfn_t_to_pfn(pfn) & PG_PMD_COLOUR)
    		goto unlock_fallback;
    
    This test makes sure that the pfn we get from the driver is 2MiB
    aligned, and relies on the assumption that the 2MiB alignment of the pfn
    we get back from the driver matches the 2MiB alignment of the faulting
    address.
    
    However, faults to holes were not checked and we could hit the problem
    described above.
    
    This was reported in response to the NVML nvml/src/test/pmempool_sync
    TEST5:
    
    	$ cd nvml/src/test/pmempool_sync
    	$ make TEST5
    
    You can grab NVML here:
    
    	https://github.com/pmem/nvml/
    
    The dmesg warning you see when you hit this error is:
    
      WARNING: CPU: 13 PID: 2900 at fs/dax.c:641 dax_insert_mapping_entry+0x2df/0x310
    
    Where we notice in dax_insert_mapping_entry() that the radix tree entry
    we are about to replace doesn't match the locked entry that we had
    previously inserted into the tree.  This happens because the initial
    insertion was done in grab_mapping_entry() using a pgoff calculated from
    the faulting address (vmf->address), and the replacement in
    dax_pmd_load_hole() => dax_insert_mapping_entry() is done using
    vmf->pgoff.
    
    In our failure case those two page offsets (one calculated from
    vmf->address, one using vmf->pgoff) point to different order 9 radix
    tree entries.
    
    This failure case can result in a deadlock because the radix tree unlock
    also happens on the pgoff calculated from vmf->address.  This means that
    the locked radix tree entry that we swapped in to the tree in
    dax_insert_mapping_entry() using vmf->pgoff is never unlocked, so all
    future faults to that 2MiB range will block forever.
    
    Fix this by validating that the faulting address's PMD offset matches
    the PMD offset from the start of the file.  This check is done at the
    very beginning of the fault and covers faults that would have mapped to
    storage as well as faults to holes.  I left the COLOUR check in
    dax_pmd_insert_mapping() in place in case we ever hit the insanity
    condition where the alignment of the pfn we get from the driver doesn't
    match the alignment of the userspace address.
    
    Link: http://lkml.kernel.org/r/20170822222436.18926-1-ross.zwisler@linux.intel.com
    Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
    Reported-by: "Slusarz, Marcin" <marcin.slusarz@intel.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Dave Chinner <david@fromorbit.com>
    Cc: Matthew Wilcox <mawilcox@microsoft.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Ross Zwisler authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    3a9495f View commit details
    Browse the repository at this point in the history
  48. i2c: designware: Fix system suspend

    commit a23318f upstream.
    
    The commit 8503ff1 ("i2c: designware: Avoid unnecessary resuming
    during system suspend"), may suggest to the PM core to try out the so
    called direct_complete path for system sleep. In this path, the PM core
    treats a runtime suspended device as it's already in a proper low power
    state for system sleep, which makes it skip calling the system sleep
    callbacks for the device, except for the ->prepare() and the ->complete()
    callbacks.
    
    However, the PM core may unset the direct_complete flag for a parent
    device, in case its child device are being system suspended before. In this
    scenario, the PM core invokes the system sleep callbacks, no matter if the
    device is runtime suspended or not.
    
    Particularly in cases of an existing i2c slave device, the above path is
    triggered, which breaks the assumption that the i2c device is always
    runtime resumed whenever the dw_i2c_plat_suspend() is being called.
    
    More precisely, dw_i2c_plat_suspend() calls clk_core_disable() and
    clk_core_unprepare(), for an already disabled/unprepared clock, leading to
    a splat in the log about clocks calls being wrongly balanced and breaking
    system sleep.
    
    To still allow the direct_complete path in cases when it's possible, but
    also to keep the fix simple, let's runtime resume the i2c device in the
    ->suspend() callback, before continuing to put the device into low power
    state.
    
    Note, in cases when the i2c device is attached to the ACPI PM domain, this
    problem doesn't occur, because ACPI's ->suspend() callback, assigned to
    acpi_subsys_suspend(), already calls pm_runtime_resume() for the device.
    
    It should also be noted that this change does not fix commit 8503ff1
    ("i2c: designware: Avoid unnecessary resuming during system suspend").
    Because for the non-ACPI case, the system sleep support was already broken
    prior that point.
    
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Tested-by: John Stultz <john.stultz@linaro.org>
    Tested-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    storulf authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    c237efe View commit details
    Browse the repository at this point in the history
  49. mm/madvise.c: fix freeing of locked page with MADV_FREE

    commit 263630e upstream.
    
    If madvise(..., MADV_FREE) split a transparent hugepage, it called
    put_page() before unlock_page().
    
    This was wrong because put_page() can free the page, e.g. if a
    concurrent madvise(..., MADV_DONTNEED) has removed it from the memory
    mapping. put_page() then rightfully complained about freeing a locked
    page.
    
    Fix this by moving the unlock_page() before put_page().
    
    This bug was found by syzkaller, which encountered the following splat:
    
        BUG: Bad page state in process syzkaller412798  pfn:1bd800
        page:ffffea0006f60000 count:0 mapcount:0 mapping:          (null) index:0x20a00
        flags: 0x200000000040019(locked|uptodate|dirty|swapbacked)
        raw: 0200000000040019 0000000000000000 0000000000020a00 00000000ffffffff
        raw: ffffea0006f60020 ffffea0006f60020 0000000000000000 0000000000000000
        page dumped because: PAGE_FLAGS_CHECK_AT_FREE flag(s) set
        bad because of flags: 0x1(locked)
        Modules linked in:
        CPU: 1 PID: 3037 Comm: syzkaller412798 Not tainted 4.13.0-rc5+ #35
        Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
        Call Trace:
         __dump_stack lib/dump_stack.c:16 [inline]
         dump_stack+0x194/0x257 lib/dump_stack.c:52
         bad_page+0x230/0x2b0 mm/page_alloc.c:565
         free_pages_check_bad+0x1f0/0x2e0 mm/page_alloc.c:943
         free_pages_check mm/page_alloc.c:952 [inline]
         free_pages_prepare mm/page_alloc.c:1043 [inline]
         free_pcp_prepare mm/page_alloc.c:1068 [inline]
         free_hot_cold_page+0x8cf/0x12b0 mm/page_alloc.c:2584
         __put_single_page mm/swap.c:79 [inline]
         __put_page+0xfb/0x160 mm/swap.c:113
         put_page include/linux/mm.h:814 [inline]
         madvise_free_pte_range+0x137a/0x1ec0 mm/madvise.c:371
         walk_pmd_range mm/pagewalk.c:50 [inline]
         walk_pud_range mm/pagewalk.c:108 [inline]
         walk_p4d_range mm/pagewalk.c:134 [inline]
         walk_pgd_range mm/pagewalk.c:160 [inline]
         __walk_page_range+0xc3a/0x1450 mm/pagewalk.c:249
         walk_page_range+0x200/0x470 mm/pagewalk.c:326
         madvise_free_page_range.isra.9+0x17d/0x230 mm/madvise.c:444
         madvise_free_single_vma+0x353/0x580 mm/madvise.c:471
         madvise_dontneed_free mm/madvise.c:555 [inline]
         madvise_vma mm/madvise.c:664 [inline]
         SYSC_madvise mm/madvise.c:832 [inline]
         SyS_madvise+0x7d3/0x13c0 mm/madvise.c:760
         entry_SYSCALL_64_fastpath+0x1f/0xbe
    
    Here is a C reproducer:
    
        #define _GNU_SOURCE
        #include <pthread.h>
        #include <sys/mman.h>
        #include <unistd.h>
    
        #define MADV_FREE	8
        #define PAGE_SIZE	4096
    
        static void *mapping;
        static const size_t mapping_size = 0x1000000;
    
        static void *madvise_thrproc(void *arg)
        {
            madvise(mapping, mapping_size, (long)arg);
        }
    
        int main(void)
        {
            pthread_t t[2];
    
            for (;;) {
                mapping = mmap(NULL, mapping_size, PROT_WRITE,
                               MAP_POPULATE|MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
    
                munmap(mapping + mapping_size / 2, PAGE_SIZE);
    
                pthread_create(&t[0], 0, madvise_thrproc, (void*)MADV_DONTNEED);
                pthread_create(&t[1], 0, madvise_thrproc, (void*)MADV_FREE);
                pthread_join(t[0], NULL);
                pthread_join(t[1], NULL);
                munmap(mapping, mapping_size);
            }
        }
    
    Note: to see the splat, CONFIG_TRANSPARENT_HUGEPAGE=y and
    CONFIG_DEBUG_VM=y are needed.
    
    Google Bug Id: 64696096
    
    Link: http://lkml.kernel.org/r/20170823205235.132061-1-ebiggers3@gmail.com
    Fixes: 854e9ed ("mm: support madvise(MADV_FREE)")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Acked-by: David Rientjes <rientjes@google.com>
    Acked-by: Minchan Kim <minchan@kernel.org>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ebiggers authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    4823f46 View commit details
    Browse the repository at this point in the history
  50. fork: fix incorrect fput of ->exe_file causing use-after-free

    commit 2b7e866 upstream.
    
    Commit 7c05126 ("mm, fork: make dup_mmap wait for mmap_sem for
    write killable") made it possible to kill a forking task while it is
    waiting to acquire its ->mmap_sem for write, in dup_mmap().
    
    However, it was overlooked that this introduced an new error path before
    a reference is taken on the mm_struct's ->exe_file.  Since the
    ->exe_file of the new mm_struct was already set to the old ->exe_file by
    the memcpy() in dup_mm(), it was possible for the mmput() in the error
    path of dup_mm() to drop a reference to ->exe_file which was never
    taken.
    
    This caused the struct file to later be freed prematurely.
    
    Fix it by updating mm_init() to NULL out the ->exe_file, in the same
    place it clears other things like the list of mmaps.
    
    This bug was found by syzkaller.  It can be reproduced using the
    following C program:
    
        #define _GNU_SOURCE
        #include <pthread.h>
        #include <stdlib.h>
        #include <sys/mman.h>
        #include <sys/syscall.h>
        #include <sys/wait.h>
        #include <unistd.h>
    
        static void *mmap_thread(void *_arg)
        {
            for (;;) {
                mmap(NULL, 0x1000000, PROT_READ,
                     MAP_POPULATE|MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
            }
        }
    
        static void *fork_thread(void *_arg)
        {
            usleep(rand() % 10000);
            fork();
        }
    
        int main(void)
        {
            fork();
            fork();
            fork();
            for (;;) {
                if (fork() == 0) {
                    pthread_t t;
    
                    pthread_create(&t, NULL, mmap_thread, NULL);
                    pthread_create(&t, NULL, fork_thread, NULL);
                    usleep(rand() % 10000);
                    syscall(__NR_exit_group, 0);
                }
                wait(NULL);
            }
        }
    
    No special kernel config options are needed.  It usually causes a NULL
    pointer dereference in __remove_shared_vm_struct() during exit, or in
    dup_mmap() (which is usually inlined into copy_process()) during fork.
    Both are due to a vm_area_struct's ->vm_file being used after it's
    already been freed.
    
    Google Bug Id: 64772007
    
    Link: http://lkml.kernel.org/r/20170823211408.31198-1-ebiggers3@gmail.com
    Fixes: 7c05126 ("mm, fork: make dup_mmap wait for mmap_sem for write killable")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Tested-by: Mark Rutland <mark.rutland@arm.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Konstantin Khlebnikov <koct9i@gmail.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ebiggers authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    f5024bb View commit details
    Browse the repository at this point in the history
  51. mm/memblock.c: reversed logic in memblock_discard()

    commit 91b540f upstream.
    
    In recently introduced memblock_discard() there is a reversed logic bug.
    Memory is freed of static array instead of dynamically allocated one.
    
    Link: http://lkml.kernel.org/r/1503511441-95478-2-git-send-email-pasha.tatashin@oracle.com
    Fixes: 3010f87 ("mm: discard memblock data later")
    Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>
    Reported-by: Woody Suwalski <terraluna977@gmail.com>
    Tested-by: Woody Suwalski <terraluna977@gmail.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Pavel Tatashin authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    1c229d7 View commit details
    Browse the repository at this point in the history
  52. arm64: fpsimd: Prevent registers leaking across exec

    commit 0966221 upstream.
    
    There are some tricky dependencies between the different stages of
    flushing the FPSIMD register state during exec, and these can race
    with context switch in ways that can cause the old task's regs to
    leak across.  In particular, a context switch during the memset() can
    cause some of the task's old FPSIMD registers to reappear.
    
    Disabling preemption for this small window would be no big deal for
    performance: preemption is already disabled for similar scenarios
    like updating the FPSIMD registers in sigreturn.
    
    So, instead of rearranging things in ways that might swap existing
    subtle bugs for new ones, this patch just disables preemption
    around the FPSIMD state flushing so that races of this type can't
    occur here.  This brings fpsimd_flush_thread() into line with other
    code paths.
    
    Fixes: 674c242 ("arm64: flush FP/SIMD state correctly after execve()")
    Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Dave Martin <Dave.Martin@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Dave Martin authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    865d89f View commit details
    Browse the repository at this point in the history
  53. drm: Fix framebuffer leak

    commit 491ab47 upstream.
    
    Do not leak framebuffer if client provided crtc id found invalid.
    
    Signed-off-by: Nikhil Mahale <nmahale@nvidia.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/1502250781-5779-1-git-send-email-nmahale@nvidia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    nmahale authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    b96c156 View commit details
    Browse the repository at this point in the history
  54. drm: Release driver tracking before making the object available again

    commit fe4600a upstream.
    
    This is the same bug as we fixed in commit f6cd7da ("drm: Release
    driver references to handle before making it available again"), but now
    the exposure is via the PRIME lookup tables. If we remove the
    object/handle from the PRIME lut, then a new request for the same
    object/fd will generate a new handle, thus for a short window that
    object is known to userspace by two different handles. Fix this by
    releasing the driver tracking before PRIME.
    
    Fixes: 0ff926c ("drm/prime: add exported buffers to current fprivs
    imported buffer list (v2)")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: David Airlie <airlied@linux.ie>
    Cc: Daniel Vetter <daniel.vetter@intel.com>
    Cc: Rob Clark <robdclark@gmail.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Thierry Reding <treding@nvidia.com>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20170819120558.6465-1-chris@chris-wilson.co.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ickle authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    0835391 View commit details
    Browse the repository at this point in the history
  55. drm/sun4i: Implement drm_driver lastclose to restore fbdev console

    commit 2a596fc upstream.
    
    The drm_driver lastclose callback is called when the last userspace
    DRM client has closed. Call drm_fbdev_cma_restore_mode to restore
    the fbdev console otherwise the fbdev console will stop working.
    
    Fixes: 9026e0d ("drm: Add Allwinner A10 Display Engine support")
    Tested-by: Olliver Schinagl <oliver@schinagl.nl>
    Reviewed-by: Chen-Yu Tsai <wens@csie.org>
    Signed-off-by: Jonathan Liu <net147@gmail.com>
    Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    net147 authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    d4ae641 View commit details
    Browse the repository at this point in the history
  56. drm/atomic: Handle -EDEADLK with out-fences correctly

    commit 7f5d6da upstream.
    
    complete_crtc_signaling is freeing fence_state, but when retrying
    num_fences and fence_state are not zero'd. This caused duplicate
    fd's in the fence_state array, followed by a BUG_ON in fs/file.c
    because we reallocate freed memory, and installing over an existing
    fd, or potential other fun.
    
    Zero fence_state and num_fences correctly in the retry loop, which
    allows kms_atomic_transition to pass.
    
    Fixes: beaf5af ("drm/fence: add out-fences support")
    Cc: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
    Cc: Brian Starkey <brian.starkey@arm.com> (v10)
    Cc: Sean Paul <seanpaul@chromium.org>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Cc: David Airlie <airlied@linux.ie>
    Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Testcase: kms_atomic_transitions.plane-all-modeset-transition-fencing
    (with CONFIG_DEBUG_WW_MUTEX_SLOWPATH=y)
    Link: https://patchwork.freedesktop.org/patch/msgid/20170814100721.13340-1-maarten.lankhorst@linux.intel.com
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> #intel-gfx on irc
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    mlankhorst authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    247122f View commit details
    Browse the repository at this point in the history
  57. drm/atomic: If the atomic check fails, return its value first

    commit a0ffc51 upstream.
    
    The last part of drm_atomic_check_only is testing whether we need to
    fail with -EINVAL when modeset is not allowed, but forgets to return
    the value when atomic_check() fails first.
    
    This results in -EDEADLK being replaced by -EINVAL, and the sanity
    check in drm_modeset_drop_locks kicks in:
    
    [  308.531734] ------------[ cut here ]------------
    [  308.531791] WARNING: CPU: 0 PID: 1886 at drivers/gpu/drm/drm_modeset_lock.c:217 drm_modeset_drop_locks+0x33/0xc0 [drm]
    [  308.531828] Modules linked in:
    [  308.532050] CPU: 0 PID: 1886 Comm: kms_atomic Tainted: G     U  W 4.13.0-rc5-patser+ #5225
    [  308.532082] Hardware name: NUC5i7RYB, BIOS RYBDWi35.86A.0246.2015.0309.1355 03/09/2015
    [  308.532124] task: ffff8800cd9dae00 task.stack: ffff8800ca3b8000
    [  308.532168] RIP: 0010:drm_modeset_drop_locks+0x33/0xc0 [drm]
    [  308.532189] RSP: 0018:ffff8800ca3bf980 EFLAGS: 00010282
    [  308.532211] RAX: dffffc0000000000 RBX: ffff8800ca3bfaf8 RCX: 0000000013a171e6
    [  308.532235] RDX: 1ffff10019477f69 RSI: ffffffffa8ba4fa0 RDI: ffff8800ca3bfb48
    [  308.532258] RBP: ffff8800ca3bf998 R08: 0000000000000000 R09: 0000000000000003
    [  308.532281] R10: 0000000079dbe066 R11: 00000000f760b34b R12: 0000000000000001
    [  308.532304] R13: dffffc0000000000 R14: 00000000ffffffea R15: ffff880096889680
    [  308.532328] FS:  00007ff00959cec0(0000) GS:ffff8800d4e00000(0000) knlGS:0000000000000000
    [  308.532359] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  308.532380] CR2: 0000000000000008 CR3: 00000000ca2e3000 CR4: 00000000003406f0
    [  308.532402] Call Trace:
    [  308.532440]  drm_mode_atomic_ioctl+0x19fa/0x1c00 [drm]
    [  308.532488]  ? drm_atomic_set_property+0x1220/0x1220 [drm]
    [  308.532565]  ? avc_has_extended_perms+0xc39/0xff0
    [  308.532593]  ? lock_downgrade+0x610/0x610
    [  308.532640]  ? drm_atomic_set_property+0x1220/0x1220 [drm]
    [  308.532680]  drm_ioctl_kernel+0x154/0x1a0 [drm]
    [  308.532755]  drm_ioctl+0x624/0x8f0 [drm]
    [  308.532858]  ? drm_atomic_set_property+0x1220/0x1220 [drm]
    [  308.532976]  ? drm_getunique+0x210/0x210 [drm]
    [  308.533061]  do_vfs_ioctl+0xd92/0xe40
    [  308.533121]  ? ioctl_preallocate+0x1b0/0x1b0
    [  308.533160]  ? selinux_capable+0x20/0x20
    [  308.533191]  ? do_fcntl+0x1b1/0xbf0
    [  308.533219]  ? kasan_slab_free+0xa2/0xb0
    [  308.533249]  ? f_getown+0x4b/0xa0
    [  308.533278]  ? putname+0xcf/0xe0
    [  308.533309]  ? security_file_ioctl+0x57/0x90
    [  308.533342]  SyS_ioctl+0x4e/0x80
    [  308.533374]  entry_SYSCALL_64_fastpath+0x18/0xad
    [  308.533405] RIP: 0033:0x7ff00779e4d7
    [  308.533431] RSP: 002b:00007fff66a043d8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    [  308.533481] RAX: ffffffffffffffda RBX: 000000e7c7ca5910 RCX: 00007ff00779e4d7
    [  308.533560] RDX: 00007fff66a04430 RSI: 00000000c03864bc RDI: 0000000000000003
    [  308.533608] RBP: 00007ff007a5fb00 R08: 000000e7c7ca4620 R09: 000000e7c7ca5e60
    [  308.533647] R10: 0000000000000001 R11: 0000000000000246 R12: 0000000000000070
    [  308.533685] R13: 0000000000000000 R14: 0000000000000000 R15: 000000e7c7ca5930
    [  308.533770] Code: ff df 55 48 89 e5 41 55 41 54 53 48 89 fb 48 83 c7
    50 48 89 fa 48 c1 ea 03 80 3c 02 00 74 05 e8 94 d4 16 e7 48 83 7b 50 00
    74 02 <0f> ff 4c 8d 6b 58 48 b8 00 00 00 00 00 fc ff df 4c 89 ea 48 c1
    [  308.534086] ---[ end trace 77f11e53b1df44ad ]---
    
    Solve this by adding the missing return.
    
    This is also a bugfix because we could end up rejecting updates with
    -EINVAL because of a early -EDEADLK, while if atomic_check ran to
    completion it might have downgraded the modeset to a fastset.
    
    Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Testcase: kms_atomic
    Link: https://patchwork.freedesktop.org/patch/msgid/20170815095706.23624-1-maarten.lankhorst@linux.intel.com
    Fixes: d34f20d ("drm: Atomic modeset ioctl")
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    mlankhorst authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    d76df45 View commit details
    Browse the repository at this point in the history
  58. drm/i915/vbt: ignore extraneous child devices for a port

    commit 7c648bd upstream.
    
    Ever since we've parsed VBT child devices, starting from 6acab15
    ("drm/i915: use the HDMI DDI buffer translations from VBT"), we've
    ignored the child device information if more than one child device
    references the same port. The rationale for this seems lost in time.
    
    Since commit 311a209 ("drm/i915: don't init DP or HDMI when not
    supported by DDI port") we started using this information more to skip
    HDMI/DP init if the port wasn't there per VBT child devices. However, at
    the same time it added port defaults without further explanation.
    
    Thus, if the child device info was skipped due to multiple child devices
    referencing the same port, the device info would be retrieved from the
    somewhat arbitrary defaults.
    
    Finally, when commit bb1d132 ("drm/i915/vbt: split out defaults
    that are set when there is no VBT") stopped initializing the defaults
    whenever VBT is present, thus trusting the VBT more, we stopped
    initializing ports which were referenced by more than one child device.
    
    Apparently at least Asus UX305UA, UX305U, and UX306U laptops have VBT
    child device blocks which cause this behaviour. Arguably they were
    shipped with a broken VBT.
    
    Relax the rules for multiple references to the same port, and use the
    first child device info to reference a port. Retain the logic to debug
    log about this, though.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101745
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=196233
    Fixes: bb1d132 ("drm/i915/vbt: split out defaults that are set when there is no VBT")
    Tested-by: Oliver Weißbarth <mail@oweissbarth.de>
    Reported-by: Oliver Weißbarth <mail@oweissbarth.de>
    Reported-by: Didier G <didierg-divers@orange.fr>
    Reported-by: Giles Anderson <agander@gmail.com>
    Cc: Manasi Navare <manasi.d.navare@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20170811113907.6716-1-jani.nikula@intel.com
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    (cherry picked from commit b5273d7)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jnikula authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    bbb04b3 View commit details
    Browse the repository at this point in the history
  59. drm/i915/gvt: Fix the kernel null pointer error

    commit ffeaf9a upstream.
    
    once error happens in shadow_indirect_ctx function, the variable
    wa_ctx->indirect_ctx.obj is not initialized but accessed, so the
    kernel null point panic occurs.
    
    Fixes: 894cf7d ("drm/i915/gvt: i915_gem_object_create() returns an error pointer")
    Signed-off-by: fred gao <fred.gao@intel.com>
    Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    fred1gao authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    4ac9a5d View commit details
    Browse the repository at this point in the history
  60. Revert "drm/amdgpu: fix vblank_time when displays are off"

    This reverts commit 2dc1889.
    
    Fixes a suspend and resume regression.
    
    bug: https://bugzilla.kernel.org/show_bug.cgi?id=196615
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    agd5f authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    dbe5b2d View commit details
    Browse the repository at this point in the history
  61. ACPI: device property: Fix node lookup in acpi_graph_get_child_prop_v…

    …alue()
    
    commit b5212f5 upstream.
    
    acpi_graph_get_child_prop_value() is intended to find a child node with a
    certain property value pair. The check
    
    	if (!fwnode_property_read_u32(fwnode, prop_name, &nr))
    		continue;
    
    is faulty: fwnode_property_read_u32() returns zero on success, not on
    failure, leading to comparing values only if the searched property was not
    found.
    
    Moreover, the check is made against the parent device node instead of
    the child one as it should be.
    
    Fixes: 79389a8 (ACPI / property: Add support for remote endpoints)
    Reported-by: Hyungwoo Yang <hyungwoo.yang@intel.com>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    [ rjw: Changelog ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Sakari Ailus authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    1344db8 View commit details
    Browse the repository at this point in the history
  62. tracing: Call clear_boot_tracer() at lateinit_sync

    commit 4bb0f0e upstream.
    
    The clear_boot_tracer function is used to reset the default_bootup_tracer
    string to prevent it from being accessed after boot, as it originally points
    to init data. But since clear_boot_tracer() is called via the
    init_lateinit() call, it races with the initcall for registering the hwlat
    tracer. If someone adds "ftrace=hwlat" to the kernel command line, depending
    on how the linker sets up the text, the saved command line may be cleared,
    and the hwlat tracer never is initialized.
    
    Simply have the clear_boot_tracer() be called by initcall_lateinit_sync() as
    that's for tasks to be called after lateinit.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=196551
    
    Fixes: e7c15cd ("tracing: Added hardware latency tracer")
    Reported-by: Zamir SUN <sztsian@gmail.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    rostedt authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    3888c3a View commit details
    Browse the repository at this point in the history
  63. tracing: Missing error code in tracer_alloc_buffers()

    commit 147d88e upstream.
    
    If ring_buffer_alloc() or one of the next couple function calls fail
    then we should return -ENOMEM but the current code returns success.
    
    Link: http://lkml.kernel.org/r/20170801110201.ajdkct7vwzixahvx@mwanda
    
    Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Fixes: b32614c ('tracing/rb: Convert to hotplug state machine')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Dan Carpenter authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    a23e782 View commit details
    Browse the repository at this point in the history
  64. tracing: Fix kmemleak in tracing_map_array_free()

    commit 475bb3c upstream.
    
    kmemleak reported the below leak when I was doing clear of the hist
    trigger. With this patch, the kmeamleak is gone.
    
    unreferenced object 0xffff94322b63d760 (size 32):
      comm "bash", pid 1522, jiffies 4403687962 (age 2442.311s)
      hex dump (first 32 bytes):
        00 01 00 00 04 00 00 00 08 00 00 00 ff 00 00 00  ................
        10 00 00 00 00 00 00 00 80 a8 7a f2 31 94 ff ff  ..........z.1...
      backtrace:
        [<ffffffff9e96c27a>] kmemleak_alloc+0x4a/0xa0
        [<ffffffff9e424cba>] kmem_cache_alloc_trace+0xca/0x1d0
        [<ffffffff9e377736>] tracing_map_array_alloc+0x26/0x140
        [<ffffffff9e261be0>] kretprobe_trampoline+0x0/0x50
        [<ffffffff9e38b935>] create_hist_data+0x535/0x750
        [<ffffffff9e38bd47>] event_hist_trigger_func+0x1f7/0x420
        [<ffffffff9e38893d>] event_trigger_write+0xfd/0x1a0
        [<ffffffff9e44dfc7>] __vfs_write+0x37/0x170
        [<ffffffff9e44f552>] vfs_write+0xb2/0x1b0
        [<ffffffff9e450b85>] SyS_write+0x55/0xc0
        [<ffffffff9e203857>] do_syscall_64+0x67/0x150
        [<ffffffff9e977ce7>] return_from_SYSCALL_64+0x0/0x6a
        [<ffffffffffffffff>] 0xffffffffffffffff
    unreferenced object 0xffff9431f27aa880 (size 128):
      comm "bash", pid 1522, jiffies 4403687962 (age 2442.311s)
      hex dump (first 32 bytes):
        00 00 8c 2a 32 94 ff ff 00 f0 8b 2a 32 94 ff ff  ...*2......*2...
        00 e0 8b 2a 32 94 ff ff 00 d0 8b 2a 32 94 ff ff  ...*2......*2...
      backtrace:
        [<ffffffff9e96c27a>] kmemleak_alloc+0x4a/0xa0
        [<ffffffff9e425348>] __kmalloc+0xe8/0x220
        [<ffffffff9e3777c1>] tracing_map_array_alloc+0xb1/0x140
        [<ffffffff9e261be0>] kretprobe_trampoline+0x0/0x50
        [<ffffffff9e38b935>] create_hist_data+0x535/0x750
        [<ffffffff9e38bd47>] event_hist_trigger_func+0x1f7/0x420
        [<ffffffff9e38893d>] event_trigger_write+0xfd/0x1a0
        [<ffffffff9e44dfc7>] __vfs_write+0x37/0x170
        [<ffffffff9e44f552>] vfs_write+0xb2/0x1b0
        [<ffffffff9e450b85>] SyS_write+0x55/0xc0
        [<ffffffff9e203857>] do_syscall_64+0x67/0x150
        [<ffffffff9e977ce7>] return_from_SYSCALL_64+0x0/0x6a
        [<ffffffffffffffff>] 0xffffffffffffffff
    
    Link: http://lkml.kernel.org/r/1502705898-27571-1-git-send-email-chuhu@redhat.com
    
    Fixes: 08d43a5 ("tracing: Add lock-free tracing_map")
    Signed-off-by: Chunyu Hu <chuhu@redhat.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Chunyu-Hu authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    983ba81 View commit details
    Browse the repository at this point in the history
  65. tracing: Fix freeing of filter in create_filter() when set_str is false

    commit 8b0db1a upstream.
    
    Performing the following task with kmemleak enabled:
    
     # cd /sys/kernel/tracing/events/irq/irq_handler_entry/
     # echo 'enable_event:kmem:kmalloc:3 if irq >' > trigger
     # echo 'enable_event:kmem:kmalloc:3 if irq > 31' > trigger
     # echo scan > /sys/kernel/debug/kmemleak
     # cat /sys/kernel/debug/kmemleak
    unreferenced object 0xffff8800b9290308 (size 32):
      comm "bash", pid 1114, jiffies 4294848451 (age 141.139s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff81cef5aa>] kmemleak_alloc+0x4a/0xa0
        [<ffffffff81357938>] kmem_cache_alloc_trace+0x158/0x290
        [<ffffffff81261c09>] create_filter_start.constprop.28+0x99/0x940
        [<ffffffff812639c9>] create_filter+0xa9/0x160
        [<ffffffff81263bdc>] create_event_filter+0xc/0x10
        [<ffffffff812655e5>] set_trigger_filter+0xe5/0x210
        [<ffffffff812660c4>] event_enable_trigger_func+0x324/0x490
        [<ffffffff812652e2>] event_trigger_write+0x1a2/0x260
        [<ffffffff8138cf87>] __vfs_write+0xd7/0x380
        [<ffffffff8138f421>] vfs_write+0x101/0x260
        [<ffffffff8139187b>] SyS_write+0xab/0x130
        [<ffffffff81cfd501>] entry_SYSCALL_64_fastpath+0x1f/0xbe
        [<ffffffffffffffff>] 0xffffffffffffffff
    
    The function create_filter() is passed a 'filterp' pointer that gets
    allocated, and if "set_str" is true, it is up to the caller to free it, even
    on error. The problem is that the pointer is not freed by create_filter()
    when set_str is false. This is a bug, and it is not up to the caller to free
    the filter on error if it doesn't care about the string.
    
    Link: http://lkml.kernel.org/r/1502705898-27571-2-git-send-email-chuhu@redhat.com
    
    Fixes: 38b78eb ("tracing: Factorize filter creation")
    Reported-by: Chunyu Hu <chuhu@redhat.com>
    Tested-by: Chunyu Hu <chuhu@redhat.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    rostedt authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    53a38df View commit details
    Browse the repository at this point in the history
  66. RDMA/uverbs: Initialize cq_context appropriately

    commit 65159c0 upstream.
    
    Initializing cq_context with ev_queue in create_cq(), leads to NULL pointer
    dereference in ib_uverbs_comp_handler(), if application doesnot use completion
    channel. This patch fixes the cq_context initialization.
    
    Fixes: 1e7710f ("IB/core: Change completion channel to use the reworked")
    Signed-off-by: Potnuri Bharat Teja <bharat@chelsio.com>
    Reviewed-by: Matan Barak <matanb@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    (cherry picked from commit 699a2d5)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    bharatpotnuri authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    51f4938 View commit details
    Browse the repository at this point in the history
  67. kbuild: linker script do not match C names unless LD_DEAD_CODE_DATA_E…

    …LIMINATION is configured
    
    commit cb87481 upstream.
    
    The .data and .bss sections were modified in the generic linker script to
    pull in sections named .data.<C identifier>, which are generated by gcc with
    -ffunction-sections and -fdata-sections options.
    
    The problem with this pattern is it can also match section names that Linux
    defines explicitly, e.g., .data.unlikely. This can cause Linux sections to
    get moved into the wrong place.
    
    The way to avoid this is to use ".." separators for explicit section names
    (the dot character is valid in a section name but not a C identifier).
    However currently there are sections which don't follow this rule, so for
    now just disable the wild card by default.
    
    Example: http://marc.info/?l=linux-arm-kernel&m=150106824024221&w=2
    
    Fixes: b67067f ("kbuild: allow archs to select link dead code/data elimination")
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    npiggin authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    3b278d7 View commit details
    Browse the repository at this point in the history
  68. cifs: Fix df output for users with quota limits

    commit 42bec21 upstream.
    
    The df for a SMB2 share triggers a GetInfo call for
    FS_FULL_SIZE_INFORMATION. The values returned are used to populate
    struct statfs.
    
    The problem is that none of the information returned by the call
    contains the total blocks available on the filesystem. Instead we use
    the blocks available to the user ie. quota limitation when filling out
    statfs.f_blocks. The information returned does contain Actual free units
    on the filesystem and is used to populate statfs.f_bfree. For users with
    quota enabled, it can lead to situations where the total free space
    reported is more than the total blocks on the system ending up with df
    reports like the following
    
     # df -h /mnt/a
    Filesystem         Size  Used Avail Use% Mounted on
    //192.168.22.10/a  2.5G -2.3G  2.5G    - /mnt/a
    
    To fix this problem, we instead populate both statfs.f_bfree with the
    same value as statfs.f_bavail ie. CallerAvailableAllocationUnits. This
    is similar to what is done already in the code for cifs and df now
    reports the quota information for the user used to mount the share.
    
     # df --si /mnt/a
    Filesystem         Size  Used Avail Use% Mounted on
    //192.168.22.10/a  2.7G  101M  2.6G   4% /mnt/a
    
    Signed-off-by: Sachin Prabhu <sprabhu@redhat.com>
    Signed-off-by: Pierguido Lambri <plambri@redhat.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    spuiuk authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    1bc1c43 View commit details
    Browse the repository at this point in the history
  69. cifs: return ENAMETOOLONG for overlong names in cifs_open()/cifs_look…

    …up()
    
    commit d3edede upstream.
    
    Add checking for the path component length and verify it is <= the maximum
    that the server advertizes via FileFsAttributeInformation.
    
    With this patch cifs.ko will now return ENAMETOOLONG instead of ENOENT
    when users to access an overlong path.
    
    To test this, try to cd into a (non-existing) directory on a CIFS share
    that has a too long name:
    cd /mnt/aaaaaaaaaaaaaaa...
    
    and it now should show a good error message from the shell:
    bash: cd: /mnt/aaaaaaaaaaaaaaaa...aaaaaa: File name too long
    
    rh bz 1153996
    
    Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Ronnie Sahlberg authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    ea5745a View commit details
    Browse the repository at this point in the history
  70. nfsd: Limit end of page list when decoding NFSv4 WRITE

    commit fc788f6 upstream.
    
    When processing an NFSv4 WRITE operation, argp->end should never
    point past the end of the data in the final page of the page list.
    Otherwise, nfsd4_decode_compound can walk into uninitialized memory.
    
    More critical, nfsd4_decode_write is failing to increment argp->pagelen
    when it increments argp->pagelist.  This can cause later xdr decoders
    to assume more data is available than really is, which can cause server
    crashes on malformed requests.
    
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    chucklever authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    8d4f126 View commit details
    Browse the repository at this point in the history
  71. ring-buffer: Have ring_buffer_alloc_read_page() return error on offli…

    …ne CPU
    
    commit a7e52ad upstream.
    
    Chunyu Hu reported:
      "per_cpu trace directories and files are created for all possible cpus,
       but only the cpus which have ever been on-lined have their own per cpu
       ring buffer (allocated by cpuhp threads). While trace_buffers_open, the
       open handler for trace file 'trace_pipe_raw' is always trying to access
       field of ring_buffer_per_cpu, and would panic with the NULL pointer.
    
       Align the behavior of trace_pipe_raw with trace_pipe, that returns -NODEV
       when openning it if that cpu does not have trace ring buffer.
    
       Reproduce:
       cat /sys/kernel/debug/tracing/per_cpu/cpu31/trace_pipe_raw
       (cpu31 is never on-lined, this is a 16 cores x86_64 box)
    
       Tested with:
       1) boot with maxcpus=14, read trace_pipe_raw of cpu15.
          Got -NODEV.
       2) oneline cpu15, read trace_pipe_raw of cpu15.
          Get the raw trace data.
    
       Call trace:
       [ 5760.950995] RIP: 0010:ring_buffer_alloc_read_page+0x32/0xe0
       [ 5760.961678]  tracing_buffers_read+0x1f6/0x230
       [ 5760.962695]  __vfs_read+0x37/0x160
       [ 5760.963498]  ? __vfs_read+0x5/0x160
       [ 5760.964339]  ? security_file_permission+0x9d/0xc0
       [ 5760.965451]  ? __vfs_read+0x5/0x160
       [ 5760.966280]  vfs_read+0x8c/0x130
       [ 5760.967070]  SyS_read+0x55/0xc0
       [ 5760.967779]  do_syscall_64+0x67/0x150
       [ 5760.968687]  entry_SYSCALL64_slow_path+0x25/0x25"
    
    This was introduced by the addition of the feature to reuse reader pages
    instead of re-allocating them. The problem is that the allocation of a
    reader page (which is per cpu) does not check if the cpu is online and set
    up for the ring buffer.
    
    Link: http://lkml.kernel.org/r/1500880866-1177-1-git-send-email-chuhu@redhat.com
    
    Fixes: 73a757e ("ring-buffer: Return reader page back into existing ring buffer")
    Reported-by: Chunyu Hu <chuhu@redhat.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    rostedt authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    78f2e29 View commit details
    Browse the repository at this point in the history
  72. virtio_pci: fix cpu affinity support

    commit ba74b6f upstream.
    
    Commit 0b0f9dc ("Revert "virtio_pci: use shared interrupts for
    virtqueues"") removed the adjustment of the pre_vectors for the virtio
    MSI-X vector allocation which was added in commit fb5e31d ("virtio:
    allow drivers to request IRQ affinity when creating VQs"). This will
    lead to an incorrect assignment of MSI-X vectors, and potential
    deadlocks when offlining cpus.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Fixes: 0b0f9dc ("Revert "virtio_pci: use shared interrupts for virtqueues")
    Reported-by: YASUAKI ISHIMATSU <yasu.isimatu@gmail.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Christoph Hellwig authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    1b8ca88 View commit details
    Browse the repository at this point in the history
  73. ftrace: Check for null ret_stack on profile function graph entry func…

    …tion
    
    commit a8f0f9e upstream.
    
    There's a small race when function graph shutsdown and the calling of the
    registered function graph entry callback. The callback must not reference
    the task's ret_stack without first checking that it is not NULL. Note, when
    a ret_stack is allocated for a task, it stays allocated until the task exits.
    The problem here, is that function_graph is shutdown, and a new task was
    created, which doesn't have its ret_stack allocated. But since some of the
    functions are still being traced, the callbacks can still be called.
    
    The normal function_graph code handles this, but starting with commit
    8861dd3 ("ftrace: Access ret_stack->subtime only in the function
    profiler") the profiler code references the ret_stack on function entry, but
    doesn't check if it is NULL first.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=196611
    
    Fixes: 8861dd3 ("ftrace: Access ret_stack->subtime only in the function profiler")
    Reported-by: lilydjwg@gmail.com
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    rostedt authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    aa2da6c View commit details
    Browse the repository at this point in the history
  74. perf/core: Fix group {cpu,task} validation

    commit 64aee2a upstream.
    
    Regardless of which events form a group, it does not make sense for the
    events to target different tasks and/or CPUs, as this leaves the group
    inconsistent and impossible to schedule. The core perf code assumes that
    these are consistent across (successfully intialised) groups.
    
    Core perf code only verifies this when moving SW events into a HW
    context. Thus, we can violate this requirement for pure SW groups and
    pure HW groups, unless the relevant PMU driver happens to perform this
    verification itself. These mismatched groups subsequently wreak havoc
    elsewhere.
    
    For example, we handle watchpoints as SW events, and reserve watchpoint
    HW on a per-CPU basis at pmu::event_init() time to ensure that any event
    that is initialised is guaranteed to have a slot at pmu::add() time.
    However, the core code only checks the group leader's cpu filter (via
    event_filter_match()), and can thus install follower events onto CPUs
    violating thier (mismatched) CPU filters, potentially installing them
    into a CPU without sufficient reserved slots.
    
    This can be triggered with the below test case, resulting in warnings
    from arch backends.
    
      #define _GNU_SOURCE
      #include <linux/hw_breakpoint.h>
      #include <linux/perf_event.h>
      #include <sched.h>
      #include <stdio.h>
      #include <sys/prctl.h>
      #include <sys/syscall.h>
      #include <unistd.h>
    
      static int perf_event_open(struct perf_event_attr *attr, pid_t pid, int cpu,
    			   int group_fd, unsigned long flags)
      {
    	return syscall(__NR_perf_event_open, attr, pid, cpu, group_fd, flags);
      }
    
      char watched_char;
    
      struct perf_event_attr wp_attr = {
    	.type = PERF_TYPE_BREAKPOINT,
    	.bp_type = HW_BREAKPOINT_RW,
    	.bp_addr = (unsigned long)&watched_char,
    	.bp_len = 1,
    	.size = sizeof(wp_attr),
      };
    
      int main(int argc, char *argv[])
      {
    	int leader, ret;
    	cpu_set_t cpus;
    
    	/*
    	 * Force use of CPU0 to ensure our CPU0-bound events get scheduled.
    	 */
    	CPU_ZERO(&cpus);
    	CPU_SET(0, &cpus);
    	ret = sched_setaffinity(0, sizeof(cpus), &cpus);
    	if (ret) {
    		printf("Unable to set cpu affinity\n");
    		return 1;
    	}
    
    	/* open leader event, bound to this task, CPU0 only */
    	leader = perf_event_open(&wp_attr, 0, 0, -1, 0);
    	if (leader < 0) {
    		printf("Couldn't open leader: %d\n", leader);
    		return 1;
    	}
    
    	/*
    	 * Open a follower event that is bound to the same task, but a
    	 * different CPU. This means that the group should never be possible to
    	 * schedule.
    	 */
    	ret = perf_event_open(&wp_attr, 0, 1, leader, 0);
    	if (ret < 0) {
    		printf("Couldn't open mismatched follower: %d\n", ret);
    		return 1;
    	} else {
    		printf("Opened leader/follower with mismastched CPUs\n");
    	}
    
    	/*
    	 * Open as many independent events as we can, all bound to the same
    	 * task, CPU0 only.
    	 */
    	do {
    		ret = perf_event_open(&wp_attr, 0, 0, -1, 0);
    	} while (ret >= 0);
    
    	/*
    	 * Force enable/disble all events to trigger the erronoeous
    	 * installation of the follower event.
    	 */
    	printf("Opened all events. Toggling..\n");
    	for (;;) {
    		prctl(PR_TASK_PERF_EVENTS_DISABLE, 0, 0, 0, 0);
    		prctl(PR_TASK_PERF_EVENTS_ENABLE, 0, 0, 0, 0);
    	}
    
    	return 0;
      }
    
    Fix this by validating this requirement regardless of whether we're
    moving events.
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Zhou Chengming <zhouchengming1@huawei.com>
    Link: http://lkml.kernel.org/r/1498142498-15758-1-git-send-email-mark.rutland@arm.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Mark Rutland authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    2c0dc7f View commit details
    Browse the repository at this point in the history
  75. timers: Fix excessive granularity of new timers after a nohz idle

    commit 2fe59f5 upstream.
    
    When a timer base is idle, it is forwarded when a new timer is added
    to ensure that granularity does not become excessive. When not idle,
    the timer tick is expected to increment the base.
    
    However there are several problems:
    
    - If an existing timer is modified, the base is forwarded only after
      the index is calculated.
    
    - The base is not forwarded by add_timer_on.
    
    - There is a window after a timer is restarted from a nohz idle, after
      it is marked not-idle and before the timer tick on this CPU, where a
      timer may be added but the ancient base does not get forwarded.
    
    These result in excessive granularity (a 1 jiffy timeout can blow out
    to 100s of jiffies), which cause the rcu lockup detector to trigger,
    among other things.
    
    Fix this by keeping track of whether the timer base has been idle
    since it was last run or forwarded, and if so then forward it before
    adding a new timer.
    
    There is still a case where mod_timer optimises the case of a pending
    timer mod with the same expiry time, where the timer can see excessive
    granularity relative to the new, shorter interval. A comment is added,
    but it's not changed because it is an important fastpath for
    networking.
    
    This has been tested and found to fix the RCU softlockup messages.
    
    Testing was also done with tracing to measure requested versus
    achieved wakeup latencies for all non-deferrable timers in an idle
    system (with no lockup watchdogs running). Wakeup latency relative to
    absolute latency is calculated (note this suffers from round-up skew
    at low absolute times) and analysed:
    
                 max     avg      std
    upstream   506.0    1.20     4.68
    patched      2.0    1.08     0.15
    
    The bug was noticed due to the lockup detector Kconfig changes
    dropping it out of people's .configs and resulting in larger base
    clk skew When the lockup detectors are enabled, no CPU can go idle for
    longer than 4 seconds, which limits the granularity errors.
    Sub-optimal timer behaviour is observable on a smaller scale in that
    case:
    
    	     max     avg      std
    upstream     9.0    1.05     0.19
    patched      2.0    1.04     0.11
    
    Fixes: Fixes: a683f39 ("timers: Forward the wheel clock whenever possible")
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Tested-by: David Miller <davem@davemloft.net>
    Cc: dzickus@redhat.com
    Cc: sfr@canb.auug.org.au
    Cc: mpe@ellerman.id.au
    Cc: Stephen Boyd <sboyd@codeaurora.org>
    Cc: linuxarm@huawei.com
    Cc: abdhalee@linux.vnet.ibm.com
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: akpm@linux-foundation.org
    Cc: paulmck@linux.vnet.ibm.com
    Cc: torvalds@linux-foundation.org
    Link: http://lkml.kernel.org/r/20170822084348.21436-1-npiggin@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    npiggin authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    2e11eed View commit details
    Browse the repository at this point in the history
  76. x86/mm: Fix use-after-free of ldt_struct

    commit ccd5b32 upstream.
    
    The following commit:
    
      39a0526 ("x86/mm: Factor out LDT init from context init")
    
    renamed init_new_context() to init_new_context_ldt() and added a new
    init_new_context() which calls init_new_context_ldt().  However, the
    error code of init_new_context_ldt() was ignored.  Consequently, if a
    memory allocation in alloc_ldt_struct() failed during a fork(), the
    ->context.ldt of the new task remained the same as that of the old task
    (due to the memcpy() in dup_mm()).  ldt_struct's are not intended to be
    shared, so a use-after-free occurred after one task exited.
    
    Fix the bug by making init_new_context() pass through the error code of
    init_new_context_ldt().
    
    This bug was found by syzkaller, which encountered the following splat:
    
        BUG: KASAN: use-after-free in free_ldt_struct.part.2+0x10a/0x150 arch/x86/kernel/ldt.c:116
        Read of size 4 at addr ffff88006d2cb7c8 by task kworker/u9:0/3710
    
        CPU: 1 PID: 3710 Comm: kworker/u9:0 Not tainted 4.13.0-rc4-next-20170811 #2
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
        Call Trace:
         __dump_stack lib/dump_stack.c:16 [inline]
         dump_stack+0x194/0x257 lib/dump_stack.c:52
         print_address_description+0x73/0x250 mm/kasan/report.c:252
         kasan_report_error mm/kasan/report.c:351 [inline]
         kasan_report+0x24e/0x340 mm/kasan/report.c:409
         __asan_report_load4_noabort+0x14/0x20 mm/kasan/report.c:429
         free_ldt_struct.part.2+0x10a/0x150 arch/x86/kernel/ldt.c:116
         free_ldt_struct arch/x86/kernel/ldt.c:173 [inline]
         destroy_context_ldt+0x60/0x80 arch/x86/kernel/ldt.c:171
         destroy_context arch/x86/include/asm/mmu_context.h:157 [inline]
         __mmdrop+0xe9/0x530 kernel/fork.c:889
         mmdrop include/linux/sched/mm.h:42 [inline]
         exec_mmap fs/exec.c:1061 [inline]
         flush_old_exec+0x173c/0x1ff0 fs/exec.c:1291
         load_elf_binary+0x81f/0x4ba0 fs/binfmt_elf.c:855
         search_binary_handler+0x142/0x6b0 fs/exec.c:1652
         exec_binprm fs/exec.c:1694 [inline]
         do_execveat_common.isra.33+0x1746/0x22e0 fs/exec.c:1816
         do_execve+0x31/0x40 fs/exec.c:1860
         call_usermodehelper_exec_async+0x457/0x8f0 kernel/umh.c:100
         ret_from_fork+0x2a/0x40 arch/x86/entry/entry_64.S:431
    
        Allocated by task 3700:
         save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:59
         save_stack+0x43/0xd0 mm/kasan/kasan.c:447
         set_track mm/kasan/kasan.c:459 [inline]
         kasan_kmalloc+0xad/0xe0 mm/kasan/kasan.c:551
         kmem_cache_alloc_trace+0x136/0x750 mm/slab.c:3627
         kmalloc include/linux/slab.h:493 [inline]
         alloc_ldt_struct+0x52/0x140 arch/x86/kernel/ldt.c:67
         write_ldt+0x7b7/0xab0 arch/x86/kernel/ldt.c:277
         sys_modify_ldt+0x1ef/0x240 arch/x86/kernel/ldt.c:307
         entry_SYSCALL_64_fastpath+0x1f/0xbe
    
        Freed by task 3700:
         save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:59
         save_stack+0x43/0xd0 mm/kasan/kasan.c:447
         set_track mm/kasan/kasan.c:459 [inline]
         kasan_slab_free+0x71/0xc0 mm/kasan/kasan.c:524
         __cache_free mm/slab.c:3503 [inline]
         kfree+0xca/0x250 mm/slab.c:3820
         free_ldt_struct.part.2+0xdd/0x150 arch/x86/kernel/ldt.c:121
         free_ldt_struct arch/x86/kernel/ldt.c:173 [inline]
         destroy_context_ldt+0x60/0x80 arch/x86/kernel/ldt.c:171
         destroy_context arch/x86/include/asm/mmu_context.h:157 [inline]
         __mmdrop+0xe9/0x530 kernel/fork.c:889
         mmdrop include/linux/sched/mm.h:42 [inline]
         __mmput kernel/fork.c:916 [inline]
         mmput+0x541/0x6e0 kernel/fork.c:927
         copy_process.part.36+0x22e1/0x4af0 kernel/fork.c:1931
         copy_process kernel/fork.c:1546 [inline]
         _do_fork+0x1ef/0xfb0 kernel/fork.c:2025
         SYSC_clone kernel/fork.c:2135 [inline]
         SyS_clone+0x37/0x50 kernel/fork.c:2129
         do_syscall_64+0x26c/0x8c0 arch/x86/entry/common.c:287
         return_from_SYSCALL_64+0x0/0x7a
    
    Here is a C reproducer:
    
        #include <asm/ldt.h>
        #include <pthread.h>
        #include <signal.h>
        #include <stdlib.h>
        #include <sys/syscall.h>
        #include <sys/wait.h>
        #include <unistd.h>
    
        static void *fork_thread(void *_arg)
        {
            fork();
        }
    
        int main(void)
        {
            struct user_desc desc = { .entry_number = 8191 };
    
            syscall(__NR_modify_ldt, 1, &desc, sizeof(desc));
    
            for (;;) {
                if (fork() == 0) {
                    pthread_t t;
    
                    srand(getpid());
                    pthread_create(&t, NULL, fork_thread, NULL);
                    usleep(rand() % 10000);
                    syscall(__NR_exit_group, 0);
                }
                wait(NULL);
            }
        }
    
    Note: the reproducer takes advantage of the fact that alloc_ldt_struct()
    may use vmalloc() to allocate a large ->entries array, and after
    commit:
    
      5d17a73 ("vmalloc: back off when the current task is killed")
    
    it is possible for userspace to fail a task's vmalloc() by
    sending a fatal signal, e.g. via exit_group().  It would be more
    difficult to reproduce this bug on kernels without that commit.
    
    This bug only affected kernels with CONFIG_MODIFY_LDT_SYSCALL=y.
    
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Acked-by: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-mm@kvack.org
    Fixes: 39a0526 ("x86/mm: Factor out LDT init from context init")
    Link: http://lkml.kernel.org/r/20170824175029.76040-1-ebiggers3@gmail.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ebiggers authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    a8da876 View commit details
    Browse the repository at this point in the history
  77. net: sunrpc: svcsock: fix NULL-pointer exception

    commit eebe53e upstream.
    
    While running nfs/connectathon tests kernel NULL-pointer exception
    has been observed due to races in svcsock.c.
    
    Race is appear when kernel accepts connection by kernel_accept
    (which creates new socket) and start queuing ingress packets
    to new socket. This happens in ksoftirq context which could run
    concurrently on a different core while new socket setup is not done yet.
    
    The fix is to re-order socket user data init sequence and add
    write/read barrier calls to be sure that we got proper values
    for callback pointers before actually calling them.
    
    Test results: nfs/connectathon reports '0' failed tests for about 200+ iterations.
    
    Crash log:
    ---<-snip->---
    [ 6708.638984] Unable to handle kernel NULL pointer dereference at virtual address 00000000
    [ 6708.647093] pgd = ffff0000094e0000
    [ 6708.650497] [00000000] *pgd=0000010ffff90003, *pud=0000010ffff90003, *pmd=0000010ffff80003, *pte=0000000000000000
    [ 6708.660761] Internal error: Oops: 86000005 [#1] SMP
    [ 6708.665630] Modules linked in: nfsv3 nfnetlink_queue nfnetlink_log nfnetlink rpcsec_gss_krb5 nfsv4 dns_resolver nfs fscache overlay xt_CONNSECMARK xt_SECMARK xt_conntrack iptable_security ip_tables ah4 xfrm4_mode_transport sctp tun binfmt_misc ext4 jbd2 mbcache loop tcp_diag udp_diag inet_diag rpcrdma ib_isert iscsi_target_mod ib_iser rdma_cm iw_cm libiscsi scsi_transport_iscsi ib_srpt target_core_mod ib_srp scsi_transport_srp ib_ipoib ib_ucm ib_uverbs ib_umad ib_cm ib_core nls_koi8_u nls_cp932 ts_kmp nf_conntrack_ipv4 nf_defrag_ipv4 nf_conntrack vfat fat ghash_ce sha2_ce sha1_ce cavium_rng_vf i2c_thunderx sg thunderx_edac i2c_smbus edac_core cavium_rng nfsd auth_rpcgss nfs_acl lockd grace sunrpc xfs libcrc32c nicvf nicpf ast i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops
    [ 6708.736446]  ttm drm i2c_core thunder_bgx thunder_xcv mdio_thunder mdio_cavium dm_mirror dm_region_hash dm_log dm_mod [last unloaded: stap_3c300909c5b3f46dcacd49aab3334af_87021]
    [ 6708.752275] CPU: 84 PID: 0 Comm: swapper/84 Tainted: G        W  OE   4.11.0-4.el7.aarch64 #1
    [ 6708.760787] Hardware name: www.cavium.com CRB-2S/CRB-2S, BIOS 0.3 Mar 13 2017
    [ 6708.767910] task: ffff810006842e80 task.stack: ffff81000689c000
    [ 6708.773822] PC is at 0x0
    [ 6708.776739] LR is at svc_data_ready+0x38/0x88 [sunrpc]
    [ 6708.781866] pc : [<0000000000000000>] lr : [<ffff0000029d7378>] pstate: 60000145
    [ 6708.789248] sp : ffff810ffbad3900
    [ 6708.792551] x29: ffff810ffbad3900 x28: ffff000008c73d58
    [ 6708.797853] x27: 0000000000000000 x26: ffff81000bbe1e00
    [ 6708.803156] x25: 0000000000000020 x24: ffff800f7410bf28
    [ 6708.808458] x23: ffff000008c63000 x22: ffff000008c63000
    [ 6708.813760] x21: ffff800f7410bf28 x20: ffff81000bbe1e00
    [ 6708.819063] x19: ffff810012412400 x18: 00000000d82a9df2
    [ 6708.824365] x17: 0000000000000000 x16: 0000000000000000
    [ 6708.829667] x15: 0000000000000000 x14: 0000000000000001
    [ 6708.834969] x13: 0000000000000000 x12: 722e736f622e676e
    [ 6708.840271] x11: 00000000f814dd99 x10: 0000000000000000
    [ 6708.845573] x9 : 7374687225000000 x8 : 0000000000000000
    [ 6708.850875] x7 : 0000000000000000 x6 : 0000000000000000
    [ 6708.856177] x5 : 0000000000000028 x4 : 0000000000000000
    [ 6708.861479] x3 : 0000000000000000 x2 : 00000000e5000000
    [ 6708.866781] x1 : 0000000000000000 x0 : ffff81000bbe1e00
    [ 6708.872084]
    [ 6708.873565] Process swapper/84 (pid: 0, stack limit = 0xffff81000689c000)
    [ 6708.880341] Stack: (0xffff810ffbad3900 to 0xffff8100068a0000)
    [ 6708.886075] Call trace:
    [ 6708.888513] Exception stack(0xffff810ffbad3710 to 0xffff810ffbad3840)
    [ 6708.894942] 3700:                                   ffff810012412400 0001000000000000
    [ 6708.902759] 3720: ffff810ffbad3900 0000000000000000 0000000060000145 ffff800f79300000
    [ 6708.910577] 3740: ffff000009274d00 00000000000003ea 0000000000000015 ffff000008c63000
    [ 6708.918395] 3760: ffff810ffbad3830 ffff800f79300000 000000000000004d 0000000000000000
    [ 6708.926212] 3780: ffff810ffbad3890 ffff0000080f88dc ffff800f79300000 000000000000004d
    [ 6708.934030] 37a0: ffff800f7930093c ffff000008c63000 0000000000000000 0000000000000140
    [ 6708.941848] 37c0: ffff000008c2c000 0000000000040b00 ffff81000bbe1e00 0000000000000000
    [ 6708.949665] 37e0: 00000000e5000000 0000000000000000 0000000000000000 0000000000000028
    [ 6708.957483] 3800: 0000000000000000 0000000000000000 0000000000000000 7374687225000000
    [ 6708.965300] 3820: 0000000000000000 00000000f814dd99 722e736f622e676e 0000000000000000
    [ 6708.973117] [<          (null)>]           (null)
    [ 6708.977824] [<ffff0000086f9fa4>] tcp_data_queue+0x754/0xc5c
    [ 6708.983386] [<ffff0000086fa64c>] tcp_rcv_established+0x1a0/0x67c
    [ 6708.989384] [<ffff000008704120>] tcp_v4_do_rcv+0x15c/0x22c
    [ 6708.994858] [<ffff000008707418>] tcp_v4_rcv+0xaf0/0xb58
    [ 6709.000077] [<ffff0000086df784>] ip_local_deliver_finish+0x10c/0x254
    [ 6709.006419] [<ffff0000086dfea4>] ip_local_deliver+0xf0/0xfc
    [ 6709.011980] [<ffff0000086dfad4>] ip_rcv_finish+0x208/0x3a4
    [ 6709.017454] [<ffff0000086e018c>] ip_rcv+0x2dc/0x3c8
    [ 6709.022328] [<ffff000008692fc8>] __netif_receive_skb_core+0x2f8/0xa0c
    [ 6709.028758] [<ffff000008696068>] __netif_receive_skb+0x38/0x84
    [ 6709.034580] [<ffff00000869611c>] netif_receive_skb_internal+0x68/0xdc
    [ 6709.041010] [<ffff000008696bc0>] napi_gro_receive+0xcc/0x1a8
    [ 6709.046690] [<ffff0000014b0fc4>] nicvf_cq_intr_handler+0x59c/0x730 [nicvf]
    [ 6709.053559] [<ffff0000014b1380>] nicvf_poll+0x38/0xb8 [nicvf]
    [ 6709.059295] [<ffff000008697a6c>] net_rx_action+0x2f8/0x464
    [ 6709.064771] [<ffff000008081824>] __do_softirq+0x11c/0x308
    [ 6709.070164] [<ffff0000080d14e4>] irq_exit+0x12c/0x174
    [ 6709.075206] [<ffff00000813101c>] __handle_domain_irq+0x78/0xc4
    [ 6709.081027] [<ffff000008081608>] gic_handle_irq+0x94/0x190
    [ 6709.086501] Exception stack(0xffff81000689fdf0 to 0xffff81000689ff20)
    [ 6709.092929] fde0:                                   0000810ff2ec0000 ffff000008c10000
    [ 6709.100747] fe00: ffff000008c70ef4 0000000000000001 0000000000000000 ffff810ffbad9b18
    [ 6709.108565] fe20: ffff810ffbad9c70 ffff8100169d3800 ffff810006843ab0 ffff81000689fe80
    [ 6709.116382] fe40: 0000000000000bd0 0000ffffdf979cd0 183f5913da192500 0000ffff8a254ce4
    [ 6709.124200] fe60: 0000ffff8a254b78 0000aaab10339808 0000000000000000 0000ffff8a0c2a50
    [ 6709.132018] fe80: 0000ffffdf979b10 ffff000008d6d450 ffff000008c10000 ffff000008d6d000
    [ 6709.139836] fea0: 0000000000000054 ffff000008cd3dbc 0000000000000000 0000000000000000
    [ 6709.147653] fec0: 0000000000000000 0000000000000000 0000000000000000 ffff81000689ff20
    [ 6709.155471] fee0: ffff000008085240 ffff81000689ff20 ffff000008085244 0000000060000145
    [ 6709.163289] ff00: ffff81000689ff10 ffff00000813f1e4 ffffffffffffffff ffff00000813f238
    [ 6709.171107] [<ffff000008082eb4>] el1_irq+0xb4/0x140
    [ 6709.175976] [<ffff000008085244>] arch_cpu_idle+0x44/0x11c
    [ 6709.181368] [<ffff0000087bf3b8>] default_idle_call+0x20/0x30
    [ 6709.187020] [<ffff000008116d50>] do_idle+0x158/0x1e4
    [ 6709.191973] [<ffff000008116ff4>] cpu_startup_entry+0x2c/0x30
    [ 6709.197624] [<ffff00000808e7cc>] secondary_start_kernel+0x13c/0x160
    [ 6709.203878] [<0000000001bc71c4>] 0x1bc71c4
    [ 6709.207967] Code: bad PC value
    [ 6709.211061] SMP: stopping secondary CPUs
    [ 6709.218830] Starting crashdump kernel...
    [ 6709.222749] Bye!
    ---<-snip>---
    
    Signed-off-by: Vadim Lomovtsev <vlomovts@redhat.com>
    Reviewed-by: Jeff Layton <jlayton@redhat.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Vadim Lomovtsev authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    4909a7b View commit details
    Browse the repository at this point in the history
  78. netfilter: expect: fix crash when putting uninited expectation

    commit 36ac344 upstream.
    
    We crash in __nf_ct_expect_check, it calls nf_ct_remove_expect on the
    uninitialised expectation instead of existing one, so del_timer chokes
    on random memory address.
    
    Fixes: ec0e3f0 ("netfilter: nf_ct_expect: Add nf_ct_remove_expect()")
    Reported-by: Sergey Kvachonok <ravenexp@gmail.com>
    Tested-by: Sergey Kvachonok <ravenexp@gmail.com>
    Cc: Gao Feng <fgao@ikuai8.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Florian Westphal authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    f526388 View commit details
    Browse the repository at this point in the history
  79. netfilter: nat: fix src map lookup

    commit 97772bc upstream.
    
    When doing initial conversion to rhashtable I replaced the bucket
    walk with a single rhashtable_lookup_fast().
    
    When moving to rhlist I failed to properly walk the list of identical
    tuples, but that is what is needed for this to work correctly.
    The table contains the original tuples, so the reply tuples are all
    distinct.
    
    We currently decide that mapping is (not) in range only based on the
    first entry, but in case its not we need to try the reply tuple of the
    next entry until we either find an in-range mapping or we checked
    all the entries.
    
    This bug makes nat core attempt collision resolution while it might be
    able to use the mapping as-is.
    
    Fixes: 870190a ("netfilter: nat: convert nat bysrc hash to rhashtable")
    Reported-by: Jaco Kroon <jaco@uls.co.za>
    Tested-by: Jaco Kroon <jaco@uls.co.za>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Florian Westphal authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    8b50410 View commit details
    Browse the repository at this point in the history
  80. netfilter: nfnetlink: Improve input length sanitization in nfnetlink_rcv

    commit f55ce7b upstream.
    
    Verify that the length of the socket buffer is sufficient to cover the
    nlmsghdr structure before accessing the nlh->nlmsg_len field for further
    input sanitization. If the client only supplies 1-3 bytes of data in
    sk_buff, then nlh->nlmsg_len remains partially uninitialized and
    contains leftover memory from the corresponding kernel allocation.
    Operating on such data may result in indeterminate evaluation of the
    nlmsg_len < NLMSG_HDRLEN expression.
    
    The bug was discovered by a runtime instrumentation designed to detect
    use of uninitialized memory in the kernel. The patch prevents this and
    other similar tools (e.g. KMSAN) from flagging this behavior in the future.
    
    Signed-off-by: Mateusz Jurczyk <mjurczyk@google.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Cc: Florian Westphal <fw@strlen.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    j00ru authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    1eb33a1 View commit details
    Browse the repository at this point in the history
  81. Bluetooth: hidp: fix possible might sleep error in hidp_session_thread

    commit 5da8e47 upstream.
    
    It looks like hidp_session_thread has same pattern as the issue reported in
    old rfcomm:
    
    	while (1) {
    		set_current_state(TASK_INTERRUPTIBLE);
    		if (condition)
    			break;
    		// may call might_sleep here
    		schedule();
    	}
    	__set_current_state(TASK_RUNNING);
    
    Which fixed at:
    	dfb2fae Bluetooth: Fix nested sleeps
    
    So let's fix it at the same way, also follow the suggestion of:
    https://lwn.net/Articles/628628/
    
    Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
    Tested-by: AL Yu-Chen Cho <acho@suse.com>
    Tested-by: Rohit Vaswani <rvaswani@nvidia.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Cc: Jiri Slaby <jslaby@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    JeffyCN authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    e792d2d View commit details
    Browse the repository at this point in the history
  82. Bluetooth: cmtp: fix possible might sleep error in cmtp_session

    commit f06d977 upstream.
    
    It looks like cmtp_session has same pattern as the issue reported in
    old rfcomm:
    
    	while (1) {
    		set_current_state(TASK_INTERRUPTIBLE);
    		if (condition)
    			break;
    		// may call might_sleep here
    		schedule();
    	}
    	__set_current_state(TASK_RUNNING);
    
    Which fixed at:
    	dfb2fae Bluetooth: Fix nested sleeps
    
    So let's fix it at the same way, also follow the suggestion of:
    https://lwn.net/Articles/628628/
    
    Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
    Reviewed-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: AL Yu-Chen Cho <acho@suse.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Cc: Jiri Slaby <jslaby@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    JeffyCN authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    b741896 View commit details
    Browse the repository at this point in the history
  83. Bluetooth: bnep: fix possible might sleep error in bnep_session

    commit 2571738 upstream.
    
    It looks like bnep_session has same pattern as the issue reported in
    old rfcomm:
    
    	while (1) {
    		set_current_state(TASK_INTERRUPTIBLE);
    		if (condition)
    			break;
    		// may call might_sleep here
    		schedule();
    	}
    	__set_current_state(TASK_RUNNING);
    
    Which fixed at:
    	dfb2fae Bluetooth: Fix nested sleeps
    
    So let's fix it at the same way, also follow the suggestion of:
    https://lwn.net/Articles/628628/
    
    Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
    Reviewed-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: AL Yu-Chen Cho <acho@suse.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Cc: Jiri Slaby <jslaby@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    JeffyCN authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    b42c44a View commit details
    Browse the repository at this point in the history
  84. Revert "android: binder: Sanity check at binder ioctl"

    commit a2b1870 upstream.
    
    This reverts commit a906d69.
    
    The patch introduced a race in the binder driver. An attempt to fix the
    race was submitted in "[PATCH v2] android: binder: fix dangling pointer
    comparison", however the conclusion in the discussion for that patch
    was that the original patch should be reverted.
    
    The reversion is being done as part of the fine-grained locking
    patchset since the patch would need to be refactored when
    proc->vmm_vm_mm is removed from struct binder_proc and added
    in the binder allocator.
    
    Signed-off-by: Todd Kjos <tkjos@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Todd Kjos authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    62ccb81 View commit details
    Browse the repository at this point in the history
  85. binder: use group leader instead of open thread

    commit c4ea41b upstream.
    
    The binder allocator assumes that the thread that
    called binder_open will never die for the lifetime of
    that proc. That thread is normally the group_leader,
    however it may not be. Use the group_leader instead
    of current.
    
    Signed-off-by: Todd Kjos <tkjos@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Todd Kjos authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    7771e3f View commit details
    Browse the repository at this point in the history
  86. binder: Use wake up hint for synchronous transactions.

    commit 00b40d6 upstream.
    
    Use wake_up_interruptible_sync() to hint to the scheduler binder
    transactions are synchronous wakeups. Disable preemption while waking
    to avoid ping-ponging on the binder lock.
    
    Signed-off-by: Todd Kjos <tkjos@google.com>
    Signed-off-by: Omprakash Dhyade <odhyade@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    riandrews authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    f6fc60d View commit details
    Browse the repository at this point in the history
  87. ANDROID: binder: fix proc->tsk check.

    commit b2a6d1b upstream.
    
    Commit c4ea41b ("binder: use group leader instead of open thread")'
    was incomplete and didn't update a check in binder_mmap(), causing all
    mmap() calls into the binder driver to fail.
    
    Signed-off-by: Martijn Coenen <maco@android.com>
    Tested-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Martijn Coenen authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    bf9b9d3 View commit details
    Browse the repository at this point in the history
  88. iio: imu: adis16480: Fix acceleration scale factor for adis16480

    commit fdd0d32 upstream.
    
    According to the datasheet, the range of the acceleration is [-10 g, + 10 g],
    so the scale factor should be 10 instead of 5.
    
    Signed-off-by: Dragos Bogdan <dragos.bogdan@analog.com>
    Acked-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    dbogdan authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    a1d7b7e View commit details
    Browse the repository at this point in the history
  89. iio: hid-sensor-trigger: Fix the race with user space powering up sen…

    …sors
    
    commit f1664ea upstream.
    
    It has been reported for a while that with iio-sensor-proxy service the
    rotation only works after one suspend/resume cycle. This required a wait
    in the systemd unit file to avoid race. I found a Yoga 900 where I could
    reproduce this.
    
    The problem scenerio is:
    - During sensor driver init, enable run time PM and also set a
      auto-suspend for 3 seconds.
    	This result in one runtime resume. But there is a check to avoid
    a powerup in this sequence, but rpm is active
    - User space iio-sensor-proxy tries to power up the sensor. Since rpm is
      active it will simply return. But sensors were not actually
    powered up in the prior sequence, so actaully the sensors will not work
    - After 3 seconds the auto suspend kicks
    
    If we add a wait in systemd service file to fire iio-sensor-proxy after
    3 seconds, then now everything will work as the runtime resume will
    actually powerup the sensor as this is a user request.
    
    To avoid this:
    - Remove the check to match user requested state, this will cause a
      brief powerup, but if the iio-sensor-proxy starts immediately it will
    still work as the sensors are ON.
    - Also move the autosuspend delay to place when user requested turn off
      of sensors, like after user finished raw read or buffer disable
    
    Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Tested-by: Bastien Nocera <hadess@hadess.net>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    spandruvada authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    fc7957b View commit details
    Browse the repository at this point in the history
  90. iio: magnetometer: st_magn: fix status register address for LSM303AGR

    commit 541ee9b upstream.
    
    Fixes: 97865fe (iio: st_sensors: verify interrupt event to status)
    Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@st.com>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    LorenzoBianconi authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    e59c095 View commit details
    Browse the repository at this point in the history
  91. iio: magnetometer: st_magn: remove ihl property for LSM303AGR

    commit 8b35a5f upstream.
    
    Remove IRQ active low support for LSM303AGR since the sensor does not
    support that capability for data-ready line
    
    Fixes: a9fd053 (iio: st_sensors: support active-low interrupts)
    Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@st.com>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    LorenzoBianconi authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    91628e2 View commit details
    Browse the repository at this point in the history
  92. staging: rtl8188eu: add RNX-N150NUB support

    commit f299aec upstream.
    
    Add support for USB Device Rosewill RNX-N150NUB.
    VendorID: 0x0bda, ProductID: 0xffef
    
    Signed-off-by: Charles Milette <charles.milette@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    sylveon authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    75005bf View commit details
    Browse the repository at this point in the history
  93. iommu: Fix wrong freeing of iommu_device->dev

    commit 2926a2a upstream.
    
    The struct iommu_device has a 'struct device' embedded into
    it, not as a pointer, but the whole struct. In the
    conversion of the iommu drivers to use struct iommu_device
    it was forgotten that the relase function for that struct
    device simply calls kfree() on the pointer.
    
    This frees memory that was never allocated and causes memory
    corruption.
    
    To fix this issue, use a pointer to struct device instead of
    embedding the whole struct. This needs some updates in the
    iommu sysfs code as well as the Intel VT-d and AMD IOMMU
    driver.
    
    Reported-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
    Fixes: 39ab955 ('iommu: Add sysfs bindings for struct iommu_device')
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    joergroedel authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    0b9a3f3 View commit details
    Browse the repository at this point in the history
  94. Clarify (and fix) MAX_LFS_FILESIZE macros

    commit 0cc3b0e upstream.
    
    We have a MAX_LFS_FILESIZE macro that is meant to be filled in by
    filesystems (and other IO targets) that know they are 64-bit clean and
    don't have any 32-bit limits in their IO path.
    
    It turns out that our 32-bit value for that limit was bogus.  On 32-bit,
    the VM layer is limited by the page cache to only 32-bit index values,
    but our logic for that was confusing and actually wrong.  We used to
    define that value to
    
    	(((loff_t)PAGE_SIZE << (BITS_PER_LONG-1))-1)
    
    which is actually odd in several ways: it limits the index to 31 bits,
    and then it limits files so that they can't have data in that last byte
    of a page that has the highest 31-bit index (ie page index 0x7fffffff).
    
    Neither of those limitations make sense.  The index is actually the full
    32 bit unsigned value, and we can use that whole full page.  So the
    maximum size of the file would logically be "PAGE_SIZE << BITS_PER_LONG".
    
    However, we do wan tto avoid the maximum index, because we have code
    that iterates over the page indexes, and we don't want that code to
    overflow.  So the maximum size of a file on a 32-bit host should
    actually be one page less than the full 32-bit index.
    
    So the actual limit is ULONG_MAX << PAGE_SHIFT.  That means that we will
    not actually be using the page of that last index (ULONG_MAX), but we
    can grow a file up to that limit.
    
    The wrong value of MAX_LFS_FILESIZE actually caused problems for Doug
    Nazar, who was still using a 32-bit host, but with a 9.7TB 2 x RAID5
    volume.  It turns out that our old MAX_LFS_FILESIZE was 8TiB (well, one
    byte less), but the actual true VM limit is one page less than 16TiB.
    
    This was invisible until commit c2a9737 ("vfs,mm: fix a dead loop
    in truncate_inode_pages_range()"), which started applying that
    MAX_LFS_FILESIZE limit to block devices too.
    
    NOTE! On 64-bit, the page index isn't a limiter at all, and the limit is
    actually just the offset type itself (loff_t), which is signed.  But for
    clarity, on 64-bit, just use the maximum signed value, and don't make
    people have to count the number of 'f' characters in the hex constant.
    
    So just use LLONG_MAX for the 64-bit case.  That was what the value had
    been before too, just written out as a hex constant.
    
    Fixes: c2a9737 ("vfs,mm: fix a dead loop in truncate_inode_pages_range()")
    Reported-and-tested-by: Doug Nazar <nazard@nazar.ca>
    Cc: Andreas Dilger <adilger@dilger.ca>
    Cc: Mark Fasheh <mfasheh@versity.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Dave Kleikamp <shaggy@kernel.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    torvalds authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    03e5888 View commit details
    Browse the repository at this point in the history
  95. ntb: ntb_test: ensure the link is up before trying to configure the mws

    commit 0eb4634 upstream.
    
    After the link tests, there is a race on one side of the test for
    the link coming up. It's possible, in some cases, for the test script
    to write to the 'peer_trans' files before the link has come up.
    
    To fix this, we simply use the link event file to ensure both sides
    see the link as up before continuning.
    
    Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
    Acked-by: Allen Hubbe <Allen.Hubbe@dell.com>
    Signed-off-by: Jon Mason <jdmason@kudzu.us>
    Fixes: a9c59ef ("ntb_test: Add a selftest script for the NTB subsystem")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    lsgunth authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    ab75f02 View commit details
    Browse the repository at this point in the history
  96. ntb: transport shouldn't disable link due to bogus values in SPADs

    commit f3fd2af upstream.
    
    It seems that under certain scenarios the SPAD can have bogus values caused
    by an agent (i.e. BIOS or other software) that is not the kernel driver, and
    that causes memory window setup failure. This should not cause the link to
    be disabled because if we do that, the driver will never recover again. We
    have verified in testing that this issue happens and prevents proper link
    recovery.
    
    Signed-off-by: Dave Jiang <dave.jiang@intel.com>
    Acked-by: Allen Hubbe <Allen.Hubbe@dell.com>
    Signed-off-by: Jon Mason <jdmason@kudzu.us>
    Fixes: 84f7668 ("ntb: stop link work when we do not have memory")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    davejiang authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    49fa8c0 View commit details
    Browse the repository at this point in the history
  97. ACPI: APD: Fix HID for Hisilicon Hip07/08

    commit f7f3dd5 upstream.
    
    ACPI HID for Hisilicon Hip07/08 should be HISI02A1/2,
    not HISI0A21/2, HISI02A1/2 was tested ok but was modified
    by the stupid typo when upstream the patches (by me),
    correct them to the right IDs (matching the IDs in
    drivers/i2c/busses/i2c-designware-platdrv.c).
    
    Fixes: 6e14cf3 (ACPI / APD: Add clock frequency for Hisilicon Hip07/08 I2C controller)
    Reported-by: Tao Tian <tiantao6@huawei.com>
    Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    hanjun-guo authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    6e80b88 View commit details
    Browse the repository at this point in the history
  98. ACPI: EC: Fix regression related to wrong ECDT initialization order

    commit 98529b9 upstream.
    
    Commit 2a57084 (ACPI / EC: Fix a gap that ECDT EC cannot handle
    EC events) introduced acpi_ec_ecdt_start(), but that function is
    invoked before acpi_ec_query_init(), which is too early.  This causes
    the kernel to crash if an EC event occurs after boot, when ec_query_wq
    is not valid:
    
     BUG: unable to handle kernel NULL pointer dereference at 0000000000000102
     ...
     Workqueue: events acpi_ec_event_handler
     task: ffff9f539790dac0 task.stack: ffffb437c0e10000
     RIP: 0010:__queue_work+0x32/0x430
    
    Normally, the DSDT EC should always be valid, so acpi_ec_ecdt_start()
    is actually a no-op in the majority of cases.  However, commit
    c712bb5 (ACPI / EC: Add support to skip boot stage DSDT probe)
    caused the probing of the DSDT EC as the "boot EC" to be skipped when
    the ECDT EC is valid and uncovered the bug.
    
    Fix this issue by invoking acpi_ec_ecdt_start() after acpi_ec_query_init()
    in acpi_ec_init().
    
    Link: https://jira01.devtools.intel.com/browse/LCK-4348
    Fixes: 2a57084 (ACPI / EC: Fix a gap that ECDT EC cannot handle EC events)
    Fixes: c712bb5 (ACPI / EC: Add support to skip boot stage DSDT probe)
    Reported-by: Wang Wendy <wendy.wang@intel.com>
    Tested-by: Feng Chenzhou <chenzhoux.feng@intel.com>
    Signed-off-by: Lv Zheng <lv.zheng@intel.com>
    [ rjw: Changelog ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Lv Zheng authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    53220a2 View commit details
    Browse the repository at this point in the history
  99. powerpc/mm: Ensure cpumask update is ordered

    commit 1a92a80 upstream.
    
    There is no guarantee that the various isync's involved with
    the context switch will order the update of the CPU mask with
    the first TLB entry for the new context being loaded by the HW.
    
    Be safe here and add a memory barrier to order any subsequent
    load/store which may bring entries into the TLB.
    
    The corresponding barrier on the other side already exists as
    pte updates use pte_xchg() which uses __cmpxchg_u64 which has
    a sync after the atomic operation.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
    [mpe: Add comments in the code]
    [mpe: Backport to 4.12, minor context change]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ozbenh authored and gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    849e967 View commit details
    Browse the repository at this point in the history
  100. Linux 4.12.10

    gregkh committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    6371f03 View commit details
    Browse the repository at this point in the history
  101. Merge tag 'v4.12.10' into 4.12

    This is the 4.12.10 stable release
    xanmod committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    8f6c9ef View commit details
    Browse the repository at this point in the history
  102. 4.12.10-xanmod11

    Signed-off-by: Alexandre Frade <admfrade@gmail.com>
    xanmod committed Aug 30, 2017
    Configuration menu
    Copy the full SHA
    25379be View commit details
    Browse the repository at this point in the history

Commits on Sep 2, 2017

  1. Added "DEFAULT_BFQ" to the default I/O scheduler + config fixes

    - Add a Kconfig option to compile the BFQ I/O scheduler
    - Add a config option to compile the CPUMASK
    - Add a config option to compile the LOWLATENCY Kernel
    - Add a config option to compile the ILLINOIS congestion
    - Add a config option to compile the ILLINOIS congestion
    - Switch a config option to compile the CONFIG_VIDEO_VIMC to module
    - Add a config option to compile the DEBUG_INFO
    
    Fix boot if enable BFQ default, If these options are not present, then
    the kernel panic:
    
    - Add a config option to compile the SCSI_MQ_DEFAULT
    - Add a config option to compile the DM_MQ_DEFAULT
    
    Tuning BFQ and lowlatency, add to sysctl.conf:
    
    # Lowlatency Kernel Tuning
    kernel.sched_rt_runtime_us = -1
    kernel.perf_cpu_time_max_percent=0
    
    # Tuning IO shedulers
    vm.dirty_background_bytes=67108864
    vm.dirty_bytes=134217728
    
    
    Note:
    
    A workaround for those who do not have these options in the kernel, add
    to grub config:
    
    GRUB_CMDLINE_LINUX_DEFAULT="scsi_mod.use_blk_mq=y dm_mod.use_blk_mq=y"
    AndyLavr committed Sep 2, 2017
    Configuration menu
    Copy the full SHA
    24b0f2d View commit details
    Browse the repository at this point in the history