commit 788ccf7552c82179135470473d9035f7c8b0b188
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Jan 2 20:05:10 2018 +0100

    Linux 3.18.91

commit 95a9e2bf54b89e00a989c4c6c83efbd3cb972516
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Wed Dec 20 17:57:06 2017 -0800

    n_tty: fix EXTPROC vs ICANON interaction with TIOCINQ (aka FIONREAD)
    
    commit 966031f340185eddd05affcf72b740549f056348 upstream.
    
    We added support for EXTPROC back in 2010 in commit 26df6d13406d ("tty:
    Add EXTPROC support for LINEMODE") and the intent was to allow it to
    override some (all?) ICANON behavior.  Quoting from that original commit
    message:
    
             There is a new bit in the termios local flag word, EXTPROC.
             When this bit is set, several aspects of the terminal driver
             are disabled.  Input line editing, character echo, and mapping
             of signals are all disabled.  This allows the telnetd to turn
             off these functions when in linemode, but still keep track of
             what state the user wants the terminal to be in.
    
    but the problem turns out that "several aspects of the terminal driver
    are disabled" is a bit ambiguous, and you can really confuse the n_tty
    layer by setting EXTPROC and then causing some of the ICANON invariants
    to no longer be maintained.
    
    This fixes at least one such case (TIOCINQ) becoming unhappy because of
    the confusion over whether ICANON really means ICANON when EXTPROC is set.
    
    This basically makes TIOCINQ match the case of read: if EXTPROC is set,
    we ignore ICANON.  Also, make sure to reset the ICANON state ie EXTPROC
    changes, not just if ICANON changes.
    
    Fixes: 26df6d13406d ("tty: Add EXTPROC support for LINEMODE")
    Reported-by: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
    Reported-by: syzkaller <syzkaller@googlegroups.com>
    Cc: Jiri Slaby <jslaby@suse.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b3d91d5b5071ebc1453f02e126f3df805030ecf
Author: Daniel Thompson <daniel.thompson@linaro.org>
Date:   Thu Dec 21 15:06:15 2017 +0200

    usb: xhci: Add XHCI_TRUST_TX_LENGTH for Renesas uPD720201
    
    commit da99706689481717998d1d48edd389f339eea979 upstream.
    
    When plugging in a USB webcam I see the following message:
    xhci_hcd 0000:04:00.0: WARN Successful completion on short TX: needs
    XHCI_TRUST_TX_LENGTH quirk?
    handle_tx_event: 913 callbacks suppressed
    
    All is quiet again with this patch (and I've done a fair but of soak
    testing with the camera since).
    
    Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
    Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a8c1cf8f57be43251bab1bae78e5ac38e11e799
Author: Oliver Neukum <oneukum@suse.com>
Date:   Tue Dec 12 16:11:30 2017 +0100

    usb: add RESET_RESUME for ELSA MicroLink 56K
    
    commit b9096d9f15c142574ebebe8fbb137012bb9d99c2 upstream.
    
    This modem needs this quirk to operate. It produces timeouts when
    resumed without reset.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98372ee1e8d0f56961e46a6e11eec1b12de14596
Author: Dmitry Fleytman Dmitry Fleytman <dmitry.fleytman@gmail.com>
Date:   Tue Dec 19 06:02:04 2017 +0200

    usb: Add device quirk for Logitech HD Pro Webcam C925e
    
    commit 7f038d256c723dd390d2fca942919573995f4cfd upstream.
    
    Commit e0429362ab15
    ("usb: Add device quirk for Logitech HD Pro Webcams C920 and C930e")
    introduced quirk to workaround an issue with some Logitech webcams.
    
    There is one more model that has the same issue - C925e, so applying
    the same quirk as well.
    
    See aforementioned commit message for detailed explanation of the problem.
    
    Signed-off-by: Dmitry Fleytman <dmitry.fleytman@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07f8410606532d8942ade7ffd9a4917fe1b8543c
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Thu Dec 14 16:54:45 2017 +0100

    USB: serial: option: add support for Telit ME910 PID 0x1101
    
    commit 08933099e6404f588f81c2050bfec7313e06eeaf upstream.
    
    This patch adds support for PID 0x1101 of Telit ME910.
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 000c7141a1feace09bf4c0f65008e51fa69ecede
Author: Mohamed Ghannam <simo.ghannam@gmail.com>
Date:   Sun Dec 10 03:50:58 2017 +0000

    net: ipv4: fix for a race condition in raw_sendmsg
    
    
    [ Upstream commit 8f659a03a0ba9289b9aeb9b4470e6fb263d6f483 ]
    
    inet->hdrincl is racy, and could lead to uninitialized stack pointer
    usage, so its value should be read only once.
    
    Fixes: c008ba5bdc9f ("ipv4: Avoid reading user iov twice after raw_probe_proto_opt")
    Signed-off-by: Mohamed Ghannam <simo.ghannam@gmail.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 986444eaddc5919c37319efaa86271539989ef36
Author: Tonghao Zhang <xiangxia.m.yue@gmail.com>
Date:   Fri Dec 22 10:15:20 2017 -0800

    sctp: Replace use of sockets_allocated with specified macro.
    
    
    [ Upstream commit 8cb38a602478e9f806571f6920b0a3298aabf042 ]
    
    The patch(180d8cd942ce) replaces all uses of struct sock fields'
    memory_pressure, memory_allocated, sockets_allocated, and sysctl_mem
    to accessor macros. But the sockets_allocated field of sctp sock is
    not replaced at all. Then replace it now for unifying the code.
    
    Fixes: 180d8cd942ce ("foundations of per-cgroup memory pressure controlling.")
    Cc: Glauber Costa <glommer@parallels.com>
    Signed-off-by: Tonghao Zhang <zhangtonghao@didichuxing.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a11d92b0779db90c0b0b1617bda3f81aad2438b3
Author: Tobias Jordan <Tobias.Jordan@elektrobit.com>
Date:   Wed Dec 6 15:23:23 2017 +0100

    net: mvmdio: disable/unprepare clocks in EPROBE_DEFER case
    
    
    [ Upstream commit 589bf32f09852041fbd3b7ce1a9e703f95c230ba ]
    
    add appropriate calls to clk_disable_unprepare() by jumping to out_mdio
    in case orion_mdio_probe() returns -EPROBE_DEFER.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Fixes: 3d604da1e954 ("net: mvmdio: get and enable optional clock")
    Signed-off-by: Tobias Jordan <Tobias.Jordan@elektrobit.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 13550e44cf624e75e57f073fe753b0c45bd2cbf1
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Fri Dec 15 15:21:50 2017 -0600

    tg3: Fix rx hang on MTU change with 5717/5719
    
    
    [ Upstream commit 748a240c589824e9121befb1cba5341c319885bc ]
    
    This fixes a hang issue seen when changing the MTU size from 1500 MTU
    to 9000 MTU on both 5717 and 5719 chips. In discussion with Broadcom,
    they've indicated that these chipsets have the same phy as the 57766
    chipset, so the same workarounds apply. This has been tested by IBM
    on both Power 8 and Power 9 systems as well as by Broadcom on x86
    hardware and has been confirmed to resolve the hang issue.
    
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f07f65cdff98f093b4f2302696cbaf6fb84f6856
Author: Christoph Paasch <cpaasch@apple.com>
Date:   Mon Dec 11 00:05:46 2017 -0800

    tcp md5sig: Use skb's saddr when replying to an incoming segment
    
    
    [ Upstream commit 30791ac41927ebd3e75486f9504b6d2280463bf0 ]
    
    The MD5-key that belongs to a connection is identified by the peer's
    IP-address. When we are in tcp_v4(6)_reqsk_send_ack(), we are replying
    to an incoming segment from tcp_check_req() that failed the seq-number
    checks.
    
    Thus, to find the correct key, we need to use the skb's saddr and not
    the daddr.
    
    This bug seems to have been there since quite a while, but probably got
    unnoticed because the consequences are not catastrophic. We will call
    tcp_v4_reqsk_send_ack only to send a challenge-ACK back to the peer,
    thus the connection doesn't really fail.
    
    Fixes: 9501f9722922 ("tcp md5sig: Let the caller pass appropriate key for tcp_v{4,6}_do_calc_md5_hash().")
    Signed-off-by: Christoph Paasch <cpaasch@apple.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c0311793a848e5d3992fd74890fee5408c00fb07
Author: Sebastian Sjoholm <ssjoholm@mac.com>
Date:   Mon Dec 11 21:51:14 2017 +0100

    net: qmi_wwan: add Sierra EM7565 1199:9091
    
    
    [ Upstream commit aceef61ee56898cfa7b6960fb60b9326c3860441 ]
    
    Sierra Wireless EM7565 is an Qualcomm MDM9x50 based M.2 modem.
    The USB id is added to qmi_wwan.c to allow QMI communication
    with the EM7565.
    
    Signed-off-by: Sebastian Sjoholm <ssjoholm@mac.com>
    Acked-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>

commit 5594e3eba3ee62dd06c317086c4ea0491d5502c7
Author: Kevin Cernekee <cernekee@chromium.org>
Date:   Wed Dec 6 12:12:27 2017 -0800

    netlink: Add netns check on taps
    
    
    [ Upstream commit 93c647643b48f0131f02e45da3bd367d80443291 ]
    
    Currently, a nlmon link inside a child namespace can observe systemwide
    netlink activity.  Filter the traffic so that nlmon can only sniff
    netlink messages from its own netns.
    
    Test case:
    
        vpnns -- bash -c "ip link add nlmon0 type nlmon; \
                          ip link set nlmon0 up; \
                          tcpdump -i nlmon0 -q -w /tmp/nlmon.pcap -U" &
        sudo ip xfrm state add src 10.1.1.1 dst 10.1.1.2 proto esp \
            spi 0x1 mode transport \
            auth sha1 0x6162633132330000000000000000000000000000 \
            enc aes 0x00000000000000000000000000000000
        grep --binary abc123 /tmp/nlmon.pcap
    
    Signed-off-by: Kevin Cernekee <cernekee@chromium.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 70d931c38016ffcff31093ec9f8d0d7312d17fcc
Author: Kevin Cernekee <cernekee@chromium.org>
Date:   Mon Dec 11 11:13:45 2017 -0800

    net: igmp: Use correct source address on IGMPv3 reports
    
    
    [ Upstream commit a46182b00290839fa3fa159d54fd3237bd8669f0 ]
    
    Closing a multicast socket after the final IPv4 address is deleted
    from an interface can generate a membership report that uses the
    source IP from a different interface.  The following test script, run
    from an isolated netns, reproduces the issue:
    
        #!/bin/bash
    
        ip link add dummy0 type dummy
        ip link add dummy1 type dummy
        ip link set dummy0 up
        ip link set dummy1 up
        ip addr add 10.1.1.1/24 dev dummy0
        ip addr add 192.168.99.99/24 dev dummy1
    
        tcpdump -U -i dummy0 &
        socat EXEC:"sleep 2" \
            UDP4-DATAGRAM:239.101.1.68:8889,ip-add-membership=239.0.1.68:10.1.1.1 &
    
        sleep 1
        ip addr del 10.1.1.1/24 dev dummy0
        sleep 5
        kill %tcpdump
    
    RFC 3376 specifies that the report must be sent with a valid IP source
    address from the destination subnet, or from address 0.0.0.0.  Add an
    extra check to make sure this is the case.
    
    Signed-off-by: Kevin Cernekee <cernekee@chromium.org>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee26de88cb43110b94e40878eb5e20d7dd57f751
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Dec 11 07:03:38 2017 -0800

    ipv6: mcast: better catch silly mtu values
    
    
    [ Upstream commit b9b312a7a451e9c098921856e7cfbc201120e1a7 ]
    
    syzkaller reported crashes in IPv6 stack [1]
    
    Xin Long found that lo MTU was set to silly values.
    
    IPv6 stack reacts to changes to small MTU, by disabling itself under
    RTNL.
    
    But there is a window where threads not using RTNL can see a wrong
    device mtu. This can lead to surprises, in mld code where it is assumed
    the mtu is suitable.
    
    Fix this by reading device mtu once and checking IPv6 minimal MTU.
    
    [1]
     skbuff: skb_over_panic: text:0000000010b86b8d len:196 put:20
     head:000000003b477e60 data:000000000e85441e tail:0xd4 end:0xc0 dev:lo
     ------------[ cut here ]------------
     kernel BUG at net/core/skbuff.c:104!
     invalid opcode: 0000 [#1] SMP KASAN
     Dumping ftrace buffer:
        (ftrace buffer empty)
     Modules linked in:
     CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.15.0-rc2-mm1+ #39
     Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
     Google 01/01/2011
     RIP: 0010:skb_panic+0x15c/0x1f0 net/core/skbuff.c:100
     RSP: 0018:ffff8801db307508 EFLAGS: 00010286
     RAX: 0000000000000082 RBX: ffff8801c517e840 RCX: 0000000000000000
     RDX: 0000000000000082 RSI: 1ffff1003b660e61 RDI: ffffed003b660e95
     RBP: ffff8801db307570 R08: 1ffff1003b660e23 R09: 0000000000000000
     R10: 0000000000000000 R11: 0000000000000000 R12: ffffffff85bd4020
     R13: ffffffff84754ed2 R14: 0000000000000014 R15: ffff8801c4e26540
     FS:  0000000000000000(0000) GS:ffff8801db300000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000463610 CR3: 00000001c6698000 CR4: 00000000001406e0
     DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
     Call Trace:
      <IRQ>
      skb_over_panic net/core/skbuff.c:109 [inline]
      skb_put+0x181/0x1c0 net/core/skbuff.c:1694
      add_grhead.isra.24+0x42/0x3b0 net/ipv6/mcast.c:1695
      add_grec+0xa55/0x1060 net/ipv6/mcast.c:1817
      mld_send_cr net/ipv6/mcast.c:1903 [inline]
      mld_ifc_timer_expire+0x4d2/0x770 net/ipv6/mcast.c:2448
      call_timer_fn+0x23b/0x840 kernel/time/timer.c:1320
      expire_timers kernel/time/timer.c:1357 [inline]
      __run_timers+0x7e1/0xb60 kernel/time/timer.c:1660
      run_timer_softirq+0x4c/0xb0 kernel/time/timer.c:1686
      __do_softirq+0x29d/0xbb2 kernel/softirq.c:285
      invoke_softirq kernel/softirq.c:365 [inline]
      irq_exit+0x1d3/0x210 kernel/softirq.c:405
      exiting_irq arch/x86/include/asm/apic.h:540 [inline]
      smp_apic_timer_interrupt+0x16b/0x700 arch/x86/kernel/apic/apic.c:1052
      apic_timer_interrupt+0xa9/0xb0 arch/x86/entry/entry_64.S:920
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Tested-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>

commit c8b5bd50bfad60a85dcdfe0c4dc746735a44f101
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Dec 11 07:17:39 2017 -0800

    ipv4: igmp: guard against silly MTU values
    
    
    [ Upstream commit b5476022bbada3764609368f03329ca287528dc8 ]
    
    IPv4 stack reacts to changes to small MTU, by disabling itself under
    RTNL.
    
    But there is a window where threads not using RTNL can see a wrong
    device mtu. This can lead to surprises, in igmp code where it is
    assumed the mtu is suitable.
    
    Fix this by reading device mtu once and checking IPv4 minimal MTU.
    
    This patch adds missing IPV4_MIN_MTU define, to not abuse
    ETH_MIN_MTU anymore.
    
    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>

commit 20a0462fffafa1d549e93c16d5b9749ed5441e99
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Fri Dec 29 17:34:43 2017 -0800

    kbuild: add '-fno-stack-check' to kernel build options
    
    commit 3ce120b16cc548472f80cf8644f90eda958cf1b6 upstream.
    
    It appears that hardened gentoo enables "-fstack-check" by default for
    gcc.
    
    That doesn't work _at_all_ for the kernel, because the kernel stack
    doesn't act like a user stack at all: it's much smaller, and it doesn't
    auto-expand on use.  So the extra "probe one page below the stack" code
    generated by -fstack-check just breaks the kernel in horrible ways,
    causing infinite double faults etc.
    
    [ I have to say, that the particular code gcc generates looks very
      stupid even for user space where it works, but that's a separate
      issue.  ]
    
    Reported-and-tested-by: Alexander Tsoy <alexander@tsoy.me>
    Reported-and-tested-by: Toralf Förster <toralf.foerster@gmx.de>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8d7e04ac14c4d4543f19e9b9edd8b7a1b63f9d6
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Nov 13 12:12:56 2017 +0100

    ASoC: twl4030: fix child-node lookup
    
    commit 15f8c5f2415bfac73f33a14bcd83422bcbfb5298 upstream.
    
    Fix child-node lookup during probe, which ended up searching the whole
    device tree depth-first starting at the parent rather than just matching
    on its children.
    
    To make things worse, the parent codec node was also prematurely freed,
    while the child node was leaked.
    
    Fixes: 2d6d649a2e0f ("ASoC: twl4030: Support for DT booted kernel")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5beacbc73691287ef10609a64ae2ab11e34f3139
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Fri Dec 22 20:32:35 2017 -0500

    ring-buffer: Mask out the info bits when returning buffer page length
    
    commit 45d8b80c2ac5d21cd1e2954431fb676bc2b1e099 upstream.
    
    Two info bits were added to the "commit" part of the ring buffer data page
    when returned to be consumed. This was to inform the user space readers that
    events have been missed, and that the count may be stored at the end of the
    page.
    
    What wasn't handled, was the splice code that actually called a function to
    return the length of the data in order to zero out the rest of the page
    before sending it up to user space. These data bits were returned with the
    length making the value negative, and that negative value was not checked.
    It was compared to PAGE_SIZE, and only used if the size was less than
    PAGE_SIZE. Luckily PAGE_SIZE is unsigned long which made the compare an
    unsigned compare, meaning the negative size value did not end up causing a
    large portion of memory to be randomly zeroed out.
    
    Fixes: 66a8cb95ed040 ("ring-buffer: Add place holder recording of dropped events")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 42c1b3e6f205d9766a4b43f373db3b0e1adaf060
Author: Jing Xia <jing.xia@spreadtrum.com>
Date:   Tue Dec 26 15:12:53 2017 +0800

    tracing: Fix crash when it fails to alloc ring buffer
    
    commit 24f2aaf952ee0b59f31c3a18b8b36c9e3d3c2cf5 upstream.
    
    Double free of the ring buffer happens when it fails to alloc new
    ring buffer instance for max_buffer if TRACER_MAX_TRACE is configured.
    The root cause is that the pointer is not set to NULL after the buffer
    is freed in allocate_trace_buffers(), and the freeing of the ring
    buffer is invoked again later if the pointer is not equal to Null,
    as:
    
    instance_mkdir()
        |-allocate_trace_buffers()
            |-allocate_trace_buffer(tr, &tr->trace_buffer...)
            |-allocate_trace_buffer(tr, &tr->max_buffer...)
    
              // allocate fail(-ENOMEM),first free
              // and the buffer pointer is not set to null
            |-ring_buffer_free(tr->trace_buffer.buffer)
    
           // out_free_tr
        |-free_trace_buffers()
            |-free_trace_buffer(&tr->trace_buffer);
    
                  //if trace_buffer is not null, free again
                |-ring_buffer_free(buf->buffer)
                    |-rb_free_cpu_buffer(buffer->buffers[cpu])
                        // ring_buffer_per_cpu is null, and
                        // crash in ring_buffer_per_cpu->pages
    
    Link: http://lkml.kernel.org/r/20171226071253.8968-1-chunyan.zhang@spreadtrum.com
    
    Fixes: 737223fbca3b1 ("tracing: Consolidate buffer allocation code")
    Signed-off-by: Jing Xia <jing.xia@spreadtrum.com>
    Signed-off-by: Chunyan Zhang <chunyan.zhang@spreadtrum.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f9e16c238bd6da1d858d50c1ab81c8431578877a
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Tue Dec 26 20:07:34 2017 -0500

    tracing: Fix possible double free on failure of allocating trace buffer
    
    commit 4397f04575c44e1440ec2e49b6302785c95fd2f8 upstream.
    
    Jing Xia and Chunyan Zhang reported that on failing to allocate part of the
    tracing buffer, memory is freed, but the pointers that point to them are not
    initialized back to NULL, and later paths may try to free the freed memory
    again. Jing and Chunyan fixed one of the locations that does this, but
    missed a spot.
    
    Link: http://lkml.kernel.org/r/20171226071253.8968-1-chunyan.zhang@spreadtrum.com
    
    Fixes: 737223fbca3b1 ("tracing: Consolidate buffer allocation code")
    Reported-by: Jing Xia <jing.xia@spreadtrum.com>
    Reported-by: Chunyan Zhang <chunyan.zhang@spreadtrum.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 973b645673b626beed3b20aedddf2ff51b8fcab8
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Fri Dec 22 20:38:57 2017 -0500

    tracing: Remove extra zeroing out of the ring buffer page
    
    commit 6b7e633fe9c24682df550e5311f47fb524701586 upstream.
    
    The ring_buffer_read_page() takes care of zeroing out any extra data in the
    page that it returns. There's no need to zero it out again from the
    consumer. It was removed from one consumer of this function, but
    read_buffers_splice_read() did not remove it, and worse, it contained a
    nasty bug because of it.
    
    Fixes: 2711ca237a084 ("ring-buffer: Move zeroing out excess in page to ring buffer code")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0473d5cca66b3d7684029d68944baab69a3b560
Author: Yelena Krivosheev <yelena@marvell.com>
Date:   Tue Dec 19 17:59:45 2017 +0100

    net: mvneta: clear interface link status on port disable
    
    commit 4423c18e466afdfb02a36ee8b9f901d144b3c607 upstream.
    
    When port connect to PHY in polling mode (with poll interval 1 sec),
    port and phy link status must be synchronize in order don't loss link
    change event.
    
    [gregory.clement@free-electrons.com: add fixes tag]
    Fixes: c5aff18204da ("net: mvneta: driver for Marvell Armada 370/XP network unit")
    Signed-off-by: Yelena Krivosheev <yelena@marvell.com>
    Tested-by: Dmitri Epshtein <dima@marvell.com>
    Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b907723a77bd22b75fe4708668ec70378c831915
Author: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
Date:   Tue Dec 12 17:59:15 2017 +0530

    powerpc/perf: Dereference BHRB entries safely
    
    commit f41d84dddc66b164ac16acf3f584c276146f1c48 upstream.
    
    It's theoretically possible that branch instructions recorded in
    BHRB (Branch History Rolling Buffer) entries have already been
    unmapped before they are processed by the kernel. Hence, trying to
    dereference such memory location will result in a crash. eg:
    
        Unable to handle kernel paging request for data at address 0xd000000019c41764
        Faulting instruction address: 0xc000000000084a14
        NIP [c000000000084a14] branch_target+0x4/0x70
        LR [c0000000000eb828] record_and_restart+0x568/0x5c0
        Call Trace:
        [c0000000000eb3b4] record_and_restart+0xf4/0x5c0 (unreliable)
        [c0000000000ec378] perf_event_interrupt+0x298/0x460
        [c000000000027964] performance_monitor_exception+0x54/0x70
        [c000000000009ba4] performance_monitor_common+0x114/0x120
    
    Fix it by deferefencing the addresses safely.
    
    Fixes: 691231846ceb ("powerpc/perf: Fix setting of "to" addresses for BHRB")
    Suggested-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
    Reviewed-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    [mpe: Use probe_kernel_read() which is clearer, tweak change log]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 02952cd43e16b4be10e5f49a03fc3256fb10de1e
Author: Wanpeng Li <wanpeng.li@hotmail.com>
Date:   Thu Dec 7 00:30:08 2017 -0800

    KVM: X86: Fix load RFLAGS w/o the fixed bit
    
    commit d73235d17ba63b53dc0e1051dbc10a1f1be91b71 upstream.
    
     *** Guest State ***
     CR0: actual=0x0000000000000030, shadow=0x0000000060000010, gh_mask=fffffffffffffff7
     CR4: actual=0x0000000000002050, shadow=0x0000000000000000, gh_mask=ffffffffffffe871
     CR3 = 0x00000000fffbc000
     RSP = 0x0000000000000000  RIP = 0x0000000000000000
     RFLAGS=0x00000000         DR7 = 0x0000000000000400
            ^^^^^^^^^^
    
    The failed vmentry is triggered by the following testcase when ept=Y:
    
        #include <unistd.h>
        #include <sys/syscall.h>
        #include <string.h>
        #include <stdint.h>
        #include <linux/kvm.h>
        #include <fcntl.h>
        #include <sys/ioctl.h>
    
        long r[5];
        int main()
        {
            r[2] = open("/dev/kvm", O_RDONLY);
            r[3] = ioctl(r[2], KVM_CREATE_VM, 0);
            r[4] = ioctl(r[3], KVM_CREATE_VCPU, 7);
            struct kvm_regs regs = {
                    .rflags = 0,
            };
            ioctl(r[4], KVM_SET_REGS, &regs);
            ioctl(r[4], KVM_RUN, 0);
        }
    
    X86 RFLAGS bit 1 is fixed set, userspace can simply clearing bit 1
    of RFLAGS with KVM_SET_REGS ioctl which results in vmentry fails.
    This patch fixes it by oring X86_EFLAGS_FIXED during ioctl.
    
    Suggested-by: Jim Mattson <jmattson@google.com>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Quan Xu <quan.xu0@gmail.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: Jim Mattson <jmattson@google.com>
    Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 96a44e59c94d38366c7f9246e382a358c31fed04
Author: Helge Deller <deller@gmx.de>
Date:   Tue Dec 12 21:52:26 2017 +0100

    parisc: Hide Diva-built-in serial aux and graphics card
    
    commit bcf3f1752a622f1372d3252d0fea8855d89812e7 upstream.
    
    Diva GSP card has built-in serial AUX port and ATI graphic card which simply
    don't work and which both don't have external connectors.  User Guides even
    mention that those devices shouldn't be used.
    So, prevent that Linux drivers try to enable those devices.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59a2e05a53a68adb0ce2a6fd122d62422965ab09
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Fri Dec 15 03:07:18 2017 +0100

    PCI / PM: Force devices to D0 in pci_pm_thaw_noirq()
    
    commit 5839ee7389e893a31e4e3c9cf17b50d14103c902 upstream.
    
    It is incorrect to call pci_restore_state() for devices in low-power
    states (D1-D3), as that involves the restoration of MSI setup which
    requires MMIO to be operational and that is only the case in D0.
    
    However, pci_pm_thaw_noirq() may do that if the driver's "freeze"
    callbacks put the device into a low-power state, so fix it by making
    it force devices into D0 via pci_set_power_state() instead of trying
    to "update" their power state which is pointless.
    
    Fixes: e60514bd4485 (PCI/PM: Restore the status of PCI devices across hibernation)
    Reported-by: Thomas Gleixner <tglx@linutronix.de>
    Reported-by: Maarten Lankhorst <dev@mblankhorst.nl>
    Tested-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Maarten Lankhorst <dev@mblankhorst.nl>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f11d60dc210fc981f5f52969690281dd33cb49b7
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Dec 18 23:36:57 2017 +0100

    ALSA: usb-audio: Fix the missing ctl name suffix at parsing SU
    
    commit 5a15f289ee87eaf33f13f08a4909ec99d837ec5f upstream.
    
    The commit 89b89d121ffc ("ALSA: usb-audio: Add check return value for
    usb_string()") added the check of the return value from
    snd_usb_copy_string_desc(), which is correct per se, but it introduced
    a regression.  In the original code, either the "Clock Source",
    "Playback Source" or "Capture Source" suffix is added after the
    terminal string, while the commit changed it to add the suffix only
    when get_term_name() is failing.  It ended up with an incorrect ctl
    name like "PCM" instead of "PCM Capture Source".
    
    Also, even the original code has a similar bug: when the ctl name is
    generated from snd_usb_copy_string_desc() for the given iSelector, it
    also doesn't put the suffix.
    
    This patch addresses these issues: the suffix is added always when no
    static mapping is found.  Also the patch tries to put more comments
    and cleans up the if/else block for better readability in order to
    avoid the same pitfall again.
    
    Fixes: 89b89d121ffc ("ALSA: usb-audio: Add check return value for usb_string()")
    Reported-and-tested-by: Mauro Santos <registo.mailling@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db66b2dc2c8b766d17d4b0fc5091b8723a508976
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Dec 14 16:44:12 2017 +0100

    ALSA: rawmidi: Avoid racy info ioctl via ctl device
    
    commit c1cfd9025cc394fd137a01159d74335c5ac978ce upstream.
    
    The rawmidi also allows to obtaining the information via ioctl of ctl
    API.  It means that user can issue an ioctl to the rawmidi device even
    when it's being removed as long as the control device is present.
    Although the code has some protection via the global register_mutex,
    its range is limited to the search of the corresponding rawmidi
    object, and the mutex is already unlocked at accessing the rawmidi
    object.  This may lead to a use-after-free.
    
    For avoiding it, this patch widens the application of register_mutex
    to the whole snd_rawmidi_info_select() function.  We have another
    mutex per rawmidi object, but this operation isn't very hot path, so
    it shouldn't matter from the performance POV.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8651a4705a0a4aad43c436af7f05245ebb557c33
Author: Johan Hovold <johan@kernel.org>
Date:   Sat Nov 11 16:38:44 2017 +0100

    mfd: twl6040: Fix child-node lookup
    
    commit 85e9b13cbb130a3209f21bd7933933399c389ffe upstream.
    
    Fix child-node lookup during probe, which ended up searching the whole
    device tree depth-first starting at the parent rather than just matching
    on its children.
    
    To make things worse, the parent node was prematurely freed, while the
    child node was leaked.
    
    Note that the CONFIG_OF compile guard can be removed as
    of_get_child_by_name() provides a !CONFIG_OF implementation which always
    fails.
    
    Fixes: 37e13cecaa14 ("mfd: Add support for Device Tree to twl6040")
    Fixes: ca2cad6ae38e ("mfd: Fix twl6040 build failure")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d3cc4822354dd4d4fd0601bb0c794ce536ee7c37
Author: Johan Hovold <johan@kernel.org>
Date:   Sat Nov 11 16:38:43 2017 +0100

    mfd: twl4030-audio: Fix sibling-node lookup
    
    commit 0a423772de2f3d7b00899987884f62f63ae00dcb upstream.
    
    A helper purported to look up a child node based on its name was using
    the wrong of-helper and ended up prematurely freeing the parent of-node
    while leaking any matching node.
    
    To make things worse, any matching node would not even necessarily be a
    child node as the whole device tree was searched depth-first starting at
    the parent.
    
    Fixes: 019a7e6b7b31 ("mfd: twl4030-audio: Add DT support")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 19ddbcf647c7368e91b1710b1e82cd6cdaa2e0dd
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Thu Nov 30 13:39:27 2017 +0100

    crypto: mcryptd - protect the per-CPU queue with a lock
    
    commit 9abffc6f2efe46c3564c04312e52e07622d40e51 upstream.
    
    mcryptd_enqueue_request() grabs the per-CPU queue struct and protects
    access to it with disabled preemption. Then it schedules a worker on the
    same CPU. The worker in mcryptd_queue_worker() guards access to the same
    per-CPU variable with disabled preemption.
    
    If we take CPU-hotplug into account then it is possible that between
    queue_work_on() and the actual invocation of the worker the CPU goes
    down and the worker will be scheduled on _another_ CPU. And here the
    preempt_disable() protection does not work anymore. The easiest thing is
    to add a spin_lock() to guard access to the list.
    
    Another detail: mcryptd_queue_worker() is not processing more than
    MCRYPTD_BATCH invocation in a row. If there are still items left, then
    it will invoke queue_work() to proceed with more later. *I* would
    suggest to simply drop that check because it does not use a system
    workqueue and the workqueue is already marked as "CPU_INTENSIVE". And if
    preemption is required then the scheduler should do it.
    However if queue_work() is used then the work item is marked as CPU
    unbound. That means it will try to run on the local CPU but it may run
    on another CPU as well. Especially with CONFIG_DEBUG_WQ_FORCE_RR_CPU=y.
    Again, the preempt_disable() won't work here but lock which was
    introduced will help.
    In order to keep work-item on the local CPU (and avoid RR) I changed it
    to queue_work_on().
    
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4aee80b3d1c9dfe096775b573c7eb647819d845f
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Dec 14 13:31:16 2017 +0100

    ACPI: APEI / ERST: Fix missing error handling in erst_reader()
    
    commit bb82e0b4a7e96494f0c1004ce50cec3d7b5fb3d1 upstream.
    
    The commit f6f828513290 ("pstore: pass allocated memory region back to
    caller") changed the check of the return value from erst_read() in
    erst_reader() in the following way:
    
            if (len == -ENOENT)
                    goto skip;
    -       else if (len < 0) {
    -               rc = -1;
    +       else if (len < sizeof(*rcd)) {
    +               rc = -EIO;
                    goto out;
    
    This introduced another bug: since the comparison with sizeof() is
    cast to unsigned, a negative len value doesn't hit any longer.
    As a result, when an error is returned from erst_read(), the code
    falls through, and it may eventually lead to some weird thing like
    memory corruption.
    
    This patch adds the negative error value check more explicitly for
    addressing the issue.
    
    Fixes: f6f828513290 (pstore: pass allocated memory region back to caller)
    Tested-by: Jerry Tang <jtang@suse.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Acked-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>