commit 6bff0bba4664c5577a50d7e636c7160399a74941
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Apr 27 09:34:48 2019 +0200

    Linux 4.9.171

commit 3141fcc89f6695e75633e434fe93784cd31d0d22
Author: Will Deacon <will.deacon@arm.com>
Date:   Fri Apr 5 18:39:38 2019 -0700

    kernel/sysctl.c: fix out-of-bounds access when setting file-max
    
    commit 9002b21465fa4d829edfc94a5a441005cffaa972 upstream.
    
    Commit 32a5ad9c2285 ("sysctl: handle overflow for file-max") hooked up
    min/max values for the file-max sysctl parameter via the .extra1 and
    .extra2 fields in the corresponding struct ctl_table entry.
    
    Unfortunately, the minimum value points at the global 'zero' variable,
    which is an int.  This results in a KASAN splat when accessed as a long
    by proc_doulongvec_minmax on 64-bit architectures:
    
      | BUG: KASAN: global-out-of-bounds in __do_proc_doulongvec_minmax+0x5d8/0x6a0
      | Read of size 8 at addr ffff2000133d1c20 by task systemd/1
      |
      | CPU: 0 PID: 1 Comm: systemd Not tainted 5.1.0-rc3-00012-g40b114779944 #2
      | Hardware name: linux,dummy-virt (DT)
      | Call trace:
      |  dump_backtrace+0x0/0x228
      |  show_stack+0x14/0x20
      |  dump_stack+0xe8/0x124
      |  print_address_description+0x60/0x258
      |  kasan_report+0x140/0x1a0
      |  __asan_report_load8_noabort+0x18/0x20
      |  __do_proc_doulongvec_minmax+0x5d8/0x6a0
      |  proc_doulongvec_minmax+0x4c/0x78
      |  proc_sys_call_handler.isra.19+0x144/0x1d8
      |  proc_sys_write+0x34/0x58
      |  __vfs_write+0x54/0xe8
      |  vfs_write+0x124/0x3c0
      |  ksys_write+0xbc/0x168
      |  __arm64_sys_write+0x68/0x98
      |  el0_svc_common+0x100/0x258
      |  el0_svc_handler+0x48/0xc0
      |  el0_svc+0x8/0xc
      |
      | The buggy address belongs to the variable:
      |  zero+0x0/0x40
      |
      | Memory state around the buggy address:
      |  ffff2000133d1b00: 00 00 00 00 00 00 00 00 fa fa fa fa 04 fa fa fa
      |  ffff2000133d1b80: fa fa fa fa 04 fa fa fa fa fa fa fa 04 fa fa fa
      | >ffff2000133d1c00: fa fa fa fa 04 fa fa fa fa fa fa fa 00 00 00 00
      |                                ^
      |  ffff2000133d1c80: fa fa fa fa 00 fa fa fa fa fa fa fa 00 00 00 00
      |  ffff2000133d1d00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    
    Fix the splat by introducing a unsigned long 'zero_ul' and using that
    instead.
    
    Link: http://lkml.kernel.org/r/20190403153409.17307-1-will.deacon@arm.com
    Fixes: 32a5ad9c2285 ("sysctl: handle overflow for file-max")
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Acked-by: Christian Brauner <christian@brauner.io>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Cc: Matteo Croce <mcroce@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>

commit 7f21387276e70f7ef2cdfe631c9c53b589ad8a47
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Apr 25 10:00:43 2019 +0200

    Revert "locking/lockdep: Add debug_locks check in __lock_downgrade()"
    
    This reverts commit 670d934a1ea178d7543e6f50b515c76cebeb2fcf which was
    commit 71492580571467fb7177aade19c18ce7486267f5 upstream.
    
    Tetsuo rightly points out that the backport here is incorrect, as it
    touches the __lock_set_class function instead of the intended
    __lock_downgrade function.
    
    Reported-by: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
    Cc: Waiman Long <longman@redhat.com>
    Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 981a4798b5c41d02989c29edc3ff6ddca5ecc404
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Sat Oct 27 09:10:48 2018 -0700

    i2c-hid: properly terminate i2c_hid_dmi_desc_override_table[] array
    
    commit b59dfdaef173677b0b7e10f375226c0a1114fd20 upstream.
    
    Commit 9ee3e06610fd ("HID: i2c-hid: override HID descriptors for certain
    devices") added a new dmi_system_id quirk table to override certain HID
    report descriptors for some systems that lack them.
    
    But the table wasn't properly terminated, causing the dmi matching to
    walk off into la-la-land, and starting to treat random data as dmi
    descriptor pointers, causing boot-time oopses if you were at all
    unlucky.
    
    Terminate the array.
    
    We really should have some way to just statically check that arrays that
    should be terminated by an empty entry actually are so.  But the HID
    people really should have caught this themselves, rather than have me
    deal with an oops during the merge window.  Tssk, tssk.
    
    Cc: Julian Sax <jsbc@gmx.de>
    Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Cc: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Ambrož Bizjak <abizjak.pro@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c4ae3a694fabfc19b0fc6e65d530a7cdb542bda
Author: Matteo Croce <mcroce@redhat.com>
Date:   Mon Mar 18 02:32:36 2019 +0100

    percpu: stop printing kernel addresses
    
    commit 00206a69ee32f03e6f40837684dcbe475ea02266 upstream.
    
    Since commit ad67b74d2469d9b8 ("printk: hash addresses printed with %p"),
    at boot "____ptrval____" is printed instead of actual addresses:
    
        percpu: Embedded 38 pages/cpu @(____ptrval____) s124376 r0 d31272 u524288
    
    Instead of changing the print to "%px", and leaking kernel addresses,
    just remove the print completely, cfr. e.g. commit 071929dbdd865f77
    ("arm64: Stop printing the virtual memory layout").
    
    Signed-off-by: Matteo Croce <mcroce@redhat.com>
    Signed-off-by: Dennis Zhou <dennis@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a9f62dc69942e2a9aeedd9f5d238674cf1882138
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 16 15:25:00 2019 +0200

    ALSA: info: Fix racy addition/deletion of nodes
    
    commit 8c2f870890fd28e023b0fcf49dcee333f2c8bad7 upstream.
    
    The ALSA proc helper manages the child nodes in a linked list, but its
    addition and deletion is done without any lock.  This leads to a
    corruption if they are operated concurrently.  Usually this isn't a
    problem because the proc entries are added sequentially in the driver
    probe procedure itself.  But the card registrations are done often
    asynchronously, and the crash could be actually reproduced with
    syzkaller.
    
    This patch papers over it by protecting the link addition and deletion
    with the parent's mutex.  There is "access" mutex that is used for the
    file access, and this can be reused for this purpose as well.
    
    Reported-by: syzbot+48df349490c36f9f54ab@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1d536177bf2a0484a91abe77e36bf007f2a4364
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Thu Apr 18 17:50:20 2019 -0700

    mm/vmstat.c: fix /proc/vmstat format for CONFIG_DEBUG_TLBFLUSH=y CONFIG_SMP=n
    
    commit e8277b3b52240ec1caad8e6df278863e4bf42eac upstream.
    
    Commit 58bc4c34d249 ("mm/vmstat.c: skip NR_TLB_REMOTE_FLUSH* properly")
    depends on skipping vmstat entries with empty name introduced in
    7aaf77272358 ("mm: don't show nr_indirectly_reclaimable in
    /proc/vmstat") but reverted in b29940c1abd7 ("mm: rename and change
    semantics of nr_indirectly_reclaimable_bytes").
    
    So skipping no longer works and /proc/vmstat has misformatted lines " 0".
    
    This patch simply shows debug counters "nr_tlb_remote_*" for UP.
    
    Link: http://lkml.kernel.org/r/155481488468.467.4295519102880913454.stgit@buzz
    Fixes: 58bc4c34d249 ("mm/vmstat.c: skip NR_TLB_REMOTE_FLUSH* properly")
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Cc: Roman Gushchin <guro@fb.com>
    Cc: Jann Horn <jannh@google.com>
    Cc: <stable@vger.kernel.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>

commit b2b28629c69321ed59fdeaa6514691e04318cf13
Author: Jann Horn <jannh@google.com>
Date:   Tue Mar 19 02:36:59 2019 +0100

    device_cgroup: fix RCU imbalance in error case
    
    commit 0fcc4c8c044e117ac126ab6df4138ea9a67fa2a9 upstream.
    
    When dev_exception_add() returns an error (due to a failed memory
    allocation), make sure that we move the RCU preemption count back to where
    it was before we were called. We dropped the RCU read lock inside the loop
    body, so we can't just "break".
    
    sparse complains about this, too:
    
    $ make -s C=2 security/device_cgroup.o
    ./include/linux/rcupdate.h:647:9: warning: context imbalance in
    'propagate_exception' - unexpected unlock
    
    Fixes: d591fb56618f ("device_cgroup: simplify cgroup tree walk in propagate_exception()")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jann Horn <jannh@google.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 33f2a3e176bd508e369e34d171909acada064704
Author: Phil Auld <pauld@redhat.com>
Date:   Tue Apr 23 19:51:06 2019 -0400

    sched/fair: Limit sched_cfs_period_timer() loop to avoid hard lockup
    
    [ Upstream commit 2e8e19226398db8265a8e675fcc0118b9e80c9e8 ]
    
    With extremely short cfs_period_us setting on a parent task group with a large
    number of children the for loop in sched_cfs_period_timer() can run until the
    watchdog fires. There is no guarantee that the call to hrtimer_forward_now()
    will ever return 0.  The large number of children can make
    do_sched_cfs_period_timer() take longer than the period.
    
     NMI watchdog: Watchdog detected hard LOCKUP on cpu 24
     RIP: 0010:tg_nop+0x0/0x10
      <IRQ>
      walk_tg_tree_from+0x29/0xb0
      unthrottle_cfs_rq+0xe0/0x1a0
      distribute_cfs_runtime+0xd3/0xf0
      sched_cfs_period_timer+0xcb/0x160
      ? sched_cfs_slack_timer+0xd0/0xd0
      __hrtimer_run_queues+0xfb/0x270
      hrtimer_interrupt+0x122/0x270
      smp_apic_timer_interrupt+0x6a/0x140
      apic_timer_interrupt+0xf/0x20
      </IRQ>
    
    To prevent this we add protection to the loop that detects when the loop has run
    too many times and scales the period and quota up, proportionally, so that the timer
    can complete before then next period expires.  This preserves the relative runtime
    quota while preventing the hard lockup.
    
    A warning is issued reporting this state and the new values.
    
    Signed-off-by: Phil Auld <pauld@redhat.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: <stable@vger.kernel.org>
    Cc: Anton Blanchard <anton@ozlabs.org>
    Cc: Ben Segall <bsegall@google.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lkml.kernel.org/r/20190319130005.25492-1-pauld@redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6950577c4fc80f6da5f6c2e4b138d51b73b51e83
Author: Matthias Kaehlcke <mka@chromium.org>
Date:   Tue Apr 23 12:04:25 2019 -0700

    Revert "kbuild: use -Oz instead of -Os when using clang"
    
    commit a75bb4eb9e565b9f5115e2e8c07377ce32cbe69a upstream.
    
    The clang option -Oz enables *aggressive* optimization for size,
    which doesn't necessarily result in smaller images, but can have
    negative impact on performance. Switch back to the less aggressive
    -Os.
    
    This reverts commit 6748cb3c299de1ffbe56733647b01dbcc398c419.
    
    Suggested-by: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8a384d38baf58f39c432e32a04a32436e0e7d9d8
Author: Kim Phillips <kim.phillips@amd.com>
Date:   Thu Mar 21 21:15:22 2019 +0000

    perf/x86/amd: Add event map for AMD Family 17h
    
    commit 3fe3331bb285700ab2253dbb07f8e478fcea2f1b upstream.
    
    Family 17h differs from prior families by:
    
     - Does not support an L2 cache miss event
     - It has re-enumerated PMC counters for:
       - L2 cache references
       - front & back end stalled cycles
    
    So we add a new amd_f17h_perfmon_event_map[] so that the generic
    perf event names will resolve to the correct h/w events on
    family 17h and above processors.
    
    Reference sections 2.1.13.3.3 (stalls) and 2.1.13.3.6 (L2):
    
      https://www.amd.com/system/files/TechDocs/54945_PPR_Family_17h_Models_00h-0Fh.pdf
    
    Signed-off-by: Kim Phillips <kim.phillips@amd.com>
    Cc: <stable@vger.kernel.org> # v4.9+
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Janakarajan Natarajan <Janakarajan.Natarajan@amd.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Martin Liška <mliska@suse.cz>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Pu Wen <puwen@hygon.cn>
    Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-kernel@vger.kernel.org
    Fixes: e40ed1542dd7 ("perf/x86: Add perf support for AMD family-17h processors")
    [ Improved the formatting a bit. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56e74ed14925ae525ff51aeeba6774da04e7d2db
Author: Felix Fietkau <nbd@nbd.name>
Date:   Fri Mar 1 14:48:37 2019 +0100

    mac80211: do not call driver wake_tx_queue op during reconfig
    
    commit 4856bfd230985e43e84c26473c91028ff0a533bd upstream.
    
    There are several scenarios in which mac80211 can call drv_wake_tx_queue
    after ieee80211_restart_hw has been called and has not yet completed.
    Driver private structs are considered uninitialized until mac80211 has
    uploaded the vifs, stations and keys again, so using private tx queue
    data during that time is not safe.
    
    The driver can also not rely on drv_reconfig_complete to figure out when
    it is safe to accept drv_wake_tx_queue calls again, because it is only
    called after all tx queues are woken again.
    
    To fix this, bail out early in drv_wake_tx_queue if local->in_reconfig
    is set.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7a998ea71d5e906ac5563fb6f5bfa339be72c78
Author: Vijayakumar Durai <vijayakumar.durai1@vivint.com>
Date:   Wed Mar 27 11:03:17 2019 +0100

    rt2x00: do not increment sequence number while re-transmitting
    
    commit 746ba11f170603bf1eaade817553a6c2e9135bbe upstream.
    
    Currently rt2x00 devices retransmit the management frames with
    incremented sequence number if hardware is assigning the sequence.
    
    This is HW bug fixed already for non-QOS data frames, but it should
    be fixed for management frames except beacon.
    
    Without fix retransmitted frames have wrong SN:
    
     AlphaNet_e8:fb:36 Vivotek_52:31:51 Authentication, SN=1648, FN=0, Flags=........C Frame is not being retransmitted 1648 1
     AlphaNet_e8:fb:36 Vivotek_52:31:51 Authentication, SN=1649, FN=0, Flags=....R...C Frame is being retransmitted 1649 1
     AlphaNet_e8:fb:36 Vivotek_52:31:51 Authentication, SN=1650, FN=0, Flags=....R...C Frame is being retransmitted 1650 1
    
    With the fix SN stays correctly the same:
    
     88:6a:e3:e8:f9:a2 8c:f5:a3:88:76:87 Authentication, SN=1450, FN=0, Flags=........C
     88:6a:e3:e8:f9:a2 8c:f5:a3:88:76:87 Authentication, SN=1450, FN=0, Flags=....R...C
     88:6a:e3:e8:f9:a2 8c:f5:a3:88:76:87 Authentication, SN=1450, FN=0, Flags=....R...C
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Vijayakumar Durai <vijayakumar.durai1@vivint.com>
    [sgruszka: simplify code, change comments and changelog]
    Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a779c448061870ec3b99df20dd4a542ed4668d7
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Mon Apr 15 15:01:25 2019 +0900

    kprobes: Fix error check when reusing optimized probes
    
    commit 5f843ed415581cfad4ef8fefe31c138a8346ca8a upstream.
    
    The following commit introduced a bug in one of our error paths:
    
      819319fc9346 ("kprobes: Return error if we fail to reuse kprobe instead of BUG_ON()")
    
    it missed to handle the return value of kprobe_optready() as
    error-value. In reality, the kprobe_optready() returns a bool
    result, so "true" case must be passed instead of 0.
    
    This causes some errors on kprobe boot-time selftests on ARM:
    
     [   ] Beginning kprobe tests...
     [   ] Probe ARM code
     [   ]     kprobe
     [   ]     kretprobe
     [   ] ARM instruction simulation
     [   ]     Check decoding tables
     [   ]     Run test cases
     [   ] FAIL: test_case_handler not run
     [   ] FAIL: Test andge r10, r11, r14, asr r7
     [   ] FAIL: Scenario 11
     ...
     [   ] FAIL: Scenario 7
     [   ] Total instruction simulation tests=1631, pass=1433 fail=198
     [   ] kprobe tests failed
    
    This can happen if an optimized probe is unregistered and next
    kprobe is registered on same address until the previous probe
    is not reclaimed.
    
    If this happens, a hidden aggregated probe may be kept in memory,
    and no new kprobe can probe same address. Also, in that case
    register_kprobe() will return "1" instead of minus error value,
    which can mislead caller logic.
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
    Cc: David S . Miller <davem@davemloft.net>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Naveen N . Rao <naveen.n.rao@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org # v5.0+
    Fixes: 819319fc9346 ("kprobes: Return error if we fail to reuse kprobe instead of BUG_ON()")
    Link: http://lkml.kernel.org/r/155530808559.32517.539898325433642204.stgit@devnote2
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 25f467dcd3a362fd3377d689b8db72cab6393595
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Sun Feb 24 01:50:20 2019 +0900

    kprobes: Mark ftrace mcount handler functions nokprobe
    
    commit fabe38ab6b2bd9418350284c63825f13b8a6abba upstream.
    
    Mark ftrace mcount handler functions nokprobe since
    probing on these functions with kretprobe pushes
    return address incorrectly on kretprobe shadow stack.
    
    Reported-by: Francis Deslauriers <francis.deslauriers@efficios.com>
    Tested-by: Andrea Righi <righi.andrea@gmail.com>
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Acked-by: Steven Rostedt <rostedt@goodmis.org>
    Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/155094062044.6137.6419622920568680640.stgit@devbox
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c9c83bb2adc468d745dc0dd19ce44814e3696951
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Sun Feb 24 01:49:52 2019 +0900

    x86/kprobes: Verify stack frame on kretprobe
    
    commit 3ff9c075cc767b3060bdac12da72fc94dd7da1b8 upstream.
    
    Verify the stack frame pointer on kretprobe trampoline handler,
    If the stack frame pointer does not match, it skips the wrong
    entry and tries to find correct one.
    
    This can happen if user puts the kretprobe on the function
    which can be used in the path of ftrace user-function call.
    Such functions should not be probed, so this adds a warning
    message that reports which function should be blacklisted.
    
    Tested-by: Andrea Righi <righi.andrea@gmail.com>
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Acked-by: Steven Rostedt <rostedt@goodmis.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/155094059185.6137.15527904013362842072.stgit@devbox
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e6a1efbdb2e749130015aeadc61330355b4c491
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Wed Apr 17 00:21:21 2019 -0700

    arm64: futex: Restore oldval initialization to work around buggy compilers
    
    commit ff8acf929014b7f87315588e0daf8597c8aa9d1c upstream.
    
    Commit 045afc24124d ("arm64: futex: Fix FUTEX_WAKE_OP atomic ops with
    non-zero result value") removed oldval's zero initialization in
    arch_futex_atomic_op_inuser because it is not necessary. Unfortunately,
    Android's arm64 GCC 4.9.4 [1] does not agree:
    
    ../kernel/futex.c: In function 'do_futex':
    ../kernel/futex.c:1658:17: warning: 'oldval' may be used uninitialized
    in this function [-Wmaybe-uninitialized]
       return oldval == cmparg;
                     ^
    In file included from ../kernel/futex.c:73:0:
    ../arch/arm64/include/asm/futex.h:53:6: note: 'oldval' was declared here
      int oldval, ret, tmp;
          ^
    
    GCC fails to follow that when ret is non-zero, futex_atomic_op_inuser
    returns right away, avoiding the uninitialized use that it claims.
    Restoring the zero initialization works around this issue.
    
    [1]: https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/
    
    Cc: stable@vger.kernel.org
    Fixes: 045afc24124d ("arm64: futex: Fix FUTEX_WAKE_OP atomic ops with non-zero result value")
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4bd24d8f415021ee9348eaf2fe956cc6d9b322ad
Author: Eric Biggers <ebiggers@google.com>
Date:   Sun Mar 31 13:04:11 2019 -0700

    crypto: x86/poly1305 - fix overflow during partial reduction
    
    commit 678cce4019d746da6c680c48ba9e6d417803e127 upstream.
    
    The x86_64 implementation of Poly1305 produces the wrong result on some
    inputs because poly1305_4block_avx2() incorrectly assumes that when
    partially reducing the accumulator, the bits carried from limb 'd4' to
    limb 'h0' fit in a 32-bit integer.  This is true for poly1305-generic
    which processes only one block at a time.  However, it's not true for
    the AVX2 implementation, which processes 4 blocks at a time and
    therefore can produce intermediate limbs about 4x larger.
    
    Fix it by making the relevant calculations use 64-bit arithmetic rather
    than 32-bit.  Note that most of the carries already used 64-bit
    arithmetic, but the d4 -> h0 carry was different for some reason.
    
    To be safe I also made the same change to the corresponding SSE2 code,
    though that only operates on 1 or 2 blocks at a time.  I don't think
    it's really needed for poly1305_block_sse2(), but it doesn't hurt
    because it's already x86_64 code.  It *might* be needed for
    poly1305_2block_sse2(), but overflows aren't easy to reproduce there.
    
    This bug was originally detected by my patches that improve testmgr to
    fuzz algorithms against their generic implementation.  But also add a
    test vector which reproduces it directly (in the AVX2 case).
    
    Fixes: b1ccc8f4b631 ("crypto: poly1305 - Add a four block AVX2 variant for x86_64")
    Fixes: c70f4abef07a ("crypto: poly1305 - Add a SSE2 SIMD variant for x86_64")
    Cc: <stable@vger.kernel.org> # v4.3+
    Cc: Martin Willi <martin@strongswan.org>
    Cc: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Reviewed-by: Martin Willi <martin@strongswan.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db773fc411922d52c4fa46b218f89c66ed625dec
Author: Suthikulpanit, Suravee <Suravee.Suthikulpanit@amd.com>
Date:   Wed Mar 20 08:12:28 2019 +0000

    Revert "svm: Fix AVIC incomplete IPI emulation"
    
    commit 4a58038b9e420276157785afa0a0bbb4b9bc2265 upstream.
    
    This reverts commit bb218fbcfaaa3b115d4cd7a43c0ca164f3a96e57.
    
    As Oren Twaig pointed out the old discussion:
    
      https://patchwork.kernel.org/patch/8292231/
    
    that the change coud potentially cause an extra IPI to be sent to
    the destination vcpu because the AVIC hardware already set the IRR bit
    before the incomplete IPI #VMEXIT with id=1 (target vcpu is not running).
    Since writting to ICR and ICR2 will also set the IRR. If something triggers
    the destination vcpu to get scheduled before the emulation finishes, then
    this could result in an additional IPI.
    
    Also, the issue mentioned in the commit bb218fbcfaaa was misdiagnosed.
    
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Reported-by: Oren Twaig <oren@scalemp.com>
    Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5976d8f266f1559b2c3abe2536bf51629217f6c8
Author: Saurav Kashyap <skashyap@marvell.com>
Date:   Thu Apr 18 03:40:12 2019 -0700

    Revert "scsi: fcoe: clear FC_RP_STARTED flags when receiving a LOGO"
    
    commit 0228034d8e5915b98c33db35a98f5e909e848ae9 upstream.
    
    This patch clears FC_RP_STARTED flag during logoff, because of this
    re-login(flogi) didn't happen to the switch.
    
    This reverts commit 1550ec458e0cf1a40a170ab1f4c46e3f52860f65.
    
    Fixes: 1550ec458e0c ("scsi: fcoe: clear FC_RP_STARTED flags when receiving a LOGO")
    Cc: <stable@vger.kernel.org> # v4.18+
    Signed-off-by: Saurav Kashyap <skashyap@marvell.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>

commit d944299e7a6fce01db3603bc55d51ef336c19cc4
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 16 17:06:33 2019 +0200

    ALSA: core: Fix card races between register and disconnect
    
    commit 2a3f7221acddfe1caa9ff09b3a8158c39b2fdeac upstream.
    
    There is a small race window in the card disconnection code that
    allows the registration of another card with the very same card id.
    This leads to a warning in procfs creation as caught by syzkaller.
    
    The problem is that we delete snd_cards and snd_cards_lock entries at
    the very beginning of the disconnection procedure.  This makes the
    slot available to be assigned for another card object while the
    disconnection procedure is being processed.  Then it becomes possible
    to issue a procfs registration with the existing file name although we
    check the conflict beforehand.
    
    The fix is simply to move the snd_cards and snd_cards_lock clearances
    at the end of the disconnection procedure.  The references to these
    entries are merely either from the global proc files like
    /proc/asound/cards or from the card registration / disconnection, so
    it should be fine to shift at the very end.
    
    Reported-by: syzbot+48df349490c36f9f54ab@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4430d935ed1b2d0142fa4bdb18c9c9687f2bf471
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Mon Apr 15 12:43:02 2019 +0100

    staging: comedi: ni_usb6501: Fix possible double-free of ->usb_rx_buf
    
    commit af4b54a2e5ba18259ff9aac445bf546dd60d037e upstream.
    
    `ni6501_alloc_usb_buffers()` is called from `ni6501_auto_attach()` to
    allocate RX and TX buffers for USB transfers.  It allocates
    `devpriv->usb_rx_buf` followed by `devpriv->usb_tx_buf`.  If the
    allocation of `devpriv->usb_tx_buf` fails, it frees
    `devpriv->usb_rx_buf`, leaving the pointer set dangling, and returns an
    error.  Later, `ni6501_detach()` will be called from the core comedi
    module code to clean up.  `ni6501_detach()` also frees both
    `devpriv->usb_rx_buf` and `devpriv->usb_tx_buf`, but
    `devpriv->usb_rx_buf` may have already beed freed, leading to a
    double-free error.  Fix it bu removing the call to
    `kfree(devpriv->usb_rx_buf)` from `ni6501_alloc_usb_buffers()`, relying
    on `ni6501_detach()` to free the memory.
    
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 96acbd415cd08c89c52ca587f25d668c909340b0
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Mon Apr 15 12:43:01 2019 +0100

    staging: comedi: ni_usb6501: Fix use of uninitialized mutex
    
    commit 660cf4ce9d0f3497cc7456eaa6d74c8b71d6282c upstream.
    
    If `ni6501_auto_attach()` returns an error, the core comedi module code
    will call `ni6501_detach()` to clean up.  If `ni6501_auto_attach()`
    successfully allocated the comedi device private data, `ni6501_detach()`
    assumes that a `struct mutex mut` contained in the private data has been
    initialized and uses it.  Unfortunately, there are a couple of places
    where `ni6501_auto_attach()` can return an error after allocating the
    device private data but before initializing the mutex, so this
    assumption is invalid.  Fix it by initializing the mutex just after
    allocating the private data in `ni6501_auto_attach()` before any other
    errors can be retturned.  Also move the call to `usb_set_intfdata()`
    just to keep the code a bit neater (either position for the call is
    fine).
    
    I believe this was the cause of the following syzbot crash report
    <https://syzkaller.appspot.com/bug?extid=cf4f2b6c24aff0a3edf6>:
    
    usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
    usb 1-1: config 0 descriptor??
    usb 1-1: string descriptor 0 read error: -71
    comedi comedi0: Wrong number of endpoints
    ni6501 1-1:0.233: driver 'ni6501' failed to auto-configure device.
    INFO: trying to register non-static key.
    the code is fine but needs lockdep annotation.
    turning off the locking correctness validator.
    CPU: 0 PID: 585 Comm: kworker/0:3 Not tainted 5.1.0-rc4-319354-g9a33b36 #3
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: usb_hub_wq hub_event
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0xe8/0x16e lib/dump_stack.c:113
     assign_lock_key kernel/locking/lockdep.c:786 [inline]
     register_lock_class+0x11b8/0x1250 kernel/locking/lockdep.c:1095
     __lock_acquire+0xfb/0x37c0 kernel/locking/lockdep.c:3582
     lock_acquire+0x10d/0x2f0 kernel/locking/lockdep.c:4211
     __mutex_lock_common kernel/locking/mutex.c:925 [inline]
     __mutex_lock+0xfe/0x12b0 kernel/locking/mutex.c:1072
     ni6501_detach+0x5b/0x110 drivers/staging/comedi/drivers/ni_usb6501.c:567
     comedi_device_detach+0xed/0x800 drivers/staging/comedi/drivers.c:204
     comedi_device_cleanup.part.0+0x68/0x140 drivers/staging/comedi/comedi_fops.c:156
     comedi_device_cleanup drivers/staging/comedi/comedi_fops.c:187 [inline]
     comedi_free_board_dev.part.0+0x16/0x90 drivers/staging/comedi/comedi_fops.c:190
     comedi_free_board_dev drivers/staging/comedi/comedi_fops.c:189 [inline]
     comedi_release_hardware_device+0x111/0x140 drivers/staging/comedi/comedi_fops.c:2880
     comedi_auto_config.cold+0x124/0x1b0 drivers/staging/comedi/drivers.c:1068
     usb_probe_interface+0x31d/0x820 drivers/usb/core/driver.c:361
     really_probe+0x2da/0xb10 drivers/base/dd.c:509
     driver_probe_device+0x21d/0x350 drivers/base/dd.c:671
     __device_attach_driver+0x1d8/0x290 drivers/base/dd.c:778
     bus_for_each_drv+0x163/0x1e0 drivers/base/bus.c:454
     __device_attach+0x223/0x3a0 drivers/base/dd.c:844
     bus_probe_device+0x1f1/0x2a0 drivers/base/bus.c:514
     device_add+0xad2/0x16e0 drivers/base/core.c:2106
     usb_set_configuration+0xdf7/0x1740 drivers/usb/core/message.c:2021
     generic_probe+0xa2/0xda drivers/usb/core/generic.c:210
     usb_probe_device+0xc0/0x150 drivers/usb/core/driver.c:266
     really_probe+0x2da/0xb10 drivers/base/dd.c:509
     driver_probe_device+0x21d/0x350 drivers/base/dd.c:671
     __device_attach_driver+0x1d8/0x290 drivers/base/dd.c:778
     bus_for_each_drv+0x163/0x1e0 drivers/base/bus.c:454
     __device_attach+0x223/0x3a0 drivers/base/dd.c:844
     bus_probe_device+0x1f1/0x2a0 drivers/base/bus.c:514
     device_add+0xad2/0x16e0 drivers/base/core.c:2106
     usb_new_device.cold+0x537/0xccf drivers/usb/core/hub.c:2534
     hub_port_connect drivers/usb/core/hub.c:5089 [inline]
     hub_port_connect_change drivers/usb/core/hub.c:5204 [inline]
     port_event drivers/usb/core/hub.c:5350 [inline]
     hub_event+0x138e/0x3b00 drivers/usb/core/hub.c:5432
     process_one_work+0x90f/0x1580 kernel/workqueue.c:2269
     worker_thread+0x9b/0xe20 kernel/workqueue.c:2415
     kthread+0x313/0x420 kernel/kthread.c:253
     ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:352
    
    Reported-by: syzbot+cf4f2b6c24aff0a3edf6@syzkaller.appspotmail.com
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a149cded351445fb220eec23efc464ad58fe964c
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Mon Apr 15 12:52:30 2019 +0100

    staging: comedi: vmk80xx: Fix possible double-free of ->usb_rx_buf
    
    commit 663d294b4768bfd89e529e069bffa544a830b5bf upstream.
    
    `vmk80xx_alloc_usb_buffers()` is called from `vmk80xx_auto_attach()` to
    allocate RX and TX buffers for USB transfers.  It allocates
    `devpriv->usb_rx_buf` followed by `devpriv->usb_tx_buf`.  If the
    allocation of `devpriv->usb_tx_buf` fails, it frees
    `devpriv->usb_rx_buf`,  leaving the pointer set dangling, and returns an
    error.  Later, `vmk80xx_detach()` will be called from the core comedi
    module code to clean up.  `vmk80xx_detach()` also frees both
    `devpriv->usb_rx_buf` and `devpriv->usb_tx_buf`, but
    `devpriv->usb_rx_buf` may have already been freed, leading to a
    double-free error.  Fix it by removing the call to
    `kfree(devpriv->usb_rx_buf)` from `vmk80xx_alloc_usb_buffers()`, relying
    on `vmk80xx_detach()` to free the memory.
    
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3392795a3ebcf4e8a0a1bce787ba236c4e579dc5
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Mon Apr 15 12:10:14 2019 +0100

    staging: comedi: vmk80xx: Fix use of uninitialized semaphore
    
    commit 08b7c2f9208f0e2a32159e4e7a4831b7adb10a3e upstream.
    
    If `vmk80xx_auto_attach()` returns an error, the core comedi module code
    will call `vmk80xx_detach()` to clean up.  If `vmk80xx_auto_attach()`
    successfully allocated the comedi device private data,
    `vmk80xx_detach()` assumes that a `struct semaphore limit_sem` contained
    in the private data has been initialized and uses it.  Unfortunately,
    there are a couple of places where `vmk80xx_auto_attach()` can return an
    error after allocating the device private data but before initializing
    the semaphore, so this assumption is invalid.  Fix it by initializing
    the semaphore just after allocating the private data in
    `vmk80xx_auto_attach()` before any other errors can be returned.
    
    I believe this was the cause of the following syzbot crash report
    <https://syzkaller.appspot.com/bug?extid=54c2f58f15fe6876b6ad>:
    
    usb 1-1: config 0 has no interface number 0
    usb 1-1: New USB device found, idVendor=10cf, idProduct=8068, bcdDevice=e6.8d
    usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
    usb 1-1: config 0 descriptor??
    vmk80xx 1-1:0.117: driver 'vmk80xx' failed to auto-configure device.
    INFO: trying to register non-static key.
    the code is fine but needs lockdep annotation.
    turning off the locking correctness validator.
    CPU: 0 PID: 12 Comm: kworker/0:1 Not tainted 5.1.0-rc4-319354-g9a33b36 #3
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: usb_hub_wq hub_event
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0xe8/0x16e lib/dump_stack.c:113
     assign_lock_key kernel/locking/lockdep.c:786 [inline]
     register_lock_class+0x11b8/0x1250 kernel/locking/lockdep.c:1095
     __lock_acquire+0xfb/0x37c0 kernel/locking/lockdep.c:3582
     lock_acquire+0x10d/0x2f0 kernel/locking/lockdep.c:4211
     __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
     _raw_spin_lock_irqsave+0x44/0x60 kernel/locking/spinlock.c:152
     down+0x12/0x80 kernel/locking/semaphore.c:58
     vmk80xx_detach+0x59/0x100 drivers/staging/comedi/drivers/vmk80xx.c:829
     comedi_device_detach+0xed/0x800 drivers/staging/comedi/drivers.c:204
     comedi_device_cleanup.part.0+0x68/0x140 drivers/staging/comedi/comedi_fops.c:156
     comedi_device_cleanup drivers/staging/comedi/comedi_fops.c:187 [inline]
     comedi_free_board_dev.part.0+0x16/0x90 drivers/staging/comedi/comedi_fops.c:190
     comedi_free_board_dev drivers/staging/comedi/comedi_fops.c:189 [inline]
     comedi_release_hardware_device+0x111/0x140 drivers/staging/comedi/comedi_fops.c:2880
     comedi_auto_config.cold+0x124/0x1b0 drivers/staging/comedi/drivers.c:1068
     usb_probe_interface+0x31d/0x820 drivers/usb/core/driver.c:361
     really_probe+0x2da/0xb10 drivers/base/dd.c:509
     driver_probe_device+0x21d/0x350 drivers/base/dd.c:671
     __device_attach_driver+0x1d8/0x290 drivers/base/dd.c:778
     bus_for_each_drv+0x163/0x1e0 drivers/base/bus.c:454
     __device_attach+0x223/0x3a0 drivers/base/dd.c:844
     bus_probe_device+0x1f1/0x2a0 drivers/base/bus.c:514
     device_add+0xad2/0x16e0 drivers/base/core.c:2106
     usb_set_configuration+0xdf7/0x1740 drivers/usb/core/message.c:2021
     generic_probe+0xa2/0xda drivers/usb/core/generic.c:210
     usb_probe_device+0xc0/0x150 drivers/usb/core/driver.c:266
     really_probe+0x2da/0xb10 drivers/base/dd.c:509
     driver_probe_device+0x21d/0x350 drivers/base/dd.c:671
     __device_attach_driver+0x1d8/0x290 drivers/base/dd.c:778
     bus_for_each_drv+0x163/0x1e0 drivers/base/bus.c:454
     __device_attach+0x223/0x3a0 drivers/base/dd.c:844
     bus_probe_device+0x1f1/0x2a0 drivers/base/bus.c:514
     device_add+0xad2/0x16e0 drivers/base/core.c:2106
     usb_new_device.cold+0x537/0xccf drivers/usb/core/hub.c:2534
     hub_port_connect drivers/usb/core/hub.c:5089 [inline]
     hub_port_connect_change drivers/usb/core/hub.c:5204 [inline]
     port_event drivers/usb/core/hub.c:5350 [inline]
     hub_event+0x138e/0x3b00 drivers/usb/core/hub.c:5432
     process_one_work+0x90f/0x1580 kernel/workqueue.c:2269
     worker_thread+0x9b/0xe20 kernel/workqueue.c:2415
     kthread+0x313/0x420 kernel/kthread.c:253
     ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:352
    
    Reported-by: syzbot+54c2f58f15fe6876b6ad@syzkaller.appspotmail.com
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d38f661e8c816bf170304e74231ae416631f2d8d
Author: he, bo <bo.he@intel.com>
Date:   Wed Mar 6 10:32:20 2019 +0800

    io: accel: kxcjk1013: restore the range after resume.
    
    commit fe2d3df639a7940a125a33d6460529b9689c5406 upstream.
    
    On some laptops, kxcjk1013 is powered off when system enters S3. We need
    restore the range regiter during resume. Otherwise, the sensor doesn't
    work properly after S3.
    
    Signed-off-by: he, bo <bo.he@intel.com>
    Signed-off-by: Chen, Hu <hu1.chen@intel.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b36557f8fa5ae8dedf43d8b390af38ebdb7b96b2
Author: Georg Ottinger <g.ottinger@abatec.at>
Date:   Wed Jan 30 14:42:02 2019 +0100

    iio: adc: at91: disable adc channel interrupt in timeout case
    
    commit 09c6bdee51183a575bf7546890c8c137a75a2b44 upstream.
    
    Having a brief look at at91_adc_read_raw() it is obvious that in the case
    of a timeout the setting of AT91_ADC_CHDR and AT91_ADC_IDR registers is
    omitted. If 2 different channels are queried we can end up with a
    situation where two interrupts are enabled, but only one interrupt is
    cleared in the interrupt handler. Resulting in a interrupt loop and a
    system hang.
    
    Signed-off-by: Georg Ottinger <g.ottinger@abatec.at>
    Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d34d43b07c55d3f5b2ca83826393a98ffda78b1
Author: Dragos Bogdan <dragos.bogdan@analog.com>
Date:   Tue Mar 19 12:47:00 2019 +0200

    iio: ad_sigma_delta: select channel when reading register
    
    commit fccfb9ce70ed4ea7a145f77b86de62e38178517f upstream.
    
    The desired channel has to be selected in order to correctly fill the
    buffer with the corresponding data.
    The `ad_sd_write_reg()` already does this, but for the
    `ad_sd_read_reg_raw()` this was omitted.
    
    Fixes: af3008485ea03 ("iio:adc: Add common code for ADI Sigma Delta devices")
    Signed-off-by: Dragos Bogdan <dragos.bogdan@analog.com>
    Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db0609c9a59ef8e256ab4e50a59aea12823fa286
Author: Mike Looijmans <mike.looijmans@topic.nl>
Date:   Wed Feb 13 08:41:47 2019 +0100

    iio/gyro/bmg160: Use millidegrees for temperature scale
    
    commit 40a7198a4a01037003c7ca714f0d048a61e729ac upstream.
    
    Standard unit for temperature is millidegrees Celcius, whereas this driver
    was reporting in degrees. Fix the scale factor in the driver.
    
    Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d93322278d48056c011ea5cd021068ae7c7efbe3
Author: Mircea Caprioru <mircea.caprioru@analog.com>
Date:   Wed Feb 20 13:08:20 2019 +0200

    staging: iio: ad7192: Fix ad7193 channel address
    
    commit 7ce0f216221856a17fc4934b39284678a5fef2e9 upstream.
    
    This patch fixes the differential channels addresses for the ad7193.
    
    Signed-off-by: Mircea Caprioru <mircea.caprioru@analog.com>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c5243f24e41d2ade871d9019be989898d2eb984
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Tue Apr 2 08:10:47 2019 -0700

    KVM: x86: Don't clear EFER during SMM transitions for 32-bit vCPU
    
    commit 8f4dc2e77cdfaf7e644ef29693fa229db29ee1de upstream.
    
    Neither AMD nor Intel CPUs have an EFER field in the legacy SMRAM save
    state area, i.e. don't save/restore EFER across SMM transitions.  KVM
    somewhat models this, e.g. doesn't clear EFER on entry to SMM if the
    guest doesn't support long mode.  But during RSM, KVM unconditionally
    clears EFER so that it can get back to pure 32-bit mode in order to
    start loading CRs with their actual non-SMM values.
    
    Clear EFER only when it will be written when loading the non-SMM state
    so as to preserve bits that can theoretically be set on 32-bit vCPUs,
    e.g. KVM always emulates EFER_SCE.
    
    And because CR4.PAE is cleared only to play nice with EFER, wrap that
    code in the long mode check as well.  Note, this may result in a
    compiler warning about cr4 being consumed uninitialized.  Re-read CR4
    even though it's technically unnecessary, as doing so allows for more
    readable code and RSM emulation is not a performance critical path.
    
    Fixes: 660a5d517aaab ("KVM: x86: save/load state on SMM switch")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ee4f2d7cdcd4508cc3cbe3b2622d7177b89da12
Author: Aurelien Aptel <aaptel@suse.com>
Date:   Fri Mar 29 10:49:12 2019 +0100

    CIFS: keep FileInfo handle live during oplock break
    
    commit b98749cac4a695f084a5ff076f4510b23e353ecd upstream.
    
    In the oplock break handler, writing pending changes from pages puts
    the FileInfo handle. If the refcount reaches zero it closes the handle
    and waits for any oplock break handler to return, thus causing a deadlock.
    
    To prevent this situation:
    
    * We add a wait flag to cifsFileInfo_put() to decide whether we should
      wait for running/pending oplock break handlers
    
    * We keep an additionnal reference of the SMB FileInfo handle so that
      for the rest of the handler putting the handle won't close it.
      - The ref is bumped everytime we queue the handler via the
        cifs_queue_oplock_break() helper.
      - The ref is decremented at the end of the handler
    
    This bug was triggered by xfstest 464.
    
    Also important fix to address the various reports of
    oops in smb2_push_mandatory_locks
    
    Signed-off-by: Aurelien Aptel <aaptel@suse.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0bde343e2921fc3596316a01ae887d38ae98a20b
Author: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Date:   Tue Apr 23 15:43:35 2019 +0300

    tpm/tpm_i2c_atmel: Return -E2BIG when the transfer is incomplete
    
    commit 442601e87a4769a8daba4976ec3afa5222ca211d upstream
    
    Return -E2BIG when the transfer is incomplete. The upper layer does
    not retry, so not doing that is incorrect behaviour.
    
    Cc: stable@vger.kernel.org
    Fixes: a2871c62e186 ("tpm: Add support for Atmel I2C TPMs")
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
    Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2cf247d6b2da21c44cd4ae6be999cbb75cdf97ca
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Thu Nov 22 13:28:42 2018 +0900

    modpost: file2alias: check prototype of handler
    
    commit f880eea68fe593342fa6e09be9bb661f3c297aec upstream.
    
    Use specific prototype instead of an opaque pointer so that the
    compiler can catch function prototype mismatch.
    
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Reviewed-by: Mathieu Malaterre <malat@debian.org>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 897c6d2979a144cfb8b8ec6dc9e17855b3799617
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Thu Nov 22 13:28:41 2018 +0900

    modpost: file2alias: go back to simple devtable lookup
    
    commit ec91e78d378cc5d4b43805a1227d8e04e5dfa17d upstream.
    
    Commit e49ce14150c6 ("modpost: use linker section to generate table.")
    was not so cool as we had expected first; it ended up with ugly section
    hacks when commit dd2a3acaecd7 ("mod/file2alias: make modpost compile
    on darwin again") came in.
    
    Given a certain degree of unknowledge about the link stage of host
    programs, I really want to see simple, stupid table lookup so that
    this works in the same way regardless of the underlying executable
    format.
    
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Acked-by: Mathieu Malaterre <malat@debian.org>
    [nc: Omit rpmsg, sdw, tbsvc, and typec as they don't exist here]
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 110f1242df966255594d58e3aa8e2b35458f8042
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Thu Nov 15 15:53:41 2018 +0200

    mmc: sdhci: Fix data command CRC error handling
    
    [ Upstream commit 4bf780996669280171c9cd58196512849b93434e ]
    
    Existing data command CRC error handling is non-standard and does not work
    with some Intel host controllers. Specifically, the assumption that the host
    controller will continue operating normally after the error interrupt,
    is not valid. Change the driver to handle the error in the same manner
    as a data CRC error, taking care to ensure that the data line reset is
    done for single or multi-block transfers, and it is done before
    unmapping DMA.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 862b70177babb6533aaac56b86ba4b946f53ada9
Author: Christian Lamparter <chunkeey@gmail.com>
Date:   Thu Apr 19 18:41:55 2018 +0200

    crypto: crypto4xx - properly set IV after de- and encrypt
    
    [ Upstream commit fc340115ffb8235c1bbd200c28855e6373d0dd1a ]
    
    This patch fixes cts(cbc(aes)) test when cbc-aes-ppc4xx is used.
    alg: skcipher: Test 1 failed (invalid result) on encryption for cts(cbc-aes-ppc4xx)
    00000000: 4b 10 75 fc 2f 14 1b 6a 27 35 37 33 d1 b7 70 05
    00000010: 97
    alg: skcipher: Failed to load transform for cts(cbc(aes)): -2
    
    The CTS cipher mode expect the IV (req->iv) of skcipher_request
    to contain the last ciphertext block after the {en,de}crypt
    operation is complete.
    
    Fix this issue for the AMCC Crypto4xx hardware engine.
    The tcrypt test case for cts(cbc(aes)) is now correctly passed.
    
    name         : cts(cbc(aes))
    driver       : cts(cbc-aes-ppc4xx)
    module       : cts
    priority     : 300
    refcnt       : 1
    selftest     : passed
    internal     : no
    type         : skcipher
    async        : yes
    blocksize    : 16
    min keysize  : 16
    max keysize  : 32
    ivsize       : 16
    chunksize    : 16
    walksize     : 16
    
    Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aec9cfdd09278d9c9c074fa6fef17a44233dae64
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 13 17:32:21 2019 -0700

    ipv4: ensure rcu_read_lock() in ipv4_link_failure()
    
    [ Upstream commit c543cb4a5f07e09237ec0fc2c60c9f131b2c79ad ]
    
    fib_compute_spec_dst() needs to be called under rcu protection.
    
    syzbot reported :
    
    WARNING: suspicious RCU usage
    5.1.0-rc4+ #165 Not tainted
    include/linux/inetdevice.h:220 suspicious rcu_dereference_check() usage!
    
    other info that might help us debug this:
    
    rcu_scheduler_active = 2, debug_locks = 1
    1 lock held by swapper/0/0:
     #0: 0000000051b67925 ((&n->timer)){+.-.}, at: lockdep_copy_map include/linux/lockdep.h:170 [inline]
     #0: 0000000051b67925 ((&n->timer)){+.-.}, at: call_timer_fn+0xda/0x720 kernel/time/timer.c:1315
    
    stack backtrace:
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.1.0-rc4+ #165
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     <IRQ>
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x172/0x1f0 lib/dump_stack.c:113
     lockdep_rcu_suspicious+0x153/0x15d kernel/locking/lockdep.c:5162
     __in_dev_get_rcu include/linux/inetdevice.h:220 [inline]
     fib_compute_spec_dst+0xbbd/0x1030 net/ipv4/fib_frontend.c:294
     spec_dst_fill net/ipv4/ip_options.c:245 [inline]
     __ip_options_compile+0x15a7/0x1a10 net/ipv4/ip_options.c:343
     ipv4_link_failure+0x172/0x400 net/ipv4/route.c:1195
     dst_link_failure include/net/dst.h:427 [inline]
     arp_error_report+0xd1/0x1c0 net/ipv4/arp.c:297
     neigh_invalidate+0x24b/0x570 net/core/neighbour.c:995
     neigh_timer_handler+0xc35/0xf30 net/core/neighbour.c:1081
     call_timer_fn+0x190/0x720 kernel/time/timer.c:1325
     expire_timers kernel/time/timer.c:1362 [inline]
     __run_timers kernel/time/timer.c:1681 [inline]
     __run_timers kernel/time/timer.c:1649 [inline]
     run_timer_softirq+0x652/0x1700 kernel/time/timer.c:1694
     __do_softirq+0x266/0x95a kernel/softirq.c:293
     invoke_softirq kernel/softirq.c:374 [inline]
     irq_exit+0x180/0x1d0 kernel/softirq.c:414
     exiting_irq arch/x86/include/asm/apic.h:536 [inline]
     smp_apic_timer_interrupt+0x14a/0x570 arch/x86/kernel/apic/apic.c:1062
     apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:807
    
    Fixes: ed0de45a1008 ("ipv4: recompile ip options in ipv4_link_failure")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Stephen Suryaputra <ssuryaextr@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff71f99d5fb2daf54340e8b290d0bc4e6b4c1d38
Author: Stephen Suryaputra <ssuryaextr@gmail.com>
Date:   Fri Apr 12 16:19:27 2019 -0400

    ipv4: recompile ip options in ipv4_link_failure
    
    [ Upstream commit ed0de45a1008991fdaa27a0152befcb74d126a8b ]
    
    Recompile IP options since IPCB may not be valid anymore when
    ipv4_link_failure is called from arp_error_report.
    
    Refer to the commit 3da1ed7ac398 ("net: avoid use IPCB in cipso_v4_error")
    and the commit before that (9ef6b42ad6fd) for a similar issue.
    
    Signed-off-by: Stephen Suryaputra <ssuryaextr@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c5bbedac8a3315aaa1951df8cf85da7527b55313
Author: Jason Wang <jasowang@redhat.com>
Date:   Tue Apr 9 12:10:25 2019 +0800

    vhost: reject zero size iova range
    
    [ Upstream commit 813dbeb656d6c90266f251d8bd2b02d445afa63f ]
    
    We used to accept zero size iova range which will lead a infinite loop
    in translate_desc(). Fixing this by failing the request in this case.
    
    Reported-by: syzbot+d21e6e297322a900c128@syzkaller.appspotmail.com
    Fixes: 6b1e6cc7 ("vhost: new device IOTLB API")
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Acked-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>

commit 8530cf625d2139dea4598048157faa80952fa7e2
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Mon Apr 8 16:45:17 2019 +0800

    team: set slave to promisc if team is already in promisc mode
    
    [ Upstream commit 43c2adb9df7ddd6560fd3546d925b42cef92daa0 ]
    
    After adding a team interface to bridge, the team interface will enter
    promisc mode. Then if we add a new slave to team0, the slave will keep
    promisc off. Fix it by setting slave to promisc on if team master is
    already in promisc mode, also do the same for allmulti.
    
    v2: add promisc and allmulti checking when delete ports
    
    Fixes: 3d249d4ca7d0 ("net: introduce ethernet teaming device")
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 80eae5e569da8b2a6e474e87a9a8b08e64700749
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Apr 16 10:55:20 2019 -0700

    tcp: tcp_grow_window() needs to respect tcp_space()
    
    [ Upstream commit 50ce163a72d817a99e8974222dcf2886d5deb1ae ]
    
    For some reason, tcp_grow_window() correctly tests if enough room
    is present before attempting to increase tp->rcv_ssthresh,
    but does not prevent it to grow past tcp_space()
    
    This is causing hard to debug issues, like failing
    the (__tcp_select_window(sk) >= tp->rcv_wnd) test
    in __tcp_ack_snd_check(), causing ACK delays and possibly
    slow flows.
    
    Depending on tcp_rmem[2], MTU, skb->len/skb->truesize ratio,
    we can see the problem happening on "netperf -t TCP_RR -- -r 2000,2000"
    after about 60 round trips, when the active side no longer sends
    immediate acks.
    
    This bug predates git history.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Acked-by: Wei Wang <weiwan@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d55ff2f0b34ce8b8cb165bc68e054f51b2740ee5
Author: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Date:   Tue Apr 9 11:47:20 2019 +0200

    net: fou: do not use guehdr after iptunnel_pull_offloads in gue_udp_recv
    
    [ Upstream commit 988dc4a9a3b66be75b30405a5494faf0dc7cffb6 ]
    
    gue tunnels run iptunnel_pull_offloads on received skbs. This can
    determine a possible use-after-free accessing guehdr pointer since
    the packet will be 'uncloned' running pskb_expand_head if it is a
    cloned gso skb (e.g if the packet has been sent though a veth device)
    
    Fixes: a09a4c8dd1ec ("tunnels: Remove encapsulation offloads on decap")
    Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7953e6a921ddcba5e3cb0c953e8eb07d9dbdfe2d
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Thu Apr 11 15:08:25 2019 +0300

    net: bridge: multicast: use rcu to access port list from br_multicast_start_querier
    
    [ Upstream commit c5b493ce192bd7a4e7bd073b5685aad121eeef82 ]
    
    br_multicast_start_querier() walks over the port list but it can be
    called from a timer with only multicast_lock held which doesn't protect
    the port list, so use RCU to walk over it.
    
    Fixes: c83b8fab06fc ("bridge: Restart queries when last querier expires")
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 809d689e650f8e386e53fef8bdb4c016405b78ff
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Thu Apr 11 13:56:39 2019 +0300

    net: bridge: fix per-port af_packet sockets
    
    [ Upstream commit 3b2e2904deb314cc77a2192f506f2fd44e3d10d0 ]
    
    When the commit below was introduced it changed two visible things:
     - the skb was no longer passed through the protocol handlers with the
       original device
     - the skb was passed up the stack with skb->dev = bridge
    
    The first change broke af_packet sockets on bridge ports. For example we
    use them for hostapd which listens for ETH_P_PAE packets on the ports.
    We discussed two possible fixes:
     - create a clone and pass it through NF_HOOK(), act on the original skb
       based on the result
     - somehow signal to the caller from the okfn() that it was called,
       meaning the skb is ok to be passed, which this patch is trying to
       implement via returning 1 from the bridge link-local okfn()
    
    Note that we rely on the fact that NF_QUEUE/STOLEN would return 0 and
    drop/error would return < 0 thus the okfn() is called only when the
    return was 1, so we signal to the caller that it was called by preserving
    the return value from nf_hook().
    
    Fixes: 8626c56c8279 ("bridge: fix potential use-after-free when hook returns QUEUE or STOLEN verdict")
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79bce00dfdf34eddc17f5ac73d92defdfe62106c
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Mon Apr 15 15:57:23 2019 -0500

    net: atm: Fix potential Spectre v1 vulnerabilities
    
    [ Upstream commit 899537b73557aafbdd11050b501cf54b4f5c45af ]
    
    arg is controlled by user-space, hence leading to a potential
    exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    
    net/atm/lec.c:715 lec_mcast_attach() warn: potential spectre issue 'dev_lec' [r] (local cap)
    
    Fix this by sanitizing arg before using it to index dev_lec.
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://lore.kernel.org/lkml/20180423164740.GY17484@dhcp22.suse.cz/
    
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 489b99b95efd9d74a5a1650ac96c2f7fcf8833f5
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Fri Apr 12 15:04:10 2019 +0200

    bonding: fix event handling for stacked bonds
    
    [ Upstream commit 92480b3977fd3884649d404cbbaf839b70035699 ]
    
    When a bond is enslaved to another bond, bond_netdev_event() only
    handles the event as if the bond is a master, and skips treating the
    bond as a slave.
    
    This leads to a refcount leak on the slave, since we don't remove the
    adjacency to its master and the master holds a reference on the slave.
    
    Reproducer:
      ip link add bondL type bond
      ip link add bondU type bond
      ip link set bondL master bondU
      ip link del bondL
    
    No "Fixes:" tag, this code is older than git history.
    
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>