commit b23de3254f8cd4166511dfd28a051358a80aa2fa
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Mon Dec 17 09:24:42 2018 +0100

    Linux 4.19.10

commit d265655ae46b3543aef8d5ad2ddd86db22a6f7e4
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Dec 6 09:58:24 2018 -0800

    tcp: lack of available data can also cause TSO defer
    
    commit f9bfe4e6a9d08d405fe7b081ee9a13e649c97ecf upstream.
    
    tcp_tso_should_defer() can return true in three different cases :
    
     1) We are cwnd-limited
     2) We are rwnd-limited
     3) We are application limited.
    
    Neal pointed out that my recent fix went too far, since
    it assumed that if we were not in 1) case, we must be rwnd-limited
    
    Fix this by properly populating the is_cwnd_limited and
    is_rwnd_limited booleans.
    
    After this change, we can finally move the silly check for FIN
    flag only for the application-limited case.
    
    The same move for EOR bit will be handled in net-next,
    since commit 1c09f7d073b1 ("tcp: do not try to defer skbs
    with eor mark (MSG_EOR)") is scheduled for linux-4.21
    
    Tested by running 200 concurrent netperf -t TCP_RR -- -r 60000,100
    and checking none of them was rwnd_limited in the chrono_stat
    output from "ss -ti" command.
    
    Fixes: 41727549de3e ("tcp: Do not underestimate rwnd_limited")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Suggested-by: Neal Cardwell <ncardwell@google.com>
    Reviewed-by: Neal Cardwell <ncardwell@google.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Reviewed-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bddeb44981c1f5dd699ff45cce6ce31e59c0300c
Author: Edward Cree <ecree@solarflare.com>
Date:   Fri Nov 16 12:00:07 2018 +0000

    bpf: fix off-by-one error in adjust_subprog_starts
    
    commit afd594240806acc138cf696c09f2f4829d55d02f upstream.
    
    When patching in a new sequence for the first insn of a subprog, the start
     of that subprog does not change (it's the first insn of the sequence), so
     adjust_subprog_starts should check start <= off (rather than < off).
    Also added a test to test_verifier.c (it's essentially the syz reproducer).
    
    Fixes: cc8b0b92a169 ("bpf: introduce function calls (function boundaries)")
    Reported-by: syzbot+4fc427c7af994b0948be@syzkaller.appspotmail.com
    Signed-off-by: Edward Cree <ecree@solarflare.com>
    Acked-by: Yonghong Song <yhs@fb.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1fd99ac175e63102876c6ae135c06c72575c5d24
Author: Piotr Stankiewicz <piotr.stankiewicz@intel.com>
Date:   Wed Nov 28 06:44:46 2018 -0800

    IB/hfi1: Fix an out-of-bounds access in get_hw_stats
    
    commit 36d842194a57f1b21fbc6a6875f2fa2f9a7f8679 upstream.
    
    When running with KASAN, the following trace is produced:
    
    [   62.535888]
    
    ==================================================================
    [   62.544930] BUG: KASAN: slab-out-of-bounds in
    gut_hw_stats+0x122/0x230 [hfi1]
    [   62.553856] Write of size 8 at addr ffff88080e8d6330 by task
    kworker/0:1/14
    
    [   62.565333] CPU: 0 PID: 14 Comm: kworker/0:1 Not tainted
    4.19.0-test-build-kasan+ #8
    [   62.575087] Hardware name: Intel Corporation S2600KPR/S2600KPR, BIOS
    SE5C610.86B.01.01.0019.101220160604 10/12/2016
    [   62.587951] Workqueue: events work_for_cpu_fn
    [   62.594050] Call Trace:
    [   62.598023]  dump_stack+0xc6/0x14c
    [   62.603089]  ? dump_stack_print_info.cold.1+0x2f/0x2f
    [   62.610041]  ? kmsg_dump_rewind_nolock+0x59/0x59
    [   62.616615]  ? get_hw_stats+0x122/0x230 [hfi1]
    [   62.622985]  print_address_description+0x6c/0x23c
    [   62.629744]  ? get_hw_stats+0x122/0x230 [hfi1]
    [   62.636108]  kasan_report.cold.6+0x241/0x308
    [   62.642365]  get_hw_stats+0x122/0x230 [hfi1]
    [   62.648703]  ? hfi1_alloc_rn+0x40/0x40 [hfi1]
    [   62.655088]  ? __kmalloc+0x110/0x240
    [   62.660695]  ? hfi1_alloc_rn+0x40/0x40 [hfi1]
    [   62.667142]  setup_hw_stats+0xd8/0x430 [ib_core]
    [   62.673972]  ? show_hfi+0x50/0x50 [hfi1]
    [   62.680026]  ib_device_register_sysfs+0x165/0x180 [ib_core]
    [   62.687995]  ib_register_device+0x5a2/0xa10 [ib_core]
    [   62.695340]  ? show_hfi+0x50/0x50 [hfi1]
    [   62.701421]  ? ib_unregister_device+0x2e0/0x2e0 [ib_core]
    [   62.709222]  ? __vmalloc_node_range+0x2d0/0x380
    [   62.716131]  ? rvt_driver_mr_init+0x11f/0x2d0 [rdmavt]
    [   62.723735]  ? vmalloc_node+0x5c/0x70
    [   62.729697]  ? rvt_driver_mr_init+0x11f/0x2d0 [rdmavt]
    [   62.737347]  ? rvt_driver_mr_init+0x1f5/0x2d0 [rdmavt]
    [   62.744998]  ? __rvt_alloc_mr+0x110/0x110 [rdmavt]
    [   62.752315]  ? rvt_rc_error+0x140/0x140 [rdmavt]
    [   62.759434]  ? rvt_vma_open+0x30/0x30 [rdmavt]
    [   62.766364]  ? mutex_unlock+0x1d/0x40
    [   62.772445]  ? kmem_cache_create_usercopy+0x15d/0x230
    [   62.780115]  rvt_register_device+0x1f6/0x360 [rdmavt]
    [   62.787823]  ? rvt_get_port_immutable+0x180/0x180 [rdmavt]
    [   62.796058]  ? __get_txreq+0x400/0x400 [hfi1]
    [   62.802969]  ? memcpy+0x34/0x50
    [   62.808611]  hfi1_register_ib_device+0xde6/0xeb0 [hfi1]
    [   62.816601]  ? hfi1_get_npkeys+0x10/0x10 [hfi1]
    [   62.823760]  ? hfi1_init+0x89f/0x9a0 [hfi1]
    [   62.830469]  ? hfi1_setup_eagerbufs+0xad0/0xad0 [hfi1]
    [   62.838204]  ? pcie_capability_clear_and_set_word+0xcd/0xe0
    [   62.846429]  ? pcie_capability_read_word+0xd0/0xd0
    [   62.853791]  ? hfi1_pcie_init+0x187/0x4b0 [hfi1]
    [   62.860958]  init_one+0x67f/0xae0 [hfi1]
    [   62.867301]  ? hfi1_init+0x9a0/0x9a0 [hfi1]
    [   62.873876]  ? wait_woken+0x130/0x130
    [   62.879860]  ? read_word_at_a_time+0xe/0x20
    [   62.886329]  ? strscpy+0x14b/0x280
    [   62.891998]  ? hfi1_init+0x9a0/0x9a0 [hfi1]
    [   62.898405]  local_pci_probe+0x70/0xd0
    [   62.904295]  ? pci_device_shutdown+0x90/0x90
    [   62.910833]  work_for_cpu_fn+0x29/0x40
    [   62.916750]  process_one_work+0x584/0x960
    [   62.922974]  ? rcu_work_rcufn+0x40/0x40
    [   62.928991]  ? __schedule+0x396/0xdc0
    [   62.934806]  ? __sched_text_start+0x8/0x8
    [   62.941020]  ? pick_next_task_fair+0x68b/0xc60
    [   62.947674]  ? run_rebalance_domains+0x260/0x260
    [   62.954471]  ? __list_add_valid+0x29/0xa0
    [   62.960607]  ? move_linked_works+0x1c7/0x230
    [   62.967077]  ?
    trace_event_raw_event_workqueue_execute_start+0x140/0x140
    [   62.976248]  ? mutex_lock+0xa6/0x100
    [   62.982029]  ? __mutex_lock_slowpath+0x10/0x10
    [   62.988795]  ? __switch_to+0x37a/0x710
    [   62.994731]  worker_thread+0x62e/0x9d0
    [   63.000602]  ? max_active_store+0xf0/0xf0
    [   63.006828]  ? __switch_to_asm+0x40/0x70
    [   63.012932]  ? __switch_to_asm+0x34/0x70
    [   63.019013]  ? __switch_to_asm+0x40/0x70
    [   63.025042]  ? __switch_to_asm+0x34/0x70
    [   63.031030]  ? __switch_to_asm+0x40/0x70
    [   63.037006]  ? __schedule+0x396/0xdc0
    [   63.042660]  ? kmem_cache_alloc_trace+0xf3/0x1f0
    [   63.049323]  ? kthread+0x59/0x1d0
    [   63.054594]  ? ret_from_fork+0x35/0x40
    [   63.060257]  ? __sched_text_start+0x8/0x8
    [   63.066212]  ? schedule+0xcf/0x250
    [   63.071529]  ? __wake_up_common+0x110/0x350
    [   63.077794]  ? __schedule+0xdc0/0xdc0
    [   63.083348]  ? wait_woken+0x130/0x130
    [   63.088963]  ? finish_task_switch+0x1f1/0x520
    [   63.095258]  ? kasan_unpoison_shadow+0x30/0x40
    [   63.101792]  ? __init_waitqueue_head+0xa0/0xd0
    [   63.108183]  ? replenish_dl_entity.cold.60+0x18/0x18
    [   63.115151]  ? _raw_spin_lock_irqsave+0x25/0x50
    [   63.121754]  ? max_active_store+0xf0/0xf0
    [   63.127753]  kthread+0x1ae/0x1d0
    [   63.132894]  ? kthread_bind+0x30/0x30
    [   63.138422]  ret_from_fork+0x35/0x40
    
    [   63.146973] Allocated by task 14:
    [   63.152077]  kasan_kmalloc+0xbf/0xe0
    [   63.157471]  __kmalloc+0x110/0x240
    [   63.162804]  init_cntrs+0x34d/0xdf0 [hfi1]
    [   63.168883]  hfi1_init_dd+0x29a3/0x2f90 [hfi1]
    [   63.175244]  init_one+0x551/0xae0 [hfi1]
    [   63.181065]  local_pci_probe+0x70/0xd0
    [   63.186759]  work_for_cpu_fn+0x29/0x40
    [   63.192310]  process_one_work+0x584/0x960
    [   63.198163]  worker_thread+0x62e/0x9d0
    [   63.203843]  kthread+0x1ae/0x1d0
    [   63.208874]  ret_from_fork+0x35/0x40
    
    [   63.217203] Freed by task 1:
    [   63.221844]  __kasan_slab_free+0x12e/0x180
    [   63.227844]  kfree+0x92/0x1a0
    [   63.232570]  single_release+0x3a/0x60
    [   63.238024]  __fput+0x1d9/0x480
    [   63.242911]  task_work_run+0x139/0x190
    [   63.248440]  exit_to_usermode_loop+0x191/0x1a0
    [   63.254814]  do_syscall_64+0x301/0x330
    [   63.260283]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    [   63.270199] The buggy address belongs to the object at
    ffff88080e8d5500
     which belongs to the cache kmalloc-4096 of size 4096
    [   63.287247] The buggy address is located 3632 bytes inside of
     4096-byte region [ffff88080e8d5500, ffff88080e8d6500)
    [   63.303564] The buggy address belongs to the page:
    [   63.310447] page:ffffea00203a3400 count:1 mapcount:0
    mapping:ffff88081380e840 index:0x0 compound_mapcount: 0
    [   63.323102] flags: 0x2fffff80008100(slab|head)
    [   63.329775] raw: 002fffff80008100 0000000000000000 0000000100000001
    ffff88081380e840
    [   63.340175] raw: 0000000000000000 0000000000070007 00000001ffffffff
    0000000000000000
    [   63.350564] page dumped because: kasan: bad access detected
    
    [   63.361974] Memory state around the buggy address:
    [   63.369137]  ffff88080e8d6200: 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00
    [   63.379082]  ffff88080e8d6280: 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00
    [   63.389032] >ffff88080e8d6300: 00 00 00 00 00 00 fc fc fc fc fc fc fc
    fc fc fc
    [   63.398944]                                      ^
    [   63.406141]  ffff88080e8d6380: fc fc fc fc fc fc fc fc fc fc fc fc fc
    fc fc fc
    [   63.416109]  ffff88080e8d6400: fc fc fc fc fc fc fc fc fc fc fc fc fc
    fc fc fc
    [   63.426099]
    ==================================================================
    
    The trace happens because get_hw_stats() assumes there is room in the
    memory allocated in init_cntrs() to accommodate the driver counters.
    Unfortunately, that routine only allocated space for the device
    counters.
    
    Fix by insuring the allocation has room for the additional driver
    counters.
    
    Cc: <Stable@vger.kernel.org> # v4.14+
    Fixes: b7481944b06e9 ("IB/hfi1: Show statistics counters under IB stats interface")
    Reviewed-by: Mike Marciniczyn <mike.marciniszyn@intel.com>
    Reviewed-by: Mike Ruhl <michael.j.ruhl@intel.com>
    Signed-off-by: Piotr Stankiewicz <piotr.stankiewicz@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a493d8ef5b9f7568acdf26cd7fdf9cf70d69ee7
Author: Hui Wang <hui.wang@canonical.com>
Date:   Sun Dec 9 09:16:43 2018 +0800

    ALSA: hda/realtek - Fix the mute LED regresion on Lenovo X1 Carbon
    
    commit 6ba189c5c1a4bda70dc1e4826c58b0246068bb8d upstream.
    
    Users reported a mute LED regression on Lenovo X1 Carbon, the root
    cause is we applied the fixup of ALC285_FIXUP_LENOVO_HEADPHONE_NOISE
    to this machine, then the machine can't apply the fixup of
    ALC269_FIXUP_THINKPAD_ACPI anymore. To fix it, we chain two fixup
    together.
    
    Fixes: c4cfcf6f4297 ("ALSA: hda/realtek - fix the pop noise on headphone for lenovo laptops")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 178b1a584e7f865c96ed8262064c0812356930d1
Author: Jian-Hong Pan <jian-hong@endlessm.com>
Date:   Fri Dec 7 17:17:13 2018 +0800

    ALSA: hda/realtek: Enable audio jacks of ASUS UX433FN/UX333FA with ALC294
    
    commit 0bea4cc8383519f78f3f74caca7bdebdfb346d3b upstream.
    
    The ASUS UX433FN and UX333FA with ALC294 cannot detect the headset MIC
    and output through the internal speaker and the headphone until
    ALC294_FIXUP_ASUS_SPK and ALC294_FIXUP_ASUS_HEADSET_MIC quirk applied.
    
    Signed-off-by: Daniel Drake <drake@endlessm.com>
    Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1be8246777c5af4b6f6c159dbd33fa7420cf5073
Author: Jian-Hong Pan <jian-hong@endlessm.com>
Date:   Fri Dec 7 17:17:12 2018 +0800

    ALSA: hda/realtek: Enable audio jacks of ASUS UX533FD with ALC294
    
    commit 4e051106730dfc640a8b49db88440af304726f4d upstream.
    
    The ASUS UX533FD with ALC294 cannot detect the headset MIC and outputs
    through the internal speaker and the headphone until
    ALC294_FIXUP_ASUS_SPK and ALC294_FIXUP_ASUS_HEADSET_MIC quirk applied.
    
    Signed-off-by: Daniel Drake <drake@endlessm.com>
    Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 487b6512d88194554cdc20eae0ce933f77d7939d
Author: Chris Chiu <chiu@endlessm.com>
Date:   Fri Dec 7 17:17:11 2018 +0800

    ALSA: hda/realtek: ALC294 mic and headset-mode fixups for ASUS X542UN
    
    commit d8ae458eeca9ed686e09a1b894867cb91fc4c1cb upstream.
    
    The known ALC256_FIXUP_ASUS_MIC fixup can fix the headphone jack
    sensing and enable use of the internal microphone on this laptop
    X542UN. However, it's ALC294 so create a new fixup named
    ALC294_FIXUP_ASUS_MIC to avoid confusion.
    
    Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com>
    Signed-off-by: Daniel Drake <drake@endlessm.com>
    Signed-off-by: Chris Chiu <chiu@endlessm.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8461d87716bfe300a6937e173dba1b0a300730f
Author: Kailang Yang <kailang@realtek.com>
Date:   Fri Dec 7 15:14:59 2018 +0800

    ALSA: hda/realtek - Fixed headphone issue for ALC700
    
    commit bde1a7459623a66c2abec4d0a841e4b06cc88d9a upstream.
    
    If it plugged headphone or headset into the jack, then
    do the reboot, it will have a chance to cause headphone no sound.
    It just need to run the headphone mode procedure after boot time.
    The issue will be fixed.
    It also suitable for ALC234 ALC274 and ALC294.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03e8b38c517753473fa23bf45f7ace3d27e320e8
Author: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Date:   Sun Dec 9 17:04:19 2018 +0900

    ALSA: fireface: fix reference to wrong register for clock configuration
    
    commit fa9c98e4b975bb3192ed6af09d9fa282ed3cd8a0 upstream.
    
    In an initial commit, 'SYNC_STATUS' register is referred to get
    clock configuration, however this is wrong, according to my local
    note at hand for reverse-engineering about packet dump. It should
    be 'CLOCK_CONFIG' register. Actually, ff400_dump_clock_config()
    is correctly programmed.
    
    This commit fixes the bug.
    
    Cc: <stable@vger.kernel.org> # v4.12+
    Fixes: 76fdb3a9e13a ('ALSA: fireface: add support for Fireface 400')
    Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 384f18115267c0e52748137d6720c81b1cf220e1
Author: Matthew Wilcox <willy@infradead.org>
Date:   Tue Nov 27 13:16:33 2018 -0800

    dax: Check page->mapping isn't NULL
    
    commit c93db7bb6ef3251e0ea48ade311d3e9942748e1c upstream.
    
    If we race with inode destroy, it's possible for page->mapping to be
    NULL before we even enter this routine, as well as after having slept
    waiting for the dax entry to become unlocked.
    
    Fixes: c2a7d2a11552 ("filesystem-dax: Introduce dax_lock_mapping_entry()")
    Cc: <stable@vger.kernel.org>
    Reported-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Matthew Wilcox <willy@infradead.org>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 111758f73595528e4f9f51b54cca27470d130e08
Author: Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>
Date:   Mon Nov 26 18:35:14 2018 +0100

    flexfiles: enforce per-mirror stateid only for v4 DSes
    
    commit 320f35b7bf8cccf1997ca3126843535e1b95e9c4 upstream.
    
    Since commit bb21ce0ad227 we always enforce per-mirror stateid.
    However, this makes sense only for v4+ servers.
    
    Signed-off-by: Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a31da26a15e9656931fea29c28dcf9fa10db3f46
Author: Pan Bian <bianpan2016@163.com>
Date:   Fri Nov 30 14:10:54 2018 -0800

    ocfs2: fix potential use after free
    
    [ Upstream commit 164f7e586739d07eb56af6f6d66acebb11f315c8 ]
    
    ocfs2_get_dentry() calls iput(inode) to drop the reference count of
    inode, and if the reference count hits 0, inode is freed.  However, in
    this function, it then reads inode->i_generation, which may result in a
    use after free bug.  Move the put operation later.
    
    Link: http://lkml.kernel.org/r/1543109237-110227-1-git-send-email-bianpan2016@163.com
    Fixes: 781f200cb7a("ocfs2: Remove masklog ML_EXPORT.")
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Joseph Qi <jiangqi903@gmail.com>
    Cc: Changwei Ge <ge.changwei@h3c.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2a5d5f5f47b92a08e869471431f29b2b0090455e
Author: Li Zhijian <lizhijian@cn.fujitsu.com>
Date:   Fri Nov 30 14:10:09 2018 -0800

    initramfs: clean old path before creating a hardlink
    
    [ Upstream commit 7c0950d455d6ab610d2990a13120f935b75abf2c ]
    
    sys_link() can fail due to the new path already existing.  This case
    ofen occurs when we use a concated initrd, for example:
    
    1) prepare a basic rootfs, it contains a regular files rc.local
    lizhijian@:~/yocto-tiny-i386-2016-04-22$ cat etc/rc.local
     #!/bin/sh
     echo "Running /etc/rc.local..."
    yocto-tiny-i386-2016-04-22$ find . | sed 's,^\./,,' | cpio -o -H newc | gzip -n -9 >../rootfs.cgz
    
    2) create a extra initrd which also includes a etc/rc.local
    lizhijian@:~/lkp-x86_64/etc$ echo "append initrd" >rc.local
    lizhijian@:~/lkp/lkp-x86_64/etc$ cat rc.local
    append initrd
    lizhijian@:~/lkp/lkp-x86_64/etc$ ln rc.local rc.local.hardlink
    append initrd
    lizhijian@:~/lkp/lkp-x86_64/etc$ stat rc.local rc.local.hardlink
      File: 'rc.local'
      Size: 14              Blocks: 8          IO Block: 4096   regular file
    Device: 801h/2049d      Inode: 11296086    Links: 2
    Access: (0664/-rw-rw-r--)  Uid: ( 1002/lizhijian)   Gid: ( 1002/lizhijian)
    Access: 2018-11-15 16:08:28.654464815 +0800
    Modify: 2018-11-15 16:07:57.514903210 +0800
    Change: 2018-11-15 16:08:24.180228872 +0800
     Birth: -
      File: 'rc.local.hardlink'
      Size: 14              Blocks: 8          IO Block: 4096   regular file
    Device: 801h/2049d      Inode: 11296086    Links: 2
    Access: (0664/-rw-rw-r--)  Uid: ( 1002/lizhijian)   Gid: ( 1002/lizhijian)
    Access: 2018-11-15 16:08:28.654464815 +0800
    Modify: 2018-11-15 16:07:57.514903210 +0800
    Change: 2018-11-15 16:08:24.180228872 +0800
     Birth: -
    
    lizhijian@:~/lkp/lkp-x86_64$ find . | sed 's,^\./,,' | cpio -o -H newc | gzip -n -9 >../rc-local.cgz
    lizhijian@:~/lkp/lkp-x86_64$ gzip -dc ../rc-local.cgz | cpio -t
    .
    etc
    etc/rc.local.hardlink <<< it will be extracted first at this initrd
    etc/rc.local
    
    3) concate 2 initrds and boot
    lizhijian@:~/lkp$ cat rootfs.cgz rc-local.cgz >concate-initrd.cgz
    lizhijian@:~/lkp$ qemu-system-x86_64 -nographic -enable-kvm -cpu host -smp 1 -m 1024 -kernel ~/lkp/linux/arch/x86/boot/bzImage -append "console=ttyS0 earlyprint=ttyS0 ignore_loglevel" -initrd ./concate-initr.cgz -serial stdio -nodefaults
    
    In this case, sys_link(2) will fail and return -EEXIST, so we can only get
    the rc.local at rootfs.cgz instead of rc-local.cgz
    
    [akpm@linux-foundation.org: move code to avoid forward declaration]
    Link: http://lkml.kernel.org/r/1542352368-13299-1-git-send-email-lizhijian@cn.fujitsu.com
    Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com>
    Cc: Philip Li <philip.li@intel.com>
    Cc: Dominik Brodowski <linux@dominikbrodowski.net>
    Cc: Li Zhijian <zhijianx.li@intel.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c6900015132a0b9a98bea5b24d675442cc105540
Author: Anders Roxell <anders.roxell@linaro.org>
Date:   Fri Nov 30 14:10:05 2018 -0800

    kernel/kcov.c: mark funcs in __sanitizer_cov_trace_pc() as notrace
    
    [ Upstream commit 903e8ff86753e6f327bb92166a0665e4ecb8e2e7 ]
    
    Since __sanitizer_cov_trace_pc() is marked as notrace, function calls in
    __sanitizer_cov_trace_pc() shouldn't be traced either.
    ftrace_graph_caller() gets called for each function that isn't marked
    'notrace', like canonicalize_ip().  This is the call trace from a run:
    
    [  139.644550]  ftrace_graph_caller+0x1c/0x24
    [  139.648352]  canonicalize_ip+0x18/0x28
    [  139.652313]  __sanitizer_cov_trace_pc+0x14/0x58
    [  139.656184]  sched_clock+0x34/0x1e8
    [  139.659759]  trace_clock_local+0x40/0x88
    [  139.663722]  ftrace_push_return_trace+0x8c/0x1f0
    [  139.667767]  prepare_ftrace_return+0xa8/0x100
    [  139.671709]  ftrace_graph_caller+0x1c/0x24
    
    Rework so that check_kcov_mode() and canonicalize_ip() that are called
    from __sanitizer_cov_trace_pc() are also marked as notrace.
    
    Link: http://lkml.kernel.org/r/20181128081239.18317-1-anders.roxell@linaro.org
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signen-off-by: Anders Roxell <anders.roxell@linaro.org>
    Co-developed-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 359c0c4aefa13a626c51d86a6891a7d90e27ef1b
Author: Alexey Dobriyan <adobriyan@gmail.com>
Date:   Fri Nov 30 14:09:53 2018 -0800

    proc: fixup map_files test on arm
    
    [ Upstream commit dbd4af54745fc0c805217693c807a3928b2d408b ]
    
    https://bugs.linaro.org/show_bug.cgi?id=3782
    
    Turns out arm doesn't permit mapping address 0, so try minimum virtual
    address instead.
    
    Link: http://lkml.kernel.org/r/20181113165446.GA28157@avx2
    Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
    Reported-by: Rafael David Tinoco <rafael.tinoco@linaro.org>
    Tested-by: Rafael David Tinoco <rafael.tinoco@linaro.org>
    Acked-by: Cyrill Gorcunov <gorcunov@gmail.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 53f1c27ac5d51cbd1ead30d69180cb5067cb62b0
Author: Qian Cai <cai@gmx.us>
Date:   Fri Nov 30 14:09:48 2018 -0800

    debugobjects: avoid recursive calls with kmemleak
    
    [ Upstream commit 8de456cf87ba863e028c4dd01bae44255ce3d835 ]
    
    CONFIG_DEBUG_OBJECTS_RCU_HEAD does not play well with kmemleak due to
    recursive calls.
    
    fill_pool
      kmemleak_ignore
        make_black_object
          put_object
            __call_rcu (kernel/rcu/tree.c)
              debug_rcu_head_queue
                debug_object_activate
                  debug_object_init
                    fill_pool
                      kmemleak_ignore
                        make_black_object
                          ...
    
    So add SLAB_NOLEAKTRACE to kmem_cache_create() to not register newly
    allocated debug objects at all.
    
    Link: http://lkml.kernel.org/r/20181126165343.2339-1-cai@gmx.us
    Signed-off-by: Qian Cai <cai@gmx.us>
    Suggested-by: Catalin Marinas <catalin.marinas@arm.com>
    Acked-by: Waiman Long <longman@redhat.com>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Yang Shi <yang.shi@linux.alibaba.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ab31765ef4dd68f4de5035a378016483688df4f2
Author: Pan Bian <bianpan2016@163.com>
Date:   Fri Nov 30 14:09:18 2018 -0800

    hfsplus: do not free node before using
    
    [ Upstream commit c7d7d620dcbd2a1c595092280ca943f2fced7bbd ]
    
    hfs_bmap_free() frees node via hfs_bnode_put(node).  However it then
    reads node->this when dumping error message on an error path, which may
    result in a use-after-free bug.  This patch frees node only when it is
    never used.
    
    Link: http://lkml.kernel.org/r/1543053441-66942-1-git-send-email-bianpan2016@163.com
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Ernesto A. Fernandez <ernesto.mnd.fernandez@gmail.com>
    Cc: Joe Perches <joe@perches.com>
    Cc: Viacheslav Dubeyko <slava@dubeyko.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f7cbec75fb0b1f893a6df490701c9099086f5480
Author: Pan Bian <bianpan2016@163.com>
Date:   Fri Nov 30 14:09:14 2018 -0800

    hfs: do not free node before using
    
    [ Upstream commit ce96a407adef126870b3f4a1b73529dd8aa80f49 ]
    
    hfs_bmap_free() frees the node via hfs_bnode_put(node).  However, it
    then reads node->this when dumping error message on an error path, which
    may result in a use-after-free bug.  This patch frees the node only when
    it is never again used.
    
    Link: http://lkml.kernel.org/r/1542963889-128825-1-git-send-email-bianpan2016@163.com
    Fixes: a1185ffa2fc ("HFS rewrite")
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Joe Perches <joe@perches.com>
    Cc: Ernesto A. Fernandez <ernesto.mnd.fernandez@gmail.com>
    Cc: Viacheslav Dubeyko <slava@dubeyko.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 505bc9f3899699114d32782c0ad494d3b15ae29a
Author: Wei Yang <richard.weiyang@gmail.com>
Date:   Fri Nov 30 14:09:07 2018 -0800

    mm/page_alloc.c: fix calculation of pgdat->nr_zones
    
    [ Upstream commit 8f416836c0d50b198cad1225132e5abebf8980dc ]
    
    init_currently_empty_zone() will adjust pgdat->nr_zones and set it to
    'zone_idx(zone) + 1' unconditionally.  This is correct in the normal
    case, while not exact in hot-plug situation.
    
    This function is used in two places:
    
      * free_area_init_core()
      * move_pfn_range_to_zone()
    
    In the first case, we are sure zone index increase monotonically.  While
    in the second one, this is under users control.
    
    One way to reproduce this is:
    ----------------------------
    
    1. create a virtual machine with empty node1
    
       -m 4G,slots=32,maxmem=32G \
       -smp 4,maxcpus=8          \
       -numa node,nodeid=0,mem=4G,cpus=0-3 \
       -numa node,nodeid=1,mem=0G,cpus=4-7
    
    2. hot-add cpu 3-7
    
       cpu-add [3-7]
    
    2. hot-add memory to nod1
    
       object_add memory-backend-ram,id=ram0,size=1G
       device_add pc-dimm,id=dimm0,memdev=ram0,node=1
    
    3. online memory with following order
    
       echo online_movable > memory47/state
       echo online > memory40/state
    
    After this, node1 will have its nr_zones equals to (ZONE_NORMAL + 1)
    instead of (ZONE_MOVABLE + 1).
    
    Michal said:
     "Having an incorrect nr_zones might result in all sorts of problems
      which would be quite hard to debug (e.g. reclaim not considering the
      movable zone). I do not expect many users would suffer from this it
      but still this is trivial and obviously right thing to do so
      backporting to the stable tree shouldn't be harmful (last famous
      words)"
    
    Link: http://lkml.kernel.org/r/20181117022022.9956-1-richard.weiyang@gmail.com
    Fixes: f1dd2cd13c4b ("mm, memory_hotplug: do not associate hotadded memory to zones until online")
    Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Reviewed-by: Oscar Salvador <osalvador@suse.de>
    Cc: Anshuman Khandual <anshuman.khandual@arm.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6aab48ae8ab5171b2b952fdd0241bad7a02daf20
Author: Larry Chen <lchen@suse.com>
Date:   Fri Nov 30 14:08:56 2018 -0800

    ocfs2: fix deadlock caused by ocfs2_defrag_extent()
    
    [ Upstream commit e21e57445a64598b29a6f629688f9b9a39e7242a ]
    
    ocfs2_defrag_extent may fall into deadlock.
    
    ocfs2_ioctl_move_extents
        ocfs2_ioctl_move_extents
          ocfs2_move_extents
            ocfs2_defrag_extent
              ocfs2_lock_allocators_move_extents
    
                ocfs2_reserve_clusters
                  inode_lock GLOBAL_BITMAP_SYSTEM_INODE
    
              __ocfs2_flush_truncate_log
                  inode_lock GLOBAL_BITMAP_SYSTEM_INODE
    
    As backtrace shows above, ocfs2_reserve_clusters() will call inode_lock
    against the global bitmap if local allocator has not sufficient cluters.
    Once global bitmap could meet the demand, ocfs2_reserve_cluster will
    return success with global bitmap locked.
    
    After ocfs2_reserve_cluster(), if truncate log is full,
    __ocfs2_flush_truncate_log() will definitely fall into deadlock because
    it needs to inode_lock global bitmap, which has already been locked.
    
    To fix this bug, we could remove from
    ocfs2_lock_allocators_move_extents() the code which intends to lock
    global allocator, and put the removed code after
    __ocfs2_flush_truncate_log().
    
    ocfs2_lock_allocators_move_extents() is referred by 2 places, one is
    here, the other does not need the data allocator context, which means
    this patch does not affect the caller so far.
    
    Link: http://lkml.kernel.org/r/20181101071422.14470-1-lchen@suse.com
    Signed-off-by: Larry Chen <lchen@suse.com>
    Reviewed-by: Changwei Ge <ge.changwei@h3c.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Joseph Qi <jiangqi903@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 126afacf7a8f1a5c7499ab905613749de1748e55
Author: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Date:   Thu Nov 29 09:55:59 2018 +0000

    ACPI/IORT: Fix iort_get_platform_device_domain() uninitialized pointer value
    
    [ Upstream commit ea2412dc21cc790335d319181dddc43682aef164 ]
    
    Running the Clang static analyzer on IORT code detected the following
    error:
    
    Logic error: Branch condition evaluates to a garbage value
    
    in
    
    iort_get_platform_device_domain()
    
    If the named component associated with a given device has no IORT
    mappings, iort_get_platform_device_domain() exits its MSI mapping loop
    with msi_parent pointer containing garbage, which can lead to erroneous
    code path execution.
    
    Initialize the msi_parent pointer, fixing the bug.
    
    Fixes: d4f54a186667 ("ACPI: platform: setup MSI domain for ACPI based
    platform device")
    Reported-by: Patrick Bellasi <patrick.bellasi@arm.com>
    Reviewed-by: Hanjun Guo <hanjun.guo@linaro.org>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Cc: Sudeep Holla <sudeep.holla@arm.com>
    Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 992a773cb9bbd17e79647a3bfced86f2a4c8d5ad
Author: Prabhath Sajeepa <psajeepa@purestorage.com>
Date:   Wed Nov 28 11:11:29 2018 -0700

    nvme-rdma: fix double freeing of async event data
    
    [ Upstream commit 6344d02dc8f886b6bbcd922ae1a17e4a41500f2d ]
    
    Some error paths in configuration of admin queue free data buffer
    associated with async request SQE without resetting the data buffer
    pointer to NULL, This buffer is also freed up again if the controller
    is shutdown or reset.
    
    Signed-off-by: Prabhath Sajeepa <psajeepa@purestorage.com>
    Reviewed-by: Roland Dreier <roland@purestorage.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5893e48f8f8a857b5bcd623d67d91668330a514a
Author: Sagi Grimberg <sagi@grimberg.me>
Date:   Wed Nov 21 15:17:37 2018 -0800

    nvme: flush namespace scanning work just before removing namespaces
    
    [ Upstream commit f6c8e432cb0479255322c5d0335b9f1699a0270c ]
    
    nvme_stop_ctrl can be called also for reset flow and there is no need to
    flush the scan_work as namespaces are not being removed. This can cause
    deadlock in rdma, fc and loop drivers since nvme_stop_ctrl barriers
    before controller teardown (and specifically I/O cancellation of the
    scan_work itself) takes place, but the scan_work will be blocked anyways
    so there is no need to flush it.
    
    Instead, move scan_work flush to nvme_remove_namespaces() where it really
    needs to flush.
    
    Reported-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Keith Busch <keith.busch@intel.com>
    Reviewed by: James Smart <jsmart2021@gmail.com>
    Tested-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1bda8b7996656c85005db7ac2a86b797c7f6cd1d
Author: Christoph Hellwig <hch@lst.de>
Date:   Tue Nov 20 16:57:54 2018 +0100

    nvme: warn when finding multi-port subsystems without multipathing enabled
    
    [ Upstream commit 14a1336e6fff47dd1028b484d6c802105c58e2ee ]
    
    Without CONFIG_NVME_MULTIPATH enabled a multi-port subsystem might
    show up as invididual devices and cause problems, warn about it.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1f925643315d87d0d04c98f69fb8c7655dbc8beb
Author: Colin Ian King <colin.king@canonical.com>
Date:   Tue Jul 17 09:53:42 2018 +0100

    fscache, cachefiles: remove redundant variable 'cache'
    
    [ Upstream commit 31ffa563833576bd49a8bf53120568312755e6e2 ]
    
    Variable 'cache' is being assigned but is never used hence it is
    redundant and can be removed.
    
    Cleans up clang warning:
    warning: variable 'cache' set but not used [-Wunused-but-set-variable]
    
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d8bf97a0a48901591f621bbed3de79bc4a6c8030
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Mon Sep 24 10:33:44 2018 -0700

    cachefiles: Explicitly cast enumerated type in put_object
    
    [ Upstream commit b7e768b7e3522695ed36dcb48ecdcd344bd30a9b ]
    
    Clang warns when one enumerated type is implicitly converted to another.
    
    fs/cachefiles/namei.c:247:50: warning: implicit conversion from
    enumeration type 'enum cachefiles_obj_ref_trace' to different
    enumeration type 'enum fscache_obj_ref_trace' [-Wenum-conversion]
            cache->cache.ops->put_object(&xobject->fscache,
    cachefiles_obj_put_wait_retry);
    
    Silence this warning by explicitly casting to fscache_obj_ref_trace,
    which is also done in put_object.
    
    Reported-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 02bd7b740cbbb374ebbdb965eb2e08f944f6e8bd
Author: NeilBrown <neilb@suse.com>
Date:   Fri Oct 26 17:16:29 2018 +1100

    fscache: fix race between enablement and dropping of object
    
    [ Upstream commit c5a94f434c82529afda290df3235e4d85873c5b4 ]
    
    It was observed that a process blocked indefintely in
    __fscache_read_or_alloc_page(), waiting for FSCACHE_COOKIE_LOOKING_UP
    to be cleared via fscache_wait_for_deferred_lookup().
    
    At this time, ->backing_objects was empty, which would normaly prevent
    __fscache_read_or_alloc_page() from getting to the point of waiting.
    This implies that ->backing_objects was cleared *after*
    __fscache_read_or_alloc_page was was entered.
    
    When an object is "killed" and then "dropped",
    FSCACHE_COOKIE_LOOKING_UP is cleared in fscache_lookup_failure(), then
    KILL_OBJECT and DROP_OBJECT are "called" and only in DROP_OBJECT is
    ->backing_objects cleared.  This leaves a window where
    something else can set FSCACHE_COOKIE_LOOKING_UP and
    __fscache_read_or_alloc_page() can start waiting, before
    ->backing_objects is cleared
    
    There is some uncertainty in this analysis, but it seems to be fit the
    observations.  Adding the wake in this patch will be handled correctly
    by __fscache_read_or_alloc_page(), as it checks if ->backing_objects
    is empty again, after waiting.
    
    Customer which reported the hang, also report that the hang cannot be
    reproduced with this fix.
    
    The backtrace for the blocked process looked like:
    
    PID: 29360  TASK: ffff881ff2ac0f80  CPU: 3   COMMAND: "zsh"
     #0 [ffff881ff43efbf8] schedule at ffffffff815e56f1
     #1 [ffff881ff43efc58] bit_wait at ffffffff815e64ed
     #2 [ffff881ff43efc68] __wait_on_bit at ffffffff815e61b8
     #3 [ffff881ff43efca0] out_of_line_wait_on_bit at ffffffff815e625e
     #4 [ffff881ff43efd08] fscache_wait_for_deferred_lookup at ffffffffa04f2e8f [fscache]
     #5 [ffff881ff43efd18] __fscache_read_or_alloc_page at ffffffffa04f2ffe [fscache]
     #6 [ffff881ff43efd58] __nfs_readpage_from_fscache at ffffffffa0679668 [nfs]
     #7 [ffff881ff43efd78] nfs_readpage at ffffffffa067092b [nfs]
     #8 [ffff881ff43efda0] generic_file_read_iter at ffffffff81187a73
     #9 [ffff881ff43efe50] nfs_file_read at ffffffffa066544b [nfs]
    #10 [ffff881ff43efe70] __vfs_read at ffffffff811fc756
    #11 [ffff881ff43efee8] vfs_read at ffffffff811fccfa
    #12 [ffff881ff43eff18] sys_read at ffffffff811fda62
    #13 [ffff881ff43eff50] entry_SYSCALL_64_fastpath at ffffffff815e986e
    
    Signed-off-by: NeilBrown <neilb@suse.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 52da87f0e2e8a083885297c393f5d605f76a8200
Author: David Howells <dhowells@redhat.com>
Date:   Tue Nov 13 23:20:21 2018 +0000

    afs: Fix validation/callback interaction
    
    [ Upstream commit ae3b7361dc0ee9a425bf7d77ce211f533500b39b ]
    
    When afs_validate() is called to validate a vnode (inode), there are two
    unhandled cases in the fastpath at the top of the function:
    
     (1) If the vnode is promised (AFS_VNODE_CB_PROMISED is set), the break
         counters match and the data has expired, then there's an implicit case
         in which the vnode needs revalidating.
    
         This has no consequences since the default "valid = false" set at the
         top of the function happens to do the right thing.
    
     (2) If the vnode is not promised and it hasn't been deleted
         (AFS_VNODE_DELETED is not set) then there's a default case we're not
         handling in which the vnode is invalid.  If the vnode is invalid, we
         need to bring cb_s_break and cb_v_break up to date before we refetch
         the status.
    
         As a consequence, once the server loses track of the client
         (ie. sufficient time has passed since we last sent it an operation),
         it will send us a CB.InitCallBackState* operation when we next try to
         talk to it.  This calls afs_init_callback_state() which increments
         afs_server::cb_s_break, but this then doesn't propagate to the
         afs_vnode record.
    
         The result being that every afs_validate() call thereafter sends a
         status fetch operation to the server.
    
    Clarify and fix this by:
    
     (A) Setting valid in all the branches rather than initialising it at the
         top so that the compiler catches where we've missed.
    
     (B) Restructuring the logic in the 'promised' branch so that we set valid
         to false if the callback is due to expire (or has expired) and so that
         the final case is that the vnode is still valid.
    
     (C) Adding an else-statement that ups cb_s_break and cb_v_break if the
         promised and deleted cases don't match.
    
    Fixes: c435ee34551e ("afs: Overhaul the callback handling")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ce469db0943bb633a8e8bdd288e45b228295d449
Author: Kees Cook <keescook@chromium.org>
Date:   Thu Nov 1 16:17:22 2018 -0700

    pstore/ram: Correctly calculate usable PRZ bytes
    
    [ Upstream commit 89d328f637b9904b6d4c9af73c8a608b8dd4d6f8 ]
    
    The actual number of bytes stored in a PRZ is smaller than the
    bytes requested by platform data, since there is a header on each
    PRZ. Additionally, if ECC is enabled, there are trailing bytes used
    as well. Normally this mismatch doesn't matter since PRZs are circular
    buffers and the leading "overflow" bytes are just thrown away. However, in
    the case of a compressed record, this rather badly corrupts the results.
    
    This corruption was visible with "ramoops.mem_size=204800 ramoops.ecc=1".
    Any stored crashes would not be uncompressable (producing a pstorefs
    "dmesg-*.enc.z" file), and triggering errors at boot:
    
      [    2.790759] pstore: crypto_comp_decompress failed, ret = -22!
    
    Backporting this depends on commit 70ad35db3321 ("pstore: Convert console
    write to use ->write_buf")
    
    Reported-by: Joel Fernandes <joel@joelfernandes.org>
    Fixes: b0aad7a99c1d ("pstore: Add compression support to pstore")
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ff5ac9bd16ef954d80dffabc693f7802bb86abeb
Author: Pan Bian <bianpan2016@163.com>
Date:   Thu Nov 22 10:07:12 2018 +0800

    pvcalls-front: fixes incorrect error handling
    
    [ Upstream commit 975ef94a0284648fb0137bd5e949b18cef604e33 ]
    
    kfree() is incorrectly used to release the pages allocated by
    __get_free_page() and __get_free_pages(). Use the matching deallocators
    i.e., free_page() and free_pages(), respectively.
    
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a9d79a0751a2428cdb28278dd9aeb6ce4afce797
Author: Igor Druzhinin <igor.druzhinin@citrix.com>
Date:   Tue Nov 27 20:58:21 2018 +0000

    Revert "xen/balloon: Mark unallocated host memory as UNUSABLE"
    
    [ Upstream commit 123664101aa2156d05251704fc63f9bcbf77741a ]
    
    This reverts commit b3cf8528bb21febb650a7ecbf080d0647be40b9f.
    
    That commit unintentionally broke Xen balloon memory hotplug with
    "hotplug_unpopulated" set to 1. As long as "System RAM" resource
    got assigned under a new "Unusable memory" resource in IO/Mem tree
    any attempt to online this memory would fail due to general kernel
    restrictions on having "System RAM" resources as 1st level only.
    
    The original issue that commit has tried to workaround fa564ad96366
    ("x86/PCI: Enable a 64bit BAR on AMD Family 15h (Models 00-1f, 30-3f,
    60-7f)") also got amended by the following 03a551734 ("x86/PCI: Move
    and shrink AMD 64-bit window to avoid conflict") which made the
    original fix to Xen ballooning unnecessary.
    
    Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c1a21086bbbdf8fa189a17fbadb1a61659724ee9
Author: Srikanth Boddepalli <boddepalli.srikanth@gmail.com>
Date:   Tue Nov 27 19:53:27 2018 +0530

    xen: xlate_mmu: add missing header to fix 'W=1' warning
    
    [ Upstream commit 72791ac854fea36034fa7976b748fde585008e78 ]
    
    Add a missing header otherwise compiler warns about missed prototype:
    
    drivers/xen/xlate_mmu.c:183:5: warning: no previous prototype for 'xen_xlate_unmap_gfn_range?' [-Wmissing-prototypes]
      int xen_xlate_unmap_gfn_range(struct vm_area_struct *vma,
          ^~~~~~~~~~~~~~~~~~~~~~~~~
    
    Signed-off-by: Srikanth Boddepalli <boddepalli.srikanth@gmail.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Reviewed-by: Joey Pabalinas <joeypabalinas@gmail.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f3c73ae453ed3820299030a24032848c58219b3d
Author: Y.C. Chen <yc_chen@aspeedtech.com>
Date:   Thu Nov 22 11:56:28 2018 +0800

    drm/ast: fixed reading monitor EDID not stable issue
    
    [ Upstream commit 300625620314194d9e6d4f6dda71f2dc9cf62d9f ]
    
    v1: over-sample data to increase the stability with some specific monitors
    v2: refine to avoid infinite loop
    v3: remove un-necessary "volatile" declaration
    
    [airlied: fix two checkpatch warnings]
    
    Signed-off-by: Y.C. Chen <yc_chen@aspeedtech.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/1542858988-1127-1-git-send-email-yc_chen@aspeedtech.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cbd6a7ea60687231b1ba0e9a8d52f54e4174711e
Author: shaoyunl <shaoyun.liu@amd.com>
Date:   Thu Nov 22 11:45:24 2018 -0500

    drm/amdgpu: Add delay after enable RLC ucode
    
    [ Upstream commit ad97d9de45835b6a0f71983b0ae0cffd7306730a ]
    
    Driver shouldn't try to access any GFX registers until RLC is idle.
    During the test, it took 12 seconds for RLC to clear the BUSY bit
    in RLC_GPM_STAT register which is un-acceptable for driver.
    As per RLC engineer, it would take RLC Ucode less than 10,000 GFXCLK
    cycles to finish its critical section. In a lowest 300M enginer clock
    setting(default from vbios), 50 us delay is enough.
    
    This commit fix the hang when RLC introduce the work around for XGMI
    which requires more cycles to setup more registers than normal
    
    Signed-off-by: shaoyunl <shaoyun.liu@amd.com>
    Acked-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3b54558a73d0293409c10c7fe3fbb48a9f95f095
Author: Pan Bian <bianpan2016@163.com>
Date:   Wed Nov 28 15:30:24 2018 +0800

    net: hisilicon: remove unexpected free_netdev
    
    [ Upstream commit c758940158bf29fe14e9d0f89d5848f227b48134 ]
    
    The net device ndev is freed via free_netdev when failing to register
    the device. The control flow then jumps to the error handling code
    block. ndev is used and freed again. Resulting in a use-after-free bug.
    
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e3fb9d84fdd1a67a4c9b50a74267077105feea16
Author: Josh Elsasser <jelsasser@appneta.com>
Date:   Sat Nov 24 12:57:33 2018 -0800

    ixgbe: recognize 1000BaseLX SFP modules as 1Gbps
    
    [ Upstream commit a8bf879af7b1999eba36303ce9cc60e0e7dd816c ]
    
    Add the two 1000BaseLX enum values to the X550's check for 1Gbps modules,
    allowing the core driver code to establish a link over this SFP type.
    
    This is done by the out-of-tree driver but the fix wasn't in mainline.
    
    Fixes: e23f33367882 ("ixgbe: Fix 1G and 10G link stability for X550EM_x SFP+”)
    Fixes: 6a14ee0cfb19 ("ixgbe: Add X550 support function pointers")
    Signed-off-by: Josh Elsasser <jelsasser@appneta.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4b0f9f881bc1278ce23722e2d30a17f9a1a55595
Author: Yunjian Wang <wangyunjian@huawei.com>
Date:   Tue Nov 6 16:27:12 2018 +0800

    igb: fix uninitialized variables
    
    [ Upstream commit e4c39f7926b4de355f7df75651d75003806aae09 ]
    
    This patch fixes the variable 'phy_word' may be used uninitialized.
    
    Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eee2269fd04f2ed8acc1ffd01534deb758dd3247
Author: Kiran Kumar Modukuri <kiran.modukuri@gmail.com>
Date:   Mon Sep 24 12:02:39 2018 +1000

    cachefiles: Fix page leak in cachefiles_read_backing_file while vmscan is active
    
    [ Upstream commit 9a24ce5b66f9c8190d63b15f4473600db4935f1f ]
    
    [Description]
    
    In a heavily loaded system where the system pagecache is nearing memory
    limits and fscache is enabled, pages can be leaked by fscache while trying
    read pages from cachefiles backend.  This can happen because two
    applications can be reading same page from a single mount, two threads can
    be trying to read the backing page at same time.  This results in one of
    the threads finding that a page for the backing file or netfs file is
    already in the radix tree.  During the error handling cachefiles does not
    clean up the reference on backing page, leading to page leak.
    
    [Fix]
    The fix is straightforward, to decrement the reference when error is
    encountered.
    
      [dhowells: Note that I've removed the clearance and put of newpage as
       they aren't attested in the commit message and don't appear to actually
       achieve anything since a new page is only allocated is newpage!=NULL and
       any residual new page is cleared before returning.]
    
    [Testing]
    I have tested the fix using following method for 12+ hrs.
    
    1) mkdir -p /mnt/nfs ; mount -o vers=3,fsc <server_ip>:/export /mnt/nfs
    2) create 10000 files of 2.8MB in a NFS mount.
    3) start a thread to simulate heavy VM presssure
       (while true ; do echo 3 > /proc/sys/vm/drop_caches ; sleep 1 ; done)&
    4) start multiple parallel reader for data set at same time
       find /mnt/nfs -type f | xargs -P 80 cat > /dev/null &
       find /mnt/nfs -type f | xargs -P 80 cat > /dev/null &
       find /mnt/nfs -type f | xargs -P 80 cat > /dev/null &
       ..
       ..
       find /mnt/nfs -type f | xargs -P 80 cat > /dev/null &
       find /mnt/nfs -type f | xargs -P 80 cat > /dev/null &
    5) finally check using cat /proc/fs/fscache/stats | grep -i pages ;
       free -h , cat /proc/meminfo and page-types -r -b lru
       to ensure all pages are freed.
    
    Reviewed-by: Daniel Axtens <dja@axtens.net>
    Signed-off-by: Shantanu Goel <sgoel01@yahoo.com>
    Signed-off-by: Kiran Kumar Modukuri <kiran.modukuri@gmail.com>
    [dja: forward ported to current upstream]
    Signed-off-by: Daniel Axtens <dja@axtens.net>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a4a7a0d729c03b1629d296bab58444a230192f70
Author: kiran.modukuri <kiran.modukuri@gmail.com>
Date:   Mon Nov 26 15:41:48 2018 +0000

    fscache: Fix race in fscache_op_complete() due to split atomic_sub & read
    
    [ Upstream commit 3f2b7b9035107d6096ea438ea3d97dcf0481b6d2 ]
    
    The code in fscache_retrieval_complete is using atomic_sub followed by an
    atomic_read:
    
            atomic_sub(n_pages, &op->n_pages);
            if (atomic_read(&op->n_pages) <= 0)
                    fscache_op_complete(&op->op, true);
    
    This causes two threads doing a decrement of n_pages to race with each
    other seeing the op->refcount 0 at same time - and they end up calling
    fscache_op_complete() in both the threads leading to an assertion failure.
    
    Fix this by using atomic_sub_return_relaxed() instead of two calls.  Note
    that I'm using 'relaxed' rather than, say, 'release' as there aren't
    multiple variables that appear to need ordering across the release.
    
    The oops looks something like:
    
    FS-Cache: Assertion failed
    FS-Cache: 0 > 0 is false
    ...
    kernel BUG at /usr/src/linux-4.4.0/fs/fscache/operation.c:449!
    ...
    Workqueue: fscache_operation fscache_op_work_func [fscache]
    ...
    RIP: 0010:[<ffffffffc037eacd>] fscache_op_complete+0x10d/0x180 [fscache]
    ...
    Call Trace:
     [<ffffffffc1464cf9>] cachefiles_read_copier+0x3a9/0x410 [cachefiles]
     [<ffffffffc037e272>] fscache_op_work_func+0x22/0x50 [fscache]
     [<ffffffff81096da0>] process_one_work+0x150/0x3f0
     [<ffffffff8109751a>] worker_thread+0x11a/0x470
     [<ffffffff81808e59>] ? __schedule+0x359/0x980
     [<ffffffff81097400>] ? rescuer_thread+0x310/0x310
     [<ffffffff8109cdd6>] kthread+0xd6/0xf0
     [<ffffffff8109cd00>] ? kthread_park+0x60/0x60
     [<ffffffff8180d0cf>] ret_from_fork+0x3f/0x70
     [<ffffffff8109cd00>] ? kthread_park+0x60/0x60
    
    This seen this in 4.4.x kernels and the same bug affects fscache in latest
    upstreams kernels.
    
    Fixes: 1bb4b7f98f36 ("FS-Cache: The retrieval remaining-pages counter needs to be atomic_t")
    Signed-off-by: Kiran Kumar Modukuri <kiran.modukuri@gmail.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5132f91318ed21dfc76cd405416785106fe591ca
Author: David Howells <dhowells@redhat.com>
Date:   Tue Nov 27 16:34:55 2018 +0000

    cachefiles: Fix an assertion failure when trying to update a failed object
    
    [ Upstream commit e6bc06faf64a83384cc0abc537df954c9d3ff942 ]
    
    If cachefiles gets an error other then ENOENT when trying to look up an
    object in the cache (in this case, EACCES), the object state machine will
    eventually transition to the DROP_OBJECT state.
    
    This state invokes fscache_drop_object() which tries to sync the auxiliary
    data with the cache (this is done lazily since commit 402cb8dda949d) on an
    incomplete cache object struct.
    
    The problem comes when cachefiles_update_object_xattr() is called to
    rewrite the xattr holding the data.  There's an assertion there that the
    cache object points to a dentry as we're going to update its xattr.  The
    assertion trips, however, as dentry didn't get set.
    
    Fix the problem by skipping the update in cachefiles if the object doesn't
    refer to a dentry.  A better way to do it could be to skip the update from
    the DROP_OBJECT state handler in fscache, but that might deny the cache the
    opportunity to update intermediate state.
    
    If this error occurs, the kernel log includes lines that look like the
    following:
    
     CacheFiles: Lookup failed error -13
     CacheFiles:
     CacheFiles: Assertion failed
     ------------[ cut here ]------------
     kernel BUG at fs/cachefiles/xattr.c:138!
     ...
     Workqueue: fscache_object fscache_object_work_func [fscache]
     RIP: 0010:cachefiles_update_object_xattr.cold.4+0x18/0x1a [cachefiles]
     ...
     Call Trace:
      cachefiles_update_object+0xdd/0x1c0 [cachefiles]
      fscache_update_aux_data+0x23/0x30 [fscache]
      fscache_drop_object+0x18e/0x1c0 [fscache]
      fscache_object_work_func+0x74/0x2b0 [fscache]
      process_one_work+0x18d/0x340
      worker_thread+0x2e/0x390
      ? pwq_unbound_release_workfn+0xd0/0xd0
      kthread+0x112/0x130
      ? kthread_bind+0x30/0x30
      ret_from_fork+0x35/0x40
    
    Note that there are actually two issues here: (1) EACCES happened on a
    cache object and (2) an oops occurred.  I think that the second is a
    consequence of the first (it certainly looks like it ought to be).  This
    patch only deals with the second.
    
    Fixes: 402cb8dda949 ("fscache: Attach the index key and aux data to the cookie")
    Reported-by: Zhibin Li <zhibli@redhat.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 815899cf26f6e42d528ac8b2b6e96800e44f9579
Author: Hui Wang <hui.wang@canonical.com>
Date:   Wed Nov 28 17:11:26 2018 +0800

    ALSA: usb-audio: Add vendor and product name for Dell WD19 Dock
    
    [ Upstream commit 8159a6a4a7d2a092d5375f695ecfca22b4562b5f ]
    
    Like the Dell WD15 Dock, the WD19 Dock (0bda:402e) doens't provide
    useful string for the vendor and product names too. In order to share
    the UCM with WD15, here we keep the profile_name same as the WD15.
    
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e5f42e061789220895a92c9ecdc891541b974e5c
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Wed Nov 28 11:27:28 2018 +0900

    netfilter: nf_tables: deactivate expressions in rule replecement routine
    
    [ Upstream commit ca08987885a147643817d02bf260bc4756ce8cd4 ]
    
    There is no expression deactivation call from the rule replacement path,
    hence, chain counter is not decremented. A few steps to reproduce the
    problem:
    
       %nft add table ip filter
       %nft add chain ip filter c1
       %nft add chain ip filter c1
       %nft add rule ip filter c1 jump c2
       %nft replace rule ip filter c1 handle 3 accept
       %nft flush ruleset
    
    <jump c2> expression means immediate NFT_JUMP to chain c2.
    Reference count of chain c2 is increased when the rule is added.
    
    When rule is deleted or replaced, the reference counter of c2 should be
    decreased via nft_rule_expr_deactivate() which calls
    nft_immediate_deactivate().
    
    Splat looks like:
    [  214.396453] WARNING: CPU: 1 PID: 21 at net/netfilter/nf_tables_api.c:1432 nf_tables_chain_destroy.isra.38+0x2f9/0x3a0 [nf_tables]
    [  214.398983] Modules linked in: nf_tables nfnetlink
    [  214.398983] CPU: 1 PID: 21 Comm: kworker/1:1 Not tainted 4.20.0-rc2+ #44
    [  214.398983] Workqueue: events nf_tables_trans_destroy_work [nf_tables]
    [  214.398983] RIP: 0010:nf_tables_chain_destroy.isra.38+0x2f9/0x3a0 [nf_tables]
    [  214.398983] Code: 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 80 3c 02 00 0f 85 8e 00 00 00 48 8b 7b 58 e8 e1 2c 4e c6 48 89 df e8 d9 2c 4e c6 eb 9a <0f> 0b eb 96 0f 0b e9 7e fe ff ff e8 a7 7e 4e c6 e9 a4 fe ff ff e8
    [  214.398983] RSP: 0018:ffff8881152874e8 EFLAGS: 00010202
    [  214.398983] RAX: 0000000000000001 RBX: ffff88810ef9fc28 RCX: ffff8881152876f0
    [  214.398983] RDX: dffffc0000000000 RSI: 1ffff11022a50ede RDI: ffff88810ef9fc78
    [  214.398983] RBP: 1ffff11022a50e9d R08: 0000000080000000 R09: 0000000000000000
    [  214.398983] R10: 0000000000000000 R11: 0000000000000000 R12: 1ffff11022a50eba
    [  214.398983] R13: ffff888114446e08 R14: ffff8881152876f0 R15: ffffed1022a50ed6
    [  214.398983] FS:  0000000000000000(0000) GS:ffff888116400000(0000) knlGS:0000000000000000
    [  214.398983] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  214.398983] CR2: 00007fab9bb5f868 CR3: 000000012aa16000 CR4: 00000000001006e0
    [  214.398983] Call Trace:
    [  214.398983]  ? nf_tables_table_destroy.isra.37+0x100/0x100 [nf_tables]
    [  214.398983]  ? __kasan_slab_free+0x145/0x180
    [  214.398983]  ? nf_tables_trans_destroy_work+0x439/0x830 [nf_tables]
    [  214.398983]  ? kfree+0xdb/0x280
    [  214.398983]  nf_tables_trans_destroy_work+0x5f5/0x830 [nf_tables]
    [ ... ]
    
    Fixes: bb7b40aecbf7 ("netfilter: nf_tables: bogus EBUSY in chain deletions")
    Reported by: Christoph Anton Mitterer <calestyo@scientia.net>
    Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=914505
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=201791
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6d665dab42e7d98286d4f2066cc226dae7654c1f
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Mon Nov 19 16:49:05 2018 +0100

    usb: gadget: u_ether: fix unsafe list iteration
    
    [ Upstream commit c9287fa657b3328b4549c0ab39ea7f197a3d6a50 ]
    
    list_for_each_entry_safe() is not safe for deleting entries from the
    list if the spin lock, which protects it, is released and reacquired during
    the list iteration. Fix this issue by replacing this construction with
    a simple check if list is empty and removing the first entry in each
    iteration. This is almost equivalent to a revert of the commit mentioned in
    the Fixes: tag.
    
    This patch fixes following issue:
    --->8---
    Unable to handle kernel NULL pointer dereference at virtual address 00000104
    pgd = (ptrval)
    [00000104] *pgd=00000000
    Internal error: Oops: 817 [#1] PREEMPT SMP ARM
    Modules linked in:
    CPU: 1 PID: 84 Comm: kworker/1:1 Not tainted 4.20.0-rc2-next-20181114-00009-g8266b35ec404 #1061
    Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
    Workqueue: events eth_work
    PC is at rx_fill+0x60/0xac
    LR is at _raw_spin_lock_irqsave+0x50/0x5c
    pc : [<c065fee0>]    lr : [<c0a056b8>]    psr: 80000093
    sp : ee7fbee8  ip : 00000100  fp : 00000000
    r10: 006000c0  r9 : c10b0ab0  r8 : ee7eb5c0
    r7 : ee7eb614  r6 : ee7eb5ec  r5 : 000000dc  r4 : ee12ac00
    r3 : ee12ac24  r2 : 00000200  r1 : 60000013  r0 : ee7eb5ec
    Flags: Nzcv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment none
    Control: 10c5387d  Table: 6d5dc04a  DAC: 00000051
    Process kworker/1:1 (pid: 84, stack limit = 0x(ptrval))
    Stack: (0xee7fbee8 to 0xee7fc000)
    ...
    [<c065fee0>] (rx_fill) from [<c0143b7c>] (process_one_work+0x200/0x738)
    [<c0143b7c>] (process_one_work) from [<c0144118>] (worker_thread+0x2c/0x4c8)
    [<c0144118>] (worker_thread) from [<c014a8a4>] (kthread+0x128/0x164)
    [<c014a8a4>] (kthread) from [<c01010b4>] (ret_from_fork+0x14/0x20)
    Exception stack(0xee7fbfb0 to 0xee7fbff8)
    ...
    ---[ end trace 64480bc835eba7d6 ]---
    
    Fixes: fea14e68ff5e ("usb: gadget: u_ether: use better list accessors")
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 227b1745cd978854e25e1a565552fb2bfd16c731
Author: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Date:   Mon Nov 26 15:07:16 2018 +0100

    net: thunderx: fix NULL pointer dereference in nic_remove
    
    [ Upstream commit 24a6d2dd263bc910de018c78d1148b3e33b94512 ]
    
    Fix a possible NULL pointer dereference in nic_remove routine
    removing the nicpf module if nic_probe fails.
    The issue can be triggered with the following reproducer:
    
    $rmmod nicvf
    $rmmod nicpf
    
    [  521.412008] Unable to handle kernel access to user memory outside uaccess routines at virtual address 0000000000000014
    [  521.422777] Mem abort info:
    [  521.425561]   ESR = 0x96000004
    [  521.428624]   Exception class = DABT (current EL), IL = 32 bits
    [  521.434535]   SET = 0, FnV = 0
    [  521.437579]   EA = 0, S1PTW = 0
    [  521.440730] Data abort info:
    [  521.443603]   ISV = 0, ISS = 0x00000004
    [  521.447431]   CM = 0, WnR = 0
    [  521.450417] user pgtable: 4k pages, 48-bit VAs, pgdp = 0000000072a3da42
    [  521.457022] [0000000000000014] pgd=0000000000000000
    [  521.461916] Internal error: Oops: 96000004 [#1] SMP
    [  521.511801] Hardware name: GIGABYTE H270-T70/MT70-HD0, BIOS T49 02/02/2018
    [  521.518664] pstate: 80400005 (Nzcv daif +PAN -UAO)
    [  521.523451] pc : nic_remove+0x24/0x88 [nicpf]
    [  521.527808] lr : pci_device_remove+0x48/0xd8
    [  521.532066] sp : ffff000013433cc0
    [  521.535370] x29: ffff000013433cc0 x28: ffff810f6ac50000
    [  521.540672] x27: 0000000000000000 x26: 0000000000000000
    [  521.545974] x25: 0000000056000000 x24: 0000000000000015
    [  521.551274] x23: ffff8007ff89a110 x22: ffff000001667070
    [  521.556576] x21: ffff8007ffb170b0 x20: ffff8007ffb17000
    [  521.561877] x19: 0000000000000000 x18: 0000000000000025
    [  521.567178] x17: 0000000000000000 x16: 000000000000010ffc33ff98 x8 : 0000000000000000
    [  521.593683] x7 : 0000000000000000 x6 : 0000000000000001
    [  521.598983] x5 : 0000000000000002 x4 : 0000000000000003
    [  521.604284] x3 : ffff8007ffb17184 x2 : ffff8007ffb17184
    [  521.609585] x1 : ffff000001662118 x0 : ffff000008557be0
    [  521.614887] Process rmmod (pid: 1897, stack limit = 0x00000000859535c3)
    [  521.621490] Call trace:
    [  521.623928]  nic_remove+0x24/0x88 [nicpf]
    [  521.627927]  pci_device_remove+0x48/0xd8
    [  521.631847]  device_release_driver_internal+0x1b0/0x248
    [  521.637062]  driver_detach+0x50/0xc0
    [  521.640628]  bus_remove_driver+0x60/0x100
    [  521.644627]  driver_unregister+0x34/0x60
    [  521.648538]  pci_unregister_driver+0x24/0xd8
    [  521.652798]  nic_cleanup_module+0x14/0x111c [nicpf]
    [  521.657672]  __arm64_sys_delete_module+0x150/0x218
    [  521.662460]  el0_svc_handler+0x94/0x110
    [  521.666287]  el0_svc+0x8/0xc
    [  521.669160] Code: aa1e03e0 9102c295 d503201f f9404eb3 (b9401660)
    
    Fixes: 4863dea3fab0 ("net: Adding support for Cavium ThunderX network controller")
    Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bf1b47f33cb1f4349ed24129e1b6eae21294780b
Author: Yi Wang <wang.yi59@zte.com.cn>
Date:   Thu Nov 8 11:22:21 2018 +0800

    x86/kvm/vmx: fix old-style function declaration
    
    [ Upstream commit 1e4329ee2c52692ea42cc677fb2133519718b34a ]
    
    The inline keyword which is not at the beginning of the function
    declaration may trigger the following build warnings, so let's fix it:
    
    arch/x86/kvm/vmx.c:1309:1: warning: ‘inline’ is not at beginning of declaration [-Wold-style-declaration]
    arch/x86/kvm/vmx.c:5947:1: warning: ‘inline’ is not at beginning of declaration [-Wold-style-declaration]
    arch/x86/kvm/vmx.c:5985:1: warning: ‘inline’ is not at beginning of declaration [-Wold-style-declaration]
    arch/x86/kvm/vmx.c:6023:1: warning: ‘inline’ is not at beginning of declaration [-Wold-style-declaration]
    
    Signed-off-by: Yi Wang <wang.yi59@zte.com.cn>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d6b1692d9b9ee49f333500e6578c3801f6ac2530
Author: Yi Wang <wang.yi59@zte.com.cn>
Date:   Thu Nov 8 16:48:36 2018 +0800

    KVM: x86: fix empty-body warnings
    
    [ Upstream commit 354cb410d87314e2eda344feea84809e4261570a ]
    
    We get the following warnings about empty statements when building
    with 'W=1':
    
    arch/x86/kvm/lapic.c:632:53: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
    arch/x86/kvm/lapic.c:1907:42: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
    arch/x86/kvm/lapic.c:1936:65: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
    arch/x86/kvm/lapic.c:1975:44: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
    
    Rework the debug helper macro to get rid of these warnings.
    
    Signed-off-by: Yi Wang <wang.yi59@zte.com.cn>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3c7670d56ac650b988e560298a71e7f8d7a6828d
Author: Liran Alon <liran.alon@oracle.com>
Date:   Tue Nov 20 18:03:25 2018 +0200

    KVM: VMX: Update shared MSRs to be saved/restored on MSR_EFER.LMA changes
    
    [ Upstream commit f48b4711dd6e1cf282f9dfd159c14a305909c97c ]
    
    When guest transitions from/to long-mode by modifying MSR_EFER.LMA,
    the list of shared MSRs to be saved/restored on guest<->host
    transitions is updated (See vmx_set_efer() call to setup_msrs()).
    
    On every entry to guest, vcpu_enter_guest() calls
    vmx_prepare_switch_to_guest(). This function should also take care
    of setting the shared MSRs to be saved/restored. However, the
    function does nothing in case we are already running with loaded
    guest state (vmx->loaded_cpu_state != NULL).
    
    This means that even when guest modifies MSR_EFER.LMA which results
    in updating the list of shared MSRs, it isn't being taken into account
    by vmx_prepare_switch_to_guest() because it happens while we are
    running with loaded guest state.
    
    To fix above mentioned issue, add a flag to mark that the list of
    shared MSRs has been updated and modify vmx_prepare_switch_to_guest()
    to set shared MSRs when running with host state *OR* list of shared
    MSRs has been updated.
    
    Note that this issue was mistakenly introduced by commit
    678e315e78a7 ("KVM: vmx: add dedicated utility to access guest's
    kernel_gs_base") because previously vmx_set_efer() always called
    vmx_load_host_state() which resulted in vmx_prepare_switch_to_guest() to
    set shared MSRs.
    
    Fixes: 678e315e78a7 ("KVM: vmx: add dedicated utility to access guest's kernel_gs_base")
    Reported-by: Eyal Moscovici <eyal.moscovici@oracle.com>
    Reviewed-by: Mihai Carabas <mihai.carabas@oracle.com>
    Reviewed-by: Liam Merwick <liam.merwick@oracle.com>
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Signed-off-by: Liran Alon <liran.alon@oracle.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8038f92df3eb2a98d68ba78799d4026b099f6705
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Sun Nov 25 18:47:13 2018 +0900

    netfilter: nf_conncount: remove wrong condition check routine
    
    [ Upstream commit 53ca0f2fec39c80ccd19e6e3f30cc8daef174b70 ]
    
    All lists that reach the tree_nodes_free() function have both zero
    counter and true dead flag. The reason for this is that lists to be
    release are selected by nf_conncount_gc_list() which already decrements
    the list counter and sets on the dead flag. Therefore, this if statement
    in tree_nodes_free() is unnecessary and wrong.
    
    Fixes: 31568ec09ea0 ("netfilter: nf_conncount: fix list_del corruption in conn_free")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5517d4c6dcbb89af8b34c924088132e5839930fa
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Thu Nov 22 19:59:57 2018 +0900

    netfilter: nat: fix double register in masquerade modules
    
    [ Upstream commit 095faf45e64be00bff4da2d6182dface3d69c9b7 ]
    
    There is a reference counter to ensure that masquerade modules register
    notifiers only once. However, the existing reference counter approach is
    not safe, test commands are:
    
       while :
       do
               modprobe ip6t_MASQUERADE &
               modprobe nft_masq_ipv6 &
               modprobe -rv ip6t_MASQUERADE &
               modprobe -rv nft_masq_ipv6 &
       done
    
    numbers below represent the reference counter.
    --------------------------------------------------------
    CPU0        CPU1        CPU2        CPU3        CPU4
    [insmod]    [insmod]    [rmmod]     [rmmod]     [insmod]
    --------------------------------------------------------
    0->1
    register    1->2
                returns     2->1
                            returns     1->0
                                                    0->1
                                                    register <--
                                        unregister
    --------------------------------------------------------
    
    The unregistation of CPU3 should be processed before the
    registration of CPU4.
    
    In order to fix this, use a mutex instead of reference counter.
    
    splat looks like:
    [  323.869557] watchdog: BUG: soft lockup - CPU#0 stuck for 22s! [modprobe:1381]
    [  323.869574] Modules linked in: nf_tables(+) nf_nat_ipv6(-) nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 n]
    [  323.869574] irq event stamp: 194074
    [  323.898930] hardirqs last  enabled at (194073): [<ffffffff90004a0d>] trace_hardirqs_on_thunk+0x1a/0x1c
    [  323.898930] hardirqs last disabled at (194074): [<ffffffff90004a29>] trace_hardirqs_off_thunk+0x1a/0x1c
    [  323.898930] softirqs last  enabled at (182132): [<ffffffff922006ec>] __do_softirq+0x6ec/0xa3b
    [  323.898930] softirqs last disabled at (182109): [<ffffffff90193426>] irq_exit+0x1a6/0x1e0
    [  323.898930] CPU: 0 PID: 1381 Comm: modprobe Not tainted 4.20.0-rc2+ #27
    [  323.898930] RIP: 0010:raw_notifier_chain_register+0xea/0x240
    [  323.898930] Code: 3c 03 0f 8e f2 00 00 00 44 3b 6b 10 7f 4d 49 bc 00 00 00 00 00 fc ff df eb 22 48 8d 7b 10 488
    [  323.898930] RSP: 0018:ffff888101597218 EFLAGS: 00000206 ORIG_RAX: ffffffffffffff13
    [  323.898930] RAX: 0000000000000000 RBX: ffffffffc04361c0 RCX: 0000000000000000
    [  323.898930] RDX: 1ffffffff26132ae RSI: ffffffffc04aa3c0 RDI: ffffffffc04361d0
    [  323.898930] RBP: ffffffffc04361c8 R08: 0000000000000000 R09: 0000000000000001
    [  323.898930] R10: ffff8881015972b0 R11: fffffbfff26132c4 R12: dffffc0000000000
    [  323.898930] R13: 0000000000000000 R14: 1ffff110202b2e44 R15: ffffffffc04aa3c0
    [  323.898930] FS:  00007f813ed41540(0000) GS:ffff88811ae00000(0000) knlGS:0000000000000000
    [  323.898930] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  323.898930] CR2: 0000559bf2c9f120 CR3: 000000010bc80000 CR4: 00000000001006f0
    [  323.898930] Call Trace:
    [  323.898930]  ? atomic_notifier_chain_register+0x2d0/0x2d0
    [  323.898930]  ? down_read+0x150/0x150
    [  323.898930]  ? sched_clock_cpu+0x126/0x170
    [  323.898930]  ? nf_tables_core_module_init+0xe4/0xe4 [nf_tables]
    [  323.898930]  ? nf_tables_core_module_init+0xe4/0xe4 [nf_tables]
    [  323.898930]  register_netdevice_notifier+0xbb/0x790
    [  323.898930]  ? __dev_close_many+0x2d0/0x2d0
    [  323.898930]  ? __mutex_unlock_slowpath+0x17f/0x740
    [  323.898930]  ? wait_for_completion+0x710/0x710
    [  323.898930]  ? nf_tables_core_module_init+0xe4/0xe4 [nf_tables]
    [  323.898930]  ? up_write+0x6c/0x210
    [  323.898930]  ? nf_tables_core_module_init+0xe4/0xe4 [nf_tables]
    [  324.127073]  ? nf_tables_core_module_init+0xe4/0xe4 [nf_tables]
    [  324.127073]  nft_chain_filter_init+0x1e/0xe8a [nf_tables]
    [  324.127073]  nf_tables_module_init+0x37/0x92 [nf_tables]
    [ ... ]
    
    Fixes: 8dd33cc93ec9 ("netfilter: nf_nat: generalize IPv4 masquerading support for nf_tables")
    Fixes: be6b635cd674 ("netfilter: nf_nat: generalize IPv6 masquerading support for nf_tables")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 18218f827e3c0aabe07ad686c6071b33df411e32
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Thu Nov 22 19:59:46 2018 +0900

    netfilter: add missing error handling code for register functions
    
    [ Upstream commit 584eab291c67894cb17cc87544b9d086228ea70f ]
    
    register_{netdevice/inetaddr/inet6addr}_notifier may return an error
    value, this patch adds the code to handle these error paths.
    
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4f03e063a55453d0bfc86750ae4829ec86e091e7
Author: Artemy Kovalyov <artemyko@mellanox.com>
Date:   Sun Nov 25 20:34:26 2018 +0200

    IB/mlx5: Fix page fault handling for MW
    
    [ Upstream commit 75b7b86bdb0df37e08e44b6c1f99010967f81944 ]
    
    Memory windows are implemented with an indirect MKey, when a page fault
    event comes for a MW Mkey we need to find the MR at the end of the list of
    the indirect MKeys by iterating on all items from the first to the last.
    
    The offset calculated during this process has to be zeroed after the first
    iteration or the next iteration will start from a wrong address, resulting
    incorrect ODP faulting behavior.
    
    Fixes: db570d7deafb ("IB/mlx5: Add ODP support to MW")
    Signed-off-by: Artemy Kovalyov <artemyko@mellanox.com>
    Signed-off-by: Moni Shoua <monis@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9838090d9859bb6f01a35a7f10d3f88349569ade
Author: Alin Nastac <alin.nastac@gmail.com>
Date:   Wed Nov 21 14:00:30 2018 +0100

    netfilter: ipv6: Preserve link scope traffic original oif
    
    [ Upstream commit 508b09046c0f21678652fb66fd1e9959d55591d2 ]
    
    When ip6_route_me_harder is invoked, it resets outgoing interface of:
      - link-local scoped packets sent by neighbor discovery
      - multicast packets sent by MLD host
      - multicast packets send by MLD proxy daemon that sets outgoing
        interface through IPV6_PKTINFO ipi6_ifindex
    
    Link-local and multicast packets must keep their original oif after
    ip6_route_me_harder is called.
    
    Signed-off-by: Alin Nastac <alin.nastac@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bf6f1276768f31bdd00c9d5f50cff4c26330a101
Author: Christian Hewitt <christianshewitt@gmail.com>
Date:   Wed Nov 21 13:39:29 2018 +0400

    drm/meson: add support for 1080p25 mode
    
    [ Upstream commit 31e1ab494559fb46de304cc6c2aed1528f94b298 ]
    
    This essential mode for PAL users is missing, so add it.
    
    Fixes: 335e3713afb87 ("drm/meson: Add support for HDMI venc modes and settings")
    Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
    Acked-by: Neil Armstrong <narmstrong@baylibre.com>
    Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/1542793169-13008-1-git-send-email-christianshewitt@gmail.com
    Signed-off-by: Sean Paul <seanpaul@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5dda1e7d7ce4afe233d2c2e647634d2f0fd99f9e
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Mon Nov 26 12:47:46 2018 +0300

    thunderbolt: Prevent root port runtime suspend during NVM upgrade
    
    [ Upstream commit 1830b6eeda1fed42d85f2388f79c926331a9b2d0 ]
    
    During NVM upgrade process the host router is hot-removed for a short
    while. During this time it is possible that the root port is moved into
    D3cold which would be fine if the root port could trigger PME on itself.
    However, many systems actually do not implement it so what happens is
    that the root port goes into D3cold and never wakes up unless userspace
    does PCI config space access, such as running 'lscpi'.
    
    For this reason we explicitly prevent the root port from runtime
    suspending during NVM upgrade.
    
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9ca88f3c4cb5eb6983aaf7492f78e467c0e123e1
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Sun Nov 25 00:17:08 2018 +0200

    USB: omap_udc: fix rejection of out transfers when DMA is used
    
    [ Upstream commit 069caf5950dfa75d0526cd89c439ff9d9d3136d8 ]
    
    Commit 387f869d2579 ("usb: gadget: u_ether: conditionally align
    transfer size") started aligning transfer size only if requested,
    breaking omap_udc DMA mode. Set quirk_ep_out_aligned_size to restore
    the old behaviour.
    
    Fixes: 387f869d2579 ("usb: gadget: u_ether: conditionally align transfer size")
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b58128138f06b3732621da378a0a4c4a9f197e8e
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Sun Nov 25 00:17:07 2018 +0200

    USB: omap_udc: fix USB gadget functionality on Palm Tungsten E
    
    [ Upstream commit 2c2322fbcab8102b8cadc09d66714700a2da42c2 ]
    
    On Palm TE nothing happens when you try to use gadget drivers and plug
    the USB cable. Fix by adding the board to the vbus sense quirk list.
    
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 634395d20d7d1263fb702b9f89deb10c5a41b975
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Sun Nov 25 00:17:06 2018 +0200

    USB: omap_udc: fix omap_udc_start() on 15xx machines
    
    [ Upstream commit 6ca6695f576b8453fe68865e84d25946d63b10ad ]
    
    On OMAP 15xx machines there are no transceivers, and omap_udc_start()
    always fails as it forgot to adjust the default return value.
    
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 27b61cbaa809c3d12c989fa24a1fa042624c05d7
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Sun Nov 25 00:17:05 2018 +0200

    USB: omap_udc: fix crashes on probe error and module removal
    
    [ Upstream commit 99f700366fcea1aa2fa3c49c99f371670c3c62f8 ]
    
    We currently crash if usb_add_gadget_udc_release() fails, since the
    udc->done is not initialized until in the remove function.
    Furthermore, on module removal the udc data is accessed although
    the release function is already triggered by usb_del_gadget_udc()
    early in the function.
    
    Fix by rewriting the release and remove functions, basically moving
    all the cleanup into the release function, and doing the completion
    only in the module removal case.
    
    The patch fixes omap_udc module probe with a failing gadged, and also
    allows the removal of omap_udc. Tested by running "modprobe omap_udc;
    modprobe -r omap_udc" in a loop.
    
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 66d73a4ef37e7b95d76ce12ff7fa55430b28782c
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Sun Nov 25 00:17:04 2018 +0200

    USB: omap_udc: use devm_request_irq()
    
    [ Upstream commit 286afdde1640d8ea8916a0f05e811441fbbf4b9d ]
    
    The current code fails to release the third irq on the error path
    (observed by reading the code), and we get also multiple WARNs with
    failing gadget drivers due to duplicate IRQ releases. Fix by using
    devm_request_irq().
    
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 28ad9091e186786f735d2dc63d80aafd6949b337
Author: Xin Long <lucien.xin@gmail.com>
Date:   Thu Nov 15 15:14:30 2018 +0800

    ipvs: call ip_vs_dst_notifier earlier than ipv6_dev_notf
    
    [ Upstream commit 2a31e4bd9ad255ee40809b5c798c4b1c2b09703b ]
    
    ip_vs_dst_event is supposed to clean up all dst used in ipvs'
    destinations when a net dev is going down. But it works only
    when the dst's dev is the same as the dev from the event.
    
    Now with the same priority but late registration,
    ip_vs_dst_notifier is always called later than ipv6_dev_notf
    where the dst's dev is set to lo for NETDEV_DOWN event.
    
    As the dst's dev lo is not the same as the dev from the event
    in ip_vs_dst_event, ip_vs_dst_notifier doesn't actually work.
    Also as these dst have to wait for dest_trash_timer to clean
    them up. It would cause some non-permanent kernel warnings:
    
      unregister_netdevice: waiting for br0 to become free. Usage count = 3
    
    To fix it, call ip_vs_dst_notifier earlier than ipv6_dev_notf
    by increasing its priority to ADDRCONF_NOTIFY_PRIORITY + 5.
    
    Note that for ipv4 route fib_netdev_notifier doesn't set dst's
    dev to lo in NETDEV_DOWN event, so this fix is only needed when
    IP_VS_IPV6 is defined.
    
    Fixes: 7a4f0761fce3 ("IPVS: init and cleanup restructuring")
    Reported-by: Li Shuang <shuali@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Julian Anastasov <ja@ssi.bg>
    Acked-by: Simon Horman <horms@verge.net.au>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2aad202fcd4cc9134f1b68b66220f077c7732261
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Aug 14 00:37:18 2018 +0200

    fsi: master-ast-cf: select GENERIC_ALLOCATOR
    
    [ Upstream commit 64999fa7aa2c076ec6d05aee481f11f5296ceb8c ]
    
    In randconfig builds without CONFIG_GENERIC_ALLOCATOR, this driver
    fails to link:
    
    ERROR: "gen_pool_alloc_algo" [drivers/fsi/fsi-master-ast-cf.ko] undefined!
    ERROR: "gen_pool_fixed_alloc" [drivers/fsi/fsi-master-ast-cf.ko] undefined!
    ERROR: "of_gen_pool_get" [drivers/fsi/fsi-master-ast-cf.ko] undefined!
    ERROR: "gen_pool_free" [drivers/fsi/fsi-master-ast-cf.ko] undefined!
    
    Select the dependency as all other users do.
    
    Fixes: 6a794a27daca ("fsi: master-ast-cf: Add new FSI master using Aspeed ColdFire")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6bfebedaa8100b20854fd09820143a3dd5d6539c
Author: Martynas Pumputis <m@lambda.lt>
Date:   Fri Nov 23 17:43:26 2018 +0100

    bpf: fix check of allowed specifiers in bpf_trace_printk
    
    [ Upstream commit 1efb6ee3edea57f57f9fb05dba8dcb3f7333f61f ]
    
    A format string consisting of "%p" or "%s" followed by an invalid
    specifier (e.g. "%p%\n" or "%s%") could pass the check which
    would make format_decode (lib/vsprintf.c) to warn.
    
    Fixes: 9c959c863f82 ("tracing: Allow BPF programs to call bpf_trace_printk()")
    Reported-by: syzbot+1ec5c5ec949c4adaa0c4@syzkaller.appspotmail.com
    Signed-off-by: Martynas Pumputis <m@lambda.lt>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4c7d50c23a88f3e655bf241c4be67d6716fa87a6
Author: Yixian Liu <liuyixian@huawei.com>
Date:   Fri Nov 23 15:46:07 2018 +0800

    RDMA/hns: Bugfix pbl configuration for rereg mr
    
    [ Upstream commit ca088320a02537f36c243ac21794525d8eabb3bd ]
    
    Current hns driver assigned the first two PBL page addresses from previous
    registered MR to the hardware when reregister MR changing the memory
    locations occurred. This will lead to PBL addressing error as the PBL has
    already been released. This patch fixes this wrong assignment by using the
    page address from new allocated PBL.
    
    Fixes: a2c80b7b4119 ("RDMA/hns: Add rereg mr support for hip08")
    Signed-off-by: Yixian Liu <liuyixian@huawei.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ad374d10b78e3af930119d9b381e9578c41d986f
Author: Pan Bian <bianpan2016@163.com>
Date:   Fri Nov 23 15:56:33 2018 +0800

    exportfs: do not read dentry after free
    
    [ Upstream commit 2084ac6c505a58f7efdec13eba633c6aaa085ca5 ]
    
    The function dentry_connected calls dput(dentry) to drop the previously
    acquired reference to dentry. In this case, dentry can be released.
    After that, IS_ROOT(dentry) checks the condition
    (dentry == dentry->d_parent), which may result in a use-after-free bug.
    This patch directly compares dentry with its parent obtained before
    dropping the reference.
    
    Fixes: a056cc8934c("exportfs: stop retrying once we race with
    rename/remove")
    
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0aeda30045b6b979655f7992f100e29adb583484
Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
Date:   Wed Nov 14 13:06:23 2018 +0200

    ASoC: omap-dmic: Add pm_qos handling to avoid overruns with CPU_IDLE
    
    [ Upstream commit ffdcc3638c58d55a6fa68b6e5dfd4fb4109652eb ]
    
    We need to block sleep states which would require longer time to leave than
    the time the DMA must react to the DMA request in order to keep the FIFO
    serviced without overrun.
    
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Acked-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 38f3a0f0105235567101fea3020cbabc23ea0733
Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
Date:   Wed Nov 14 13:06:22 2018 +0200

    ASoC: omap-mcpdm: Add pm_qos handling to avoid under/overruns with CPU_IDLE
    
    [ Upstream commit 373a500e34aea97971c9d71e45edad458d3da98f ]
    
    We need to block sleep states which would require longer time to leave than
    the time the DMA must react to the DMA request in order to keep the FIFO
    serviced without under of overrun.
    
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Acked-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit abf7201316a357adf3ef64e70f1599c52edaf59e
Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
Date:   Wed Nov 14 13:06:21 2018 +0200

    ASoC: omap-mcbsp: Fix latency value calculation for pm_qos
    
    [ Upstream commit dd2f52d8991af9fe0928d59ec502ba52be7bc38d ]
    
    The latency number is in usec for the pm_qos. Correct the calculation to
    give us the time in usec
    
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Acked-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1f1aedd6b19a1e07c3d830842e36258fb9d47b4d
Author: Jakub Kicinski <jakub.kicinski@netronome.com>
Date:   Wed Nov 21 13:53:17 2018 -0800

    tools: bpftool: fix potential NULL pointer dereference in do_load
    
    [ Upstream commit dde7011a824cfa815b03f853ec985ff46b740939 ]
    
    This patch fixes a possible null pointer dereference in
    do_load, detected by the semantic patch deref_null.cocci,
    with the following warning:
    
    ./tools/bpf/bpftool/prog.c:1021:23-25: ERROR: map_replace is NULL but dereferenced.
    
    The following code has potential null pointer references:
    881             map_replace = reallocarray(map_replace, old_map_fds + 1,
    882                                        sizeof(*map_replace));
    883             if (!map_replace) {
    884                     p_err("mem alloc failed");
    885                     goto err_free_reuse_maps;
    886             }
    
    ...
    1019 err_free_reuse_maps:
    1020         for (i = 0; i < old_map_fds; i++)
    1021                 close(map_replace[i].fd);
    1022         free(map_replace);
    
    Fixes: 3ff5a4dc5d89 ("tools: bpftool: allow reuse of maps with bpftool prog load")
    Co-developed-by: Wen Yang <wen.yang99@zte.com.cn>
    Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
    Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8653ffc34cee4e531aeb2338da90eeea9071eb6c
Author: Kamal Heib <kamalheib1@gmail.com>
Date:   Thu Nov 15 09:49:38 2018 -0800

    RDMA/rdmavt: Fix rvt_create_ah function signature
    
    [ Upstream commit 4f32fb921b153ae9ea280e02a3e91509fffc03d3 ]
    
    rdmavt uses a crazy system that looses the type checking when assinging
    functions to struct ib_device function pointers. Because of this the
    signature to this function was not changed when the below commit revised
    things.
    
    Fix the signature so we are not calling a function pointer with a
    mismatched signature.
    
    Fixes: 477864c8fcd9 ("IB/core: Let create_ah return extended response to user")
    Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
    Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 59315d0ca4fa4dde5e930f10a81326bf618c82c0
Author: Selvin Xavier <selvin.xavier@broadcom.com>
Date:   Wed Nov 21 00:05:01 2018 -0800

    RDMA/bnxt_re: Avoid accessing the device structure after it is freed
    
    [ Upstream commit a6c66d6a08b88cc10aca9d3f65cfae31e7652a99 ]
    
    When bnxt_re_ib_reg returns failure, the device structure gets
    freed. Driver tries to access the device pointer
    after it is freed.
    
    [ 4871.034744] Failed to register with netedev: 0xffffffa1
    [ 4871.034765] infiniband (null): Failed to register with IB: 0xffffffea
    [ 4871.046430] ==================================================================
    [ 4871.046437] BUG: KASAN: use-after-free in bnxt_re_task+0x63/0x180 [bnxt_re]
    [ 4871.046439] Write of size 4 at addr ffff880fa8406f48 by task kworker/u48:2/17813
    
    [ 4871.046443] CPU: 20 PID: 17813 Comm: kworker/u48:2 Kdump: loaded Tainted: G B OE  4.20.0-rc1+ #42
    [ 4871.046444] Hardware name: Dell Inc. PowerEdge R730/0599V5, BIOS 1.0.4 08/28/2014
    [ 4871.046447] Workqueue: bnxt_re bnxt_re_task [bnxt_re]
    [ 4871.046449] Call Trace:
    [ 4871.046454]  dump_stack+0x91/0xeb
    [ 4871.046458]  print_address_description+0x6a/0x2a0
    [ 4871.046461]  kasan_report+0x176/0x2d0
    [ 4871.046463]  ? bnxt_re_task+0x63/0x180 [bnxt_re]
    [ 4871.046466]  bnxt_re_task+0x63/0x180 [bnxt_re]
    [ 4871.046470]  process_one_work+0x216/0x5b0
    [ 4871.046471]  ? process_one_work+0x189/0x5b0
    [ 4871.046475]  worker_thread+0x4e/0x3d0
    [ 4871.046479]  kthread+0x10e/0x140
    [ 4871.046480]  ? process_one_work+0x5b0/0x5b0
    [ 4871.046482]  ? kthread_stop+0x220/0x220
    [ 4871.046486]  ret_from_fork+0x3a/0x50
    
    [ 4871.046492] The buggy address belongs to the page:
    [ 4871.046494] page:ffffea003ea10180 count:0 mapcount:0 mapping:0000000000000000 index:0x0
    [ 4871.046495] flags: 0x57ffffc0000000()
    [ 4871.046498] raw: 0057ffffc0000000 0000000000000000 ffffea003ea10188 0000000000000000
    [ 4871.046500] raw: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000
    [ 4871.046501] page dumped because: kasan: bad access detected
    
    Avoid accessing the device structure once it is freed.
    
    Fixes: 497158aa5f52 ("RDMA/bnxt_re: Fix the ib_reg failure cleanup")
    Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f4515855b7a1c2edf674e0f35b0f22abc9ed2165
Author: Selvin Xavier <selvin.xavier@broadcom.com>
Date:   Wed Nov 21 00:05:00 2018 -0800

    RDMA/bnxt_re: Fix system hang when registration with L2 driver fails
    
    [ Upstream commit 3c4b1419c33c2417836a63f8126834ee36968321 ]
    
    Driver doesn't release rtnl lock if registration with
    L2 driver (bnxt_re_register_netdev) fais and this causes
    hang while requesting for the next lock.
    
    [  371.635416] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    [  371.635417] kworker/u48:1   D    0   634      2 0x80000000
    [  371.635423] Workqueue: bnxt_re bnxt_re_task [bnxt_re]
    [  371.635424] Call Trace:
    [  371.635426]  ? __schedule+0x36b/0xbd0
    [  371.635429]  schedule+0x39/0x90
    [  371.635430]  schedule_preempt_disabled+0x11/0x20
    [  371.635431]  __mutex_lock+0x45b/0x9c0
    [  371.635433]  ? __mutex_lock+0x16d/0x9c0
    [  371.635435]  ? bnxt_re_ib_reg+0x2b/0xb30 [bnxt_re]
    [  371.635438]  ? wake_up_klogd+0x37/0x40
    [  371.635442]  bnxt_re_ib_reg+0x2b/0xb30 [bnxt_re]
    [  371.635447]  bnxt_re_task+0xfd/0x180 [bnxt_re]
    [  371.635449]  process_one_work+0x216/0x5b0
    [  371.635450]  ? process_one_work+0x189/0x5b0
    [  371.635453]  worker_thread+0x4e/0x3d0
    [  371.635455]  kthread+0x10e/0x140
    [  371.635456]  ? process_one_work+0x5b0/0x5b0
    [  371.635458]  ? kthread_stop+0x220/0x220
    [  371.635460]  ret_from_fork+0x3a/0x50
    [  371.635477] INFO: task NetworkManager:1228 blocked for more than 120 seconds.
    [  371.635478]       Tainted: G    B      OE     4.20.0-rc1+ #42
    [  371.635479] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    
    Release the rtnl_lock correctly in the failure path.
    
    Fixes: de5c95d0f518 ("RDMA/bnxt_re: Fix system crash during RDMA resource initialization")
    Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5a49ef9832e599d2fba7fae80049067cd7c5950f
Author: Parav Pandit <parav@mellanox.com>
Date:   Mon Nov 19 09:58:24 2018 +0200

    RDMA/core: Add GIDs while changing MAC addr only for registered ndev
    
    [ Upstream commit d52ef88a9f4be523425730da3239cf87bee936da ]
    
    Currently when MAC address is changed, regardless of the netdev reg_state,
    GID entries are removed and added to reflect the new MAC address and new
    default GID entries.
    
    When a bonding device is used and the underlying PCI device is removed
    several netdevice events are generated. Two events of the interest are
    CHANGEADDR and UNREGISTER event on lower(slave) netdevice of the bond
    netdevice.
    
    Sometimes CHANGEADDR event is generated when netdev state is
    UNREGISTERING (after UNREGISTER event is generated). In this scenario, GID
    entries for default GIDs are added and never deleted because GID entries
    are deleted only when netdev state is < UNREGISTERED.
    
    This leads to non zero reference count on the netdevice. Due to this, PCI
    device unbind operation is getting stuck.
    
    To avoid it, when changing mac address, add GID entries only if netdev is
    in REGISTERED state.
    
    Fixes: 03db3a2d81e6 ("IB/core: Add RoCE GID table management")
    Signed-off-by: Parav Pandit <parav@mellanox.com>
    Reviewed-by: Mark Bloch <markb@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7c736fee5a5d9ad2ff520b9c367e41a7819b7800
Author: Majd Dibbiny <majd@mellanox.com>
Date:   Mon Nov 5 08:07:37 2018 +0200

    RDMA/mlx5: Fix fence type for IB_WR_LOCAL_INV WR
    
    [ Upstream commit 074fca3a18e7e1e0d4d7dcc9d7badc43b90232f4 ]
    
    Currently, for IB_WR_LOCAL_INV WR, when the next fence is None, the
    current fence will be SMALL instead of Normal Fence.
    
    Without this patch krping doesn't work on CX-5 devices and throws
    following error:
    
    The error messages are from CX5 driver are: (from server side)
    [ 710.434014] mlx5_0:dump_cqe:278:(pid 2712): dump error cqe
    [ 710.434016] 00000000 00000000 00000000 00000000
    [ 710.434016] 00000000 00000000 00000000 00000000
    [ 710.434017] 00000000 00000000 00000000 00000000
    [ 710.434018] 00000000 93003204 100000b8 000524d2
    [ 710.434019] krping: cq completion failed with wr_id 0 status 4 opcode 128 vender_err 32
    
    Fixed the logic to set the correct fence type.
    
    Fixes: 6e8484c5cf07 ("RDMA/mlx5: set UMR wqe fence according to HCA cap")
    Signed-off-by: Majd Dibbiny <majd@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 91f6a9aa7952ba5d93a06c4deea396dfc1f0f4a2
Author: Robbie Ko <robbieko@synology.com>
Date:   Wed Nov 14 18:32:37 2018 +0000

    Btrfs: send, fix infinite loop due to directory rename dependencies
    
    [ Upstream commit a4390aee72713d9e73f1132bcdeb17d72fbbf974 ]
    
    When doing an incremental send, due to the need of delaying directory move
    (rename) operations we can end up in infinite loop at
    apply_children_dir_moves().
    
    An example scenario that triggers this problem is described below, where
    directory names correspond to the numbers of their respective inodes.
    
    Parent snapshot:
    
     .
     |--- 261/
           |--- 271/
                 |--- 266/
                       |--- 259/
                       |--- 260/
                       |     |--- 267
                       |
                       |--- 264/
                       |     |--- 258/
                       |           |--- 257/
                       |
                       |--- 265/
                       |--- 268/
                       |--- 269/
                       |     |--- 262/
                       |
                       |--- 270/
                       |--- 272/
                       |     |--- 263/
                       |     |--- 275/
                       |
                       |--- 274/
                             |--- 273/
    
    Send snapshot:
    
     .
     |-- 275/
          |-- 274/
               |-- 273/
                    |-- 262/
                         |-- 269/
                              |-- 258/
                                   |-- 271/
                                        |-- 268/
                                             |-- 267/
                                                  |-- 270/
                                                       |-- 259/
                                                       |    |-- 265/
                                                       |
                                                       |-- 272/
                                                            |-- 257/
                                                                 |-- 260/
                                                                 |-- 264/
                                                                      |-- 263/
                                                                           |-- 261/
                                                                                |-- 266/
    
    When processing inode 257 we delay its move (rename) operation because its
    new parent in the send snapshot, inode 272, was not yet processed. Then
    when processing inode 272, we delay the move operation for that inode
    because inode 274 is its ancestor in the send snapshot. Finally we delay
    the move operation for inode 274 when processing it because inode 275 is
    its new parent in the send snapshot and was not yet moved.
    
    When finishing processing inode 275, we start to do the move operations
    that were previously delayed (at apply_children_dir_moves()), resulting in
    the following iterations:
    
    1) We issue the move operation for inode 274;
    
    2) Because inode 262 depended on the move operation of inode 274 (it was
       delayed because 274 is its ancestor in the send snapshot), we issue the
       move operation for inode 262;
    
    3) We issue the move operation for inode 272, because it was delayed by
       inode 274 too (ancestor of 272 in the send snapshot);
    
    4) We issue the move operation for inode 269 (it was delayed by 262);
    
    5) We issue the move operation for inode 257 (it was delayed by 272);
    
    6) We issue the move operation for inode 260 (it was delayed by 272);
    
    7) We issue the move operation for inode 258 (it was delayed by 269);
    
    8) We issue the move operation for inode 264 (it was delayed by 257);
    
    9) We issue the move operation for inode 271 (it was delayed by 258);
    
    10) We issue the move operation for inode 263 (it was delayed by 264);
    
    11) We issue the move operation for inode 268 (it was delayed by 271);
    
    12) We verify if we can issue the move operation for inode 270 (it was
        delayed by 271). We detect a path loop in the current state, because
        inode 267 needs to be moved first before we can issue the move
        operation for inode 270. So we delay again the move operation for
        inode 270, this time we will attempt to do it after inode 267 is
        moved;
    
    13) We issue the move operation for inode 261 (it was delayed by 263);
    
    14) We verify if we can issue the move operation for inode 266 (it was
        delayed by 263). We detect a path loop in the current state, because
        inode 270 needs to be moved first before we can issue the move
        operation for inode 266. So we delay again the move operation for
        inode 266, this time we will attempt to do it after inode 270 is
        moved (its move operation was delayed in step 12);
    
    15) We issue the move operation for inode 267 (it was delayed by 268);
    
    16) We verify if we can issue the move operation for inode 266 (it was
        delayed by 270). We detect a path loop in the current state, because
        inode 270 needs to be moved first before we can issue the move
        operation for inode 266. So we delay again the move operation for
        inode 266, this time we will attempt to do it after inode 270 is
        moved (its move operation was delayed in step 12). So here we added
        again the same delayed move operation that we added in step 14;
    
    17) We attempt again to see if we can issue the move operation for inode
        266, and as in step 16, we realize we can not due to a path loop in
        the current state due to a dependency on inode 270. Again we delay
        inode's 266 rename to happen after inode's 270 move operation, adding
        the same dependency to the empty stack that we did in steps 14 and 16.
        The next iteration will pick the same move dependency on the stack
        (the only entry) and realize again there is still a path loop and then
        again the same dependency to the stack, over and over, resulting in
        an infinite loop.
    
    So fix this by preventing adding the same move dependency entries to the
    stack by removing each pending move record from the red black tree of
    pending moves. This way the next call to get_pending_dir_moves() will
    not return anything for the current parent inode.
    
    A test case for fstests, with this reproducer, follows soon.
    
    Signed-off-by: Robbie Ko <robbieko@synology.com>
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    [Wrote changelog with example and more clear explanation]
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b3159470aa8f6a5dd8227a8be557e23018884d4b
Author: Romain Izard <romain.izard.pro@gmail.com>
Date:   Tue Nov 20 17:57:37 2018 +0100

    ARM: dts: at91: sama5d2: use the divided clock for SMC
    
    [ Upstream commit 4ab7ca092c3c7ac8b16aa28eba723a8868f82f14 ]
    
    The SAMA5D2 is different from SAMA5D3 and SAMA5D4, as there are two
    different clocks for the peripherals in the SoC. The Static Memory
    controller is connected to the divided master clock.
    
    Unfortunately, the device tree does not correctly show this and uses the
    master clock directly. This clock is then used by the code for the NAND
    controller to calculate the timings for the controller, and we end up with
    slow NAND Flash access.
    
    Fix the device tree, and the performance of Flash access is improved.
    
    Signed-off-by: Romain Izard <romain.izard.pro@gmail.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4724b50f9e093cfa9bea7caa5f25f00755bcc568
Author: Manu Gautam <mgautam@codeaurora.org>
Date:   Tue Oct 16 12:52:07 2018 +0530

    phy: qcom-qusb2: Fix HSTX_TRIM tuning with fused value for SDM845
    
    [ Upstream commit c88520db18ba0b9a41326c3b8680e7c09eb4c381 ]
    
    Tune1 register on sdm845 is used to update HSTX_TRIM with fused
    setting. Enable same by specifying update_tune1_with_efuse flag
    for sdm845, otherwise driver ends up programming tune2 register.
    
    Fixes: ef17f6e212ca ("phy: qcom-qusb2: Add QUSB2 PHYs support for sdm845")
    Signed-off-by: Manu Gautam <mgautam@codeaurora.org>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Acked-by: Vivek Gautam <vivek.gautam@codeaurora.org>
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d801a3eff5541321abd235243c8237b34d05ddf5
Author: Manu Gautam <mgautam@codeaurora.org>
Date:   Tue Oct 16 12:52:06 2018 +0530

    phy: qcom-qusb2: Use HSTX_TRIM fused value as is
    
    [ Upstream commit 6e34d358b24ffc40764eb3681164c79091765429 ]
    
    Fix HSTX_TRIM tuning logic which instead of using fused value
    as HSTX_TRIM, incorrectly performs bitwise OR operation with
    existing default value.
    
    Fixes: ca04d9d3e1b1 ("phy: qcom-qusb2: New driver for QUSB2 PHY on Qcom chips")
    Signed-off-by: Manu Gautam <mgautam@codeaurora.org>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Acked-by: Vivek Gautam <vivek.gautam@codeaurora.org>
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3d2d2ba0c296d77f43b0a48033ded570fb3a0131
Author: Artem Savkov <asavkov@redhat.com>
Date:   Tue Nov 20 11:52:16 2018 -0600

    objtool: Fix segfault in .cold detection with -ffunction-sections
    
    [ Upstream commit 22566c1603030f0a036ad564634b064ad1a55db2 ]
    
    Because find_symbol_by_name() traverses the same lists as
    read_symbols(), changing sym->name in place without copying it affects
    the result of find_symbol_by_name().  In the case where a ".cold"
    function precedes its parent in sec->symbol_list, it can result in a
    function being considered a parent of itself. This leads to function
    length being set to 0 and other consequent side-effects including a
    segfault in add_switch_table().  The effects of this bug are only
    visible when building with -ffunction-sections in KCFLAGS.
    
    Fix by copying the search string instead of modifying it in place.
    
    Signed-off-by: Artem Savkov <asavkov@redhat.com>
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: 13810435b9a7 ("objtool: Support GCC 8's cold subfunctions")
    Link: http://lkml.kernel.org/r/910abd6b5a4945130fd44f787c24e07b9e07c8da.1542736240.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 79cd7b0e114dbb3f7520bcc069c32db80c0a67e8
Author: Artem Savkov <asavkov@redhat.com>
Date:   Tue Nov 20 11:52:15 2018 -0600

    objtool: Fix double-free in .cold detection error path
    
    [ Upstream commit 0b9301fb632f7111a3293a30cc5b20f1b82ed08d ]
    
    If read_symbols() fails during second list traversal (the one dealing
    with ".cold" subfunctions) it frees the symbol, but never deletes it
    from the list/hash_table resulting in symbol being freed again in
    elf_close(). Fix it by just returning an error, leaving cleanup to
    elf_close().
    
    Signed-off-by: Artem Savkov <asavkov@redhat.com>
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: 13810435b9a7 ("objtool: Support GCC 8's cold subfunctions")
    Link: http://lkml.kernel.org/r/beac5a9b7da9e8be90223459dcbe07766ae437dd.1542736240.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a8657e68242772354aeaa0ccd0f35f1bcf1cceaa
Author: Keyon Jie <yang.jie@linux.intel.com>
Date:   Fri Nov 16 18:47:04 2018 -0600

    ASoC: acpi: fix: continue searching when machine is ignored
    
    [ Upstream commit a3e620f8422832afd832ad5e20aa97d0c72bada8 ]
    
    The machine_quirk may return NULL which means the acpi entries should be
    skipped and search for next matched entry is needed, here add return
    check here and continue for NULL case.
    
    Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2a031cab71cd9909fa659c96b6221d1fe33ad87f
Author: Trent Piepho <tpiepho@impinj.com>
Date:   Mon Nov 5 18:11:36 2018 +0000

    PCI: imx6: Fix link training status detection in link up check
    
    [ Upstream commit 68bc10bf992180f269816ff3d22eb30383138577 ]
    
    This bug was introduced in the interaction for two commits on either
    branch of the merge commit 562df5c8521e ("Merge branch
    'pci/host-designware' into next").
    
    Commit 4d107d3b5a68 ("PCI: imx6: Move link up check into
    imx6_pcie_wait_for_link()"), changed imx6_pcie_wait_for_link() to poll
    the link status register directly, checking for link up and not
    training, and made imx6_pcie_link_up() only check the link up bit (once,
    not a polling loop).
    
    While commit 886bc5ceb5cc ("PCI: designware: Add generic
    dw_pcie_wait_for_link()"), replaced the loop in
    imx6_pcie_wait_for_link() with a call to a new dwc core function, which
    polled imx6_pcie_link_up(), which still checked both link up and not
    training in a loop.
    
    When these two commits were merged, the version of
    imx6_pcie_wait_for_link() from 886bc5ceb5cc was kept, which eliminated
    the link training check placed there by 4d107d3b5a68. However, the
    version of imx6_pcie_link_up() from 4d107d3b5a68 was kept, which
    eliminated the link training check that had been there and was moved to
    imx6_pcie_wait_for_link().
    
    The result was the link training check got lost for the imx6 driver.
    
    Eliminate imx6_pcie_link_up() so that the default handler,
    dw_pcie_link_up(), is used instead. The default handler has the correct
    code, which checks for link up and also that it still is not training,
    fixing the regression.
    
    Fixes: 562df5c8521e ("Merge branch 'pci/host-designware' into next")
    Signed-off-by: Trent Piepho <tpiepho@impinj.com>
    [lorenzo.pieralisi@arm.com: rewrote the commit log]
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Joao Pinto <Joao.Pinto@synopsys.com>
    Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Cc: Richard Zhu <hongxing.zhu@nxp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 67707627c2f2ab3281c12b297cc72b313c33c646
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Thu Nov 1 18:00:01 2018 +0100

    perf tools: Restore proper cwd on return from mnt namespace
    
    [ Upstream commit b01c1f69c8660eaeab7d365cd570103c5c073a02 ]
    
    When reporting on 'record' server we try to retrieve/use the mnt
    namespace of the profiled tasks. We use following API with cookie to
    hold the return namespace, roughly:
    
      nsinfo__mountns_enter(struct nsinfo *nsi, struct nscookie *nc)
        setns(newns, 0);
      ...
      new ns related open..
      ...
      nsinfo__mountns_exit(struct nscookie *nc)
        setns(nc->oldns)
    
    Once finished we setns to old namespace, which also sets the current
    working directory (cwd) to "/", trashing the cwd we had.
    
    This is mostly fine, because we use absolute paths almost everywhere,
    but it screws up 'perf diff':
    
      # perf diff
      failed to open perf.data: No such file or directory  (try 'perf record' first)
      ...
    
    Adding the current working directory to be part of the cookie and
    restoring it in the nsinfo__mountns_exit call.
    
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Krister Johansen <kjlx@templeofstupid.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Fixes: 843ff37bb59e ("perf symbols: Find symbols in different mount namespace")
    Link: http://lkml.kernel.org/r/20181101170001.30019-1-jolsa@kernel.org
    [ No need to check for NULL args for free(), use zfree() for struct members ]
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f3ff2ac4169ec3aa5777a3c1dbb03fb63080cb4a
Author: Huacai Chen <chenhc@lemote.com>
Date:   Thu Nov 15 10:44:57 2018 +0800

    hwmon: (w83795) temp4_type has writable permission
    
    [ Upstream commit 09aaf6813cfca4c18034fda7a43e68763f34abb1 ]
    
    Both datasheet and comments of store_temp_mode() tell us that temp1~4_type
    is writable, so fix it.
    
    Signed-off-by: Yao Wang <wangyao@lemote.com>
    Signed-off-by: Huacai Chen <chenhc@lemote.com>
    Fixes: 39deb6993e7c (" hwmon: (w83795) Simplify temperature sensor type handling")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fb0fc90cc20fdd857d30f4fbfa6bceecc99c5451
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Fri Nov 16 21:32:35 2018 +0900

    netfilter: xt_hashlimit: fix a possible memory leak in htable_create()
    
    [ Upstream commit b4e955e9f372035361fbc6f07b21fe2cc6a5be4a ]
    
    In the htable_create(), hinfo is allocated by vmalloc()
    So that if error occurred, hinfo should be freed.
    
    Fixes: 11d5f15723c9 ("netfilter: xt_hashlimit: Create revision 2 to support higher pps rates")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit df66ef67c3344b767b3d1d8396d4a3e81942c4e9
Author: Jens Axboe <axboe@kernel.dk>
Date:   Sat Nov 17 07:43:42 2018 -0700

    aio: fix failure to put the file pointer
    
    [ Upstream commit 53fffe29a9e664a999dd3787e4428da8c30533e0 ]
    
    If the ioprio capability check fails, we return without putting
    the file pointer.
    
    Fixes: d9a08a9e616b ("fs: Add aio iopriority support")
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5689666aa13422264366940db51173a51f27002c
Author: Roman Gushchin <guroan@gmail.com>
Date:   Wed Nov 14 10:00:34 2018 -0800

    bpf: allocate local storage buffers using GFP_ATOMIC
    
    [ Upstream commit 569a933b03f3c48b392fe67c0086b3a6b9306b5a ]
    
    Naresh reported an issue with the non-atomic memory allocation of
    cgroup local storage buffers:
    
    [   73.047526] BUG: sleeping function called from invalid context at
    /srv/oe/build/tmp-rpb-glibc/work-shared/intel-corei7-64/kernel-source/mm/slab.h:421
    [   73.060915] in_atomic(): 1, irqs_disabled(): 0, pid: 3157, name: test_cgroup_sto
    [   73.068342] INFO: lockdep is turned off.
    [   73.072293] CPU: 2 PID: 3157 Comm: test_cgroup_sto Not tainted
    4.20.0-rc2-next-20181113 #1
    [   73.080548] Hardware name: Supermicro SYS-5019S-ML/X11SSH-F, BIOS
    2.0b 07/27/2017
    [   73.088018] Call Trace:
    [   73.090463]  dump_stack+0x70/0xa5
    [   73.093783]  ___might_sleep+0x152/0x240
    [   73.097619]  __might_sleep+0x4a/0x80
    [   73.101191]  __kmalloc_node+0x1cf/0x2f0
    [   73.105031]  ? cgroup_storage_update_elem+0x46/0x90
    [   73.109909]  cgroup_storage_update_elem+0x46/0x90
    
    cgroup_storage_update_elem() (as well as other update map update
    callbacks) is called with disabled preemption, so GFP_ATOMIC
    allocation should be used: e.g. alloc_htab_elem() in hashtab.c.
    
    Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Signed-off-by: Roman Gushchin <guro@fb.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0d4ff09997f32ea375b3e1bc512cd1c48c421756
Author: Vadim Pasternak <vadimp@mellanox.com>
Date:   Fri Nov 16 13:47:11 2018 +0000

    hwmon: (mlxreg-fan) Fix macros for tacho fault reading
    
    [ Upstream commit 243cfe3fb8978c7eec24511aba7dac98819ed896 ]
    
    Fix macros for tacometer fault reading.
    This fix is relevant for three Mellanox systems MQMB7, MSN37, MSN34,
    which are about to be released to the customers.
    At the moment, none of them is at customers sites.
    
    Fixes: 65afb4c8e7e4 ("hwmon: (mlxreg-fan) Add support for Mellanox FAN driver")
    Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 842aeeac335eaad26f8d3e9313b5254088026d2b
Author: Tony Lindgren <tony@atomide.com>
Date:   Thu Nov 15 15:59:39 2018 -0800

    spi: omap2-mcspi: Add missing suspend and resume calls
    
    [ Upstream commit 91b9deefedf4c35a01027ce38bed7299605026a3 ]
    
    I've been wondering still about omap2-mcspi related suspend and resume
    flakeyness and looks like we're missing calls to spi_master_suspend()
    and spi_master_resume(). Adding those and using pm_runtime_force_suspend()
    and pm_runtime_force_resume() makes things work for suspend and resume
    and allows us to stop using noirq suspend and resume.
    
    And while at it, let's use SET_SYSTEM_SLEEP_PM_OPS to simplify things
    further.
    
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fa3ceb3b59e5ab892accbb7590e9a3ac4bbb3b0d
Author: Tzung-Bi Shih <tzungbi@google.com>
Date:   Wed Nov 14 17:06:13 2018 +0800

    ASoC: dapm: Recalculate audio map forcely when card instantiated
    
    [ Upstream commit 882eab6c28d23a970ae73b7eb831b169a672d456 ]
    
    Audio map are possible in wrong state before card->instantiated has
    been set to true.  Imaging the following examples:
    
    time 1: at the beginning
    
      in:-1    in:-1    in:-1    in:-1
     out:-1   out:-1   out:-1   out:-1
     SIGGEN        A        B      Spk
    
    time 2: after someone called snd_soc_dapm_new_widgets()
    (e.g. create_fill_widget_route_map() in sound/soc/codecs/hdac_hdmi.c)
    
       in:1     in:0     in:0     in:0
      out:0    out:0    out:0    out:1
     SIGGEN        A        B      Spk
    
    time 3: routes added
    
       in:1     in:0     in:0     in:0
      out:0    out:0    out:0    out:1
     SIGGEN -----> A -----> B ---> Spk
    
    In the end, the path should be powered on but it did not.  At time 3,
    "in" of SIGGEN and "out" of Spk did not propagate to their neighbors
    because snd_soc_dapm_add_path() will not invalidate the paths if
    the card has not instantiated (i.e. card->instantiated is false).
    To correct the state of audio map, recalculate the whole map forcely.
    
    Signed-off-by: Tzung-Bi Shih <tzungbi@google.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit abbd01b7798788d1d3a5623238db6455c806fb63
Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
Date:   Wed Nov 14 14:58:20 2018 +0200

    ASoC: omap-abe-twl6040: Fix missing audio card caused by deferred probing
    
    [ Upstream commit 76836fd354922ebe4798a64fda01f8dc6a8b0984 ]
    
    The machine driver fails to probe in next-20181113 with:
    
    [    2.539093] omap-abe-twl6040 sound: ASoC: CODEC DAI twl6040-legacy not registered
    [    2.546630] omap-abe-twl6040 sound: devm_snd_soc_register_card() failed: -517
    ...
    [    3.693206] omap-abe-twl6040 sound: ASoC: Both platform name/of_node are set for TWL6040
    [    3.701446] omap-abe-twl6040 sound: ASoC: failed to init link TWL6040
    [    3.708007] omap-abe-twl6040 sound: devm_snd_soc_register_card() failed: -22
    [    3.715148] omap-abe-twl6040: probe of sound failed with error -22
    
    Bisect pointed to a merge commit:
    first bad commit: [0f688ab20a540aafa984c5dbd68a71debebf4d7f] Merge remote-tracking branch 'net-next/master'
    
    and a diff between a working kernel does not reveal anything which would
    explain the change in behavior.
    
    Further investigation showed that on the second try of loading fails
    because the dai_link->platform is no longer NULL and it might be pointing
    to uninitialized memory.
    
    The fix is to move the snd_soc_dai_link and snd_soc_card inside of the
    abe_twl6040 struct, which is dynamically allocated every time the driver
    probes.
    
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3ef0d19cd8156fe122041cb47b3f9fc50ad743b5
Author: Nicolin Chen <nicoleotsuka@gmail.com>
Date:   Tue Nov 13 19:48:54 2018 -0800

    hwmon: (ina2xx) Fix current value calculation
    
    [ Upstream commit 38cd989ee38c16388cde89db5b734f9d55b905f9 ]
    
    The current register (04h) has a sign bit at MSB. The comments
    for this calculation also mention that it's a signed register.
    
    However, the regval is unsigned type so result of calculation
    turns out to be an incorrect value when current is negative.
    
    This patch simply fixes this by adding a casting to s16.
    
    Fixes: 5d389b125186c ("hwmon: (ina2xx) Make calibration register value fixed")
    Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d70a6605fe94f59911caab1a25a70581e38a0c14
Author: Thomas Richter <tmricht@linux.ibm.com>
Date:   Tue Nov 13 15:38:22 2018 +0000

    s390/cpum_cf: Reject request for sampling in event initialization
    
    [ Upstream commit 613a41b0d16e617f46776a93b975a1eeea96417c ]
    
    On s390 command perf top fails
    [root@s35lp76 perf] # ./perf top -F100000  --stdio
       Error:
       cycles: PMU Hardware doesn't support sampling/overflow-interrupts.
            Try 'perf stat'
    [root@s35lp76 perf] #
    
    Using event -e rb0000 works as designed.  Event rb0000 is the event
    number of the sampling facility for basic sampling.
    
    During system start up the following PMUs are installed in the kernel's
    PMU list (from head to tail):
       cpum_cf --> s390 PMU counter facility device driver
       cpum_sf --> s390 PMU sampling facility device driver
       uprobe
       kprobe
       tracepoint
       task_clock
       cpu_clock
    
    Perf top executes following functions and calls perf_event_open(2) system
    call with different parameters many times:
    
    cmd_top
    --> __cmd_top
        --> perf_evlist__add_default
            --> __perf_evlist__add_default
                --> perf_evlist__new_cycles (creates event type:0 (HW)
                                            config 0 (CPU_CYCLES)
                    --> perf_event_attr__set_max_precise_ip
                        Uses perf_event_open(2) to detect correct
                        precise_ip level. Fails 3 times on s390 which is ok.
    
    Then functions cmd_top
    --> __cmd_top
        --> perf_top__start_counters
            -->perf_evlist__config
               --> perf_can_comm_exec
                   --> perf_probe_api
                       This functions test support for the following events:
                       "cycles:u", "instructions:u", "cpu-clock:u" using
                       --> perf_do_probe_api
                           --> perf_event_open_cloexec
                               Test the close on exec flag support with
                               perf_event_open(2).
                           perf_do_probe_api returns true if the event is
                           supported.
                           The function returns true because event cpu-clock is
                           supported by the PMU cpu_clock.
                           This is achieved by many calls to perf_event_open(2).
    
    Function perf_top__start_counters now calls perf_evsel__open() for every
    event, which is the default event cpu_cycles (config:0) and type HARDWARE
    (type:0) which a predfined frequence of 4000.
    
    Given the above order of the PMU list, the PMU cpum_cf gets called first
    and returns 0, which indicates support for this sampling. The event is
    fully allocated in the function perf_event_open (file kernel/event/core.c
    near line 10521 and the following check fails:
    
            event = perf_event_alloc(&attr, cpu, task, group_leader, NULL,
                                     NULL, NULL, cgroup_fd);
            if (IS_ERR(event)) {
                    err = PTR_ERR(event);
                    goto err_cred;
            }
    
            if (is_sampling_event(event)) {
                    if (event->pmu->capabilities & PERF_PMU_CAP_NO_INTERRUPT) {
                            err = -EOPNOTSUPP;
                            goto err_alloc;
                    }
            }
    
    The check for the interrupt capabilities fails and the system call
    perf_event_open() returns -EOPNOTSUPP (-95).
    
    Add a check to return -ENODEV when sampling is requested in PMU cpum_cf.
    This allows common kernel code in the perf_event_open() system call to
    test the next PMU in above list.
    
    Fixes: 97b1198fece0 (" "s390, perf: Use common PMU interrupt disabled code")
    Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
    Reviewed-by: Hendrik Brueckner <brueckner@linux.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2309636dc47438594358644f855d7cd9218c58e6
Author: Rohit kumar <rohitkr@codeaurora.org>
Date:   Thu Nov 8 19:11:40 2018 +0530

    ASoC: qcom: Set dai_link id to each dai_link
    
    [ Upstream commit 67fd1437d11620de8768b22fe20942e752ed52e9 ]
    
    Frontend dai_link id is used for closing ADM sessions.
    During concurrent usecase when one session is closed,
    it closes other ADM session associated with other usecase
    too. Dai_link->id should always point to Frontend dai id.
    Set cpu_dai id as dai_link id to fix the issue.
    
    Signed-off-by: Rohit kumar <rohitkr@codeaurora.org>
    Acked-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 88e8e3c710b1621f2d1854307078edc9bace65f3
Author: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date:   Fri Nov 9 13:39:23 2018 -0600

    ASoC: Intel: Power down links before turning off display audio power
    
    [ Upstream commit 4c10473d6ddf12ec124c9ff71a5d23bb5388478b ]
    
    On certain platforms, Display HDMI HDA codec was not going to sleep state
    after the use when links are powered down after turning off the display
    power. As per the HW recommendation, links are powered down before turning
    off the display power to ensure that the codec goes to sleep state.
    
    This patch was updated from an earlier version submitted upstream [1]
    which conflicted with the changes merged for HDaudio codec support
    with the Intel DSP.
    
    [1] https://patchwork.kernel.org/patch/10540213/
    
    Signed-off-by: Sriram Periyasamy <sriramx.periyasamy@intel.com>
    Signed-off-by: Sanyog Kale <sanyog.r.kale@intel.com>
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 737f3bb3e4be365707438421f25b3e28f1bdaf7a
Author: Richard Fitzgerald <rf@opensource.cirrus.com>
Date:   Mon Nov 12 13:36:38 2018 +0000

    ASoC: wm_adsp: Fix dma-unsafe read of scratch registers
    
    [ Upstream commit 20e00db2f59bdddf8a8e241473ef8be94631d3ae ]
    
    Stack memory isn't DMA-safe so it isn't safe to use either
    regmap_raw_read or regmap_bulk_read to read into stack memory.
    
    The two functions to read the scratch registers were using
    stack memory and regmap_raw_read. It's not worth allocating
    memory just for this trivial read, and it isn't time-critical.
    A simple regmap_read for each register is sufficient.
    
    Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e4777c2e40f0592214f25aa0320c4505746dfd07
Author: Katsuhiro Suzuki <katsuhiro@katsuster.net>
Date:   Sun Nov 11 00:18:44 2018 +0900

    ASoC: rockchip: add missing slave_config setting for I2S
    
    [ Upstream commit 16a8ee4c80b45984b6de1f90a49edcf336b7c621 ]
    
    This patch adds missing prepare_sleve_config that is needed for
    setup the DMA slave channel for I2S.
    
    Signed-off-by: Katsuhiro Suzuki <katsuhiro@katsuster.net>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dbc62bd3b05b772989de64421573f25552f5aead
Author: Stefan Wahren <stefan.wahren@i2se.com>
Date:   Sun Nov 11 13:01:11 2018 +0100

    hwmon: (raspberrypi) Fix initial notify
    
    [ Upstream commit 35fdc3902179366489a12cae4cb3ccc3b95f0afe ]
    
    In case an under-voltage happens before probing the driver wont
    write the critical warning into the kernel log. So don't init
    of last_throttled during probe and fix this issue.
    
    Fixes: 74d1e007915f ("hwmon: Add support for RPi voltage sensor")
    Reported-by: "Noralf Trønnes" <noralf@tronnes.org>
    Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 08cff35113e5ca6378b394a3566a4c7c86737bf2
Author: Nicolin Chen <nicoleotsuka@gmail.com>
Date:   Fri Nov 9 16:42:14 2018 -0800

    hwmon (ina2xx) Fix NULL id pointer in probe()
    
    [ Upstream commit 70df9ebbd82c794ddfbb49d45b337f18d5588dc2 ]
    
    When using DT configurations, the id pointer might turn out to
    be NULL. Then the driver encounters NULL pointer access:
    
      Unable to handle kernel read from unreadable memory at vaddr 00000018
      [...]
      PC is at ina2xx_probe+0x114/0x200
      LR is at ina2xx_probe+0x10c/0x200
      [...]
      Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
    
    The reason is that i2c core returns the id pointer by matching
    id_table with client->name, while the client->name is actually
    using the name from the first string in the DT compatible list,
    not the best one. So i2c core would fail to match the id_table
    if the best matched compatible string isn't the first one, and
    then would return a NULL id pointer.
    
    This probably should be fixed in i2c core. But it doesn't hurt
    to make the driver robust. So this patch fixes it by using the
    "chip" that's added to unify both DT and non-DT configurations.
    
    Additionally, since id pointer could be null, so as id->name:
      ina2xx 10-0047: power monitor (null) (Rshunt = 1000 uOhm)
      ina2xx 10-0048: power monitor (null) (Rshunt = 10000 uOhm)
    
    So this patch also fixes NULL name pointer, using client->name
    to play safe and to align with hwmon->name.
    
    Fixes: bd0ddd4d0883 ("hwmon: (ina2xx) Add OF device ID table")
    Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 61170596e1c0715519720947a9a3b8249a729101
Author: Eric Farman <farman@linux.ibm.com>
Date:   Fri Nov 9 03:39:29 2018 +0100

    s390/cio: Fix cleanup when unsupported IDA format is used
    
    [ Upstream commit b89e242eee8d4cd8261d8d821c62c5d1efc454d0 ]
    
    Direct returns from within a loop are rude, but it doesn't mean it gets
    to avoid releasing the memory acquired beforehand.
    
    Signed-off-by: Eric Farman <farman@linux.ibm.com>
    Message-Id: <20181109023937.96105-3-farman@linux.ibm.com>
    Reviewed-by: Farhan Ali <alifm@linux.ibm.com>
    Reviewed-by: Pierre Morel <pmorel@linux.ibm.com>
    Acked-by: Halil Pasic <pasic@linux.ibm.com>
    Signed-off-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a4f21114d83ec0abc311e71f11a0e05f670a0cac
Author: Eric Farman <farman@linux.ibm.com>
Date:   Fri Nov 9 03:39:28 2018 +0100

    s390/cio: Fix cleanup of pfn_array alloc failure
    
    [ Upstream commit 806212f91c874b24cf9eb4a9f180323671b6c5ed ]
    
    If pfn_array_alloc fails somehow, we need to release the pfn_array_table
    that was malloc'd earlier.
    
    Signed-off-by: Eric Farman <farman@linux.ibm.com>
    Message-Id: <20181109023937.96105-2-farman@linux.ibm.com>
    Acked-by: Halil Pasic <pasic@linux.ibm.com>
    Signed-off-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 00bac44c99910c12b5bfa6225f518cb93d57a741
Author: Florian Westphal <fw@strlen.de>
Date:   Mon Nov 12 22:43:45 2018 +0100

    netfilter: nf_tables: fix use-after-free when deleting compat expressions
    
    [ Upstream commit 29e3880109e357fdc607b4393f8308cef6af9413 ]
    
    nft_compat ops do not have static storage duration, unlike all other
    expressions.
    
    When nf_tables_expr_destroy() returns, expr->ops might have been
    free'd already, so we need to store next address before calling
    expression destructor.
    
    For same reason, we can't deref match pointer after nft_xt_put().
    
    This can be easily reproduced by adding msleep() before
    nft_match_destroy() returns.
    
    Fixes: 0ca743a55991 ("netfilter: nf_tables: add compatibility layer for x_tables")
    Reported-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e947f9aa9a61e92d1104f85262d08462751cc03e
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Fri Oct 19 00:27:57 2018 +0900

    netfilter: xt_RATEEST: remove netns exit routine
    
    [ Upstream commit 0fbcc5b568edab7d848b7c7fa66d44ffbd4133c0 ]
    
    xt_rateest_net_exit() was added to check whether rules are flushed
    successfully. but ->net_exit() callback is called earlier than
    ->destroy() callback.
    So that ->net_exit() callback can't check that.
    
    test commands:
       %ip netns add vm1
       %ip netns exec vm1 iptables -t mangle -I PREROUTING -p udp \
               --dport 1111 -j RATEEST --rateest-name ap \
               --rateest-interval 250ms --rateest-ewma 0.5s
       %ip netns del vm1
    
    splat looks like:
    [  668.813518] WARNING: CPU: 0 PID: 87 at net/netfilter/xt_RATEEST.c:210 xt_rateest_net_exit+0x210/0x340 [xt_RATEEST]
    [  668.813518] Modules linked in: xt_RATEEST xt_tcpudp iptable_mangle bpfilter ip_tables x_tables
    [  668.813518] CPU: 0 PID: 87 Comm: kworker/u4:2 Not tainted 4.19.0-rc7+ #21
    [  668.813518] Workqueue: netns cleanup_net
    [  668.813518] RIP: 0010:xt_rateest_net_exit+0x210/0x340 [xt_RATEEST]
    [  668.813518] Code: 00 48 8b 85 30 ff ff ff 4c 8b 23 80 38 00 0f 85 24 01 00 00 48 8b 85 30 ff ff ff 4d 85 e4 4c 89 a5 58 ff ff ff c6 00 f8 74 b2 <0f> 0b 48 83 c3 08 4c 39 f3 75 b0 48 b8 00 00 00 00 00 fc ff df 49
    [  668.813518] RSP: 0018:ffff8801156c73f8 EFLAGS: 00010282
    [  668.813518] RAX: ffffed0022ad8e85 RBX: ffff880118928e98 RCX: 5db8012a00000000
    [  668.813518] RDX: ffff8801156c7428 RSI: 00000000cb1d185f RDI: ffff880115663b74
    [  668.813518] RBP: ffff8801156c74d0 R08: ffff8801156633c0 R09: 1ffff100236440be
    [  668.813518] R10: 0000000000000001 R11: ffffed002367d852 R12: ffff880115142b08
    [  668.813518] R13: 1ffff10022ad8e81 R14: ffff880118928ea8 R15: dffffc0000000000
    [  668.813518] FS:  0000000000000000(0000) GS:ffff88011b200000(0000) knlGS:0000000000000000
    [  668.813518] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  668.813518] CR2: 0000563aa69f4f28 CR3: 0000000105a16000 CR4: 00000000001006f0
    [  668.813518] Call Trace:
    [  668.813518]  ? unregister_netdevice_many+0xe0/0xe0
    [  668.813518]  ? xt_rateest_net_init+0x2c0/0x2c0 [xt_RATEEST]
    [  668.813518]  ? default_device_exit+0x1ca/0x270
    [  668.813518]  ? remove_proc_entry+0x1cd/0x390
    [  668.813518]  ? dev_change_net_namespace+0xd00/0xd00
    [  668.813518]  ? __init_waitqueue_head+0x130/0x130
    [  668.813518]  ops_exit_list.isra.10+0x94/0x140
    [  668.813518]  cleanup_net+0x45b/0x900
    [  668.813518]  ? net_drop_ns+0x110/0x110
    [  668.813518]  ? swapgs_restore_regs_and_return_to_usermode+0x3c/0x80
    [  668.813518]  ? save_trace+0x300/0x300
    [  668.813518]  ? lock_acquire+0x196/0x470
    [  668.813518]  ? lock_acquire+0x196/0x470
    [  668.813518]  ? process_one_work+0xb60/0x1de0
    [  668.813518]  ? _raw_spin_unlock_irq+0x29/0x40
    [  668.813518]  ? _raw_spin_unlock_irq+0x29/0x40
    [  668.813518]  ? __lock_acquire+0x4500/0x4500
    [  668.813518]  ? __lock_is_held+0xb4/0x140
    [  668.813518]  process_one_work+0xc13/0x1de0
    [  668.813518]  ? pwq_dec_nr_in_flight+0x3c0/0x3c0
    [  668.813518]  ? set_load_weight+0x270/0x270
    [ ... ]
    
    Fixes: 3427b2ab63fa ("netfilter: make xt_rateest hash table per net")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f8328abb878207cbb5e5a2159a07341fa707365f
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Mon Nov 12 14:00:12 2018 +0100

    perf tools: Fix crash on synthesizing the unit
    
    [ Upstream commit fb50c09e923870a358d68b0d58891bd145b8d7c7 ]
    
    Adam reported a record command crash for simple session like:
    
      $ perf record -e cpu-clock ls
    
    with following backtrace:
    
      Program received signal SIGSEGV, Segmentation fault.
      3543            ev = event_update_event__new(size + 1, PERF_EVENT_UPDATE__UNIT, evsel->id[0]);
      (gdb) bt
      #0  perf_event__synthesize_event_update_unit
      #1  0x000000000051e469 in perf_event__synthesize_extra_attr
      #2  0x00000000004445cb in record__synthesize
      #3  0x0000000000444bc5 in __cmd_record
      ...
    
    We synthesize an update event that needs to touch the evsel id array,
    which is not defined at that time. Fix this by forcing the id allocation
    for events with their unit defined.
    
    Reflecting possible read_format ID bit in the attr tests.
    
    Reported-by: Yongxin Liu <yongxin.liu@outlook.com>
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Adam Lee <leeadamrobert@gmail.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=201477
    Fixes: bfd8f72c2778 ("perf record: Synthesize unit/scale/... in event update")
    Link: http://lkml.kernel.org/r/20181112130012.5424-1-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d15443a19d410126447e9ecac3a81967c82ce307
Author: Florian Westphal <fw@strlen.de>
Date:   Wed Oct 31 18:26:21 2018 +0100

    selftests: add script to stress-test nft packet path vs. control plane
    
    [ Upstream commit 25d8bcedbf4329895dbaf9dd67baa6f18dad918c ]
    
    Start flood ping for each cpu while loading/flushing rulesets to make
    sure we do not access already-free'd rules from nf_tables evaluation loop.
    
    Also add this to TARGETS so 'make run_tests' in selftest dir runs it
    automatically.
    
    This would have caught the bug fixed in previous change
    ("netfilter: nf_tables: do not skip inactive chains during generation update")
    sooner.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8fe8940ffcf6984dcf69e5c869aaf244f6d1742b
Author: Florian Westphal <fw@strlen.de>
Date:   Wed Oct 31 18:26:20 2018 +0100

    netfilter: nf_tables: don't skip inactive chains during update
    
    [ Upstream commit 0fb39bbe43d4481fcf300d2b5822de60942fd189 ]
    
    There is no synchronization between packet path and the configuration plane.
    
    The packet path uses two arrays with rules, one contains the current (active)
    generation.  The other either contains the last (obsolete) generation or
    the future one.
    
    Consider:
    cpu1               cpu2
                       nft_do_chain(c);
    delete c
    net->gen++;
                       genbit = !!net->gen;
                       rules = c->rg[genbit];
    
    cpu1 ignores c when updating if c is not active anymore in the new
    generation.
    
    On cpu2, we now use rules from wrong generation, as c->rg[old]
    contains the rules matching 'c' whereas c->rg[new] was not updated and
    can even point to rules that have been free'd already, causing a crash.
    
    To fix this, make sure that 'current' to the 'next' generation are
    identical for chains that are going away so that c->rg[new] will just
    use the matching rules even if genbit was incremented already.
    
    Fixes: 0cbc06b3faba7 ("netfilter: nf_tables: remove synchronize_rcu in commit phase")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4a3b49f0ced5b86999b9e9ae8f06dbdf3b0ea400
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Mon Nov 5 03:44:39 2018 +0900

    netfilter: nf_conncount: fix unexpected permanent node of list.
    
    [ Upstream commit 3c5cdb17c3be76714dfd0d03e384f70579545614 ]
    
    When list->count is 0, the list is deleted by GC. But list->count is
    never reached 0 because initial count value is 1 and it is increased
    when node is inserted. So that initial value of list->count should be 0.
    
    Originally GC always finds zero count list through deleting node and
    decreasing count. However, list may be left empty since node insertion
    may fail eg.  allocaton problem. In order to solve this problem, GC
    routine also finds zero count list without deleting node.
    
    Fixes: cb2b36f5a97d ("netfilter: nf_conncount: Switch to plain list")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ae60f4705f95889cdb3cc9d8c4fd3ef2486074bc
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Mon Nov 5 03:44:11 2018 +0900

    netfilter: nf_conncount: fix list_del corruption in conn_free
    
    [ Upstream commit 31568ec09ea02a050249921698c9729419539cce ]
    
    nf_conncount_tuple is an element of nft_connlimit and that is deleted by
    conn_free(). Elements can be deleted by both GC routine and data path
    functions (nf_conncount_lookup, nf_conncount_add) and they call
    conn_free() to free elements. But conn_free() only protects lists, not
    each element. So that list_del corruption could occurred.
    
    The conn_free() doesn't check whether element is already deleted. In
    order to protect elements, dead flag is added. If an element is deleted,
    dead flag is set. The only conn_free() can delete elements so that both
    list lock and dead flag are enough to protect it.
    
    test commands:
       %nft add table ip filter
       %nft add chain ip filter input { type filter hook input priority 0\; }
       %nft add rule filter input meter test { ip id ct count over 2 } counter
    
    splat looks like:
    [ 1779.495778] list_del corruption, ffff8800b6e12008->prev is LIST_POISON2 (dead000000000200)
    [ 1779.505453] ------------[ cut here ]------------
    [ 1779.506260] kernel BUG at lib/list_debug.c:50!
    [ 1779.515831] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN PTI
    [ 1779.516772] CPU: 0 PID: 33 Comm: kworker/0:2 Not tainted 4.19.0-rc6+ #22
    [ 1779.516772] Workqueue: events_power_efficient nft_rhash_gc [nf_tables_set]
    [ 1779.516772] RIP: 0010:__list_del_entry_valid+0xd8/0x150
    [ 1779.516772] Code: 39 48 83 c4 08 b8 01 00 00 00 5b 5d c3 48 89 ea 48 c7 c7 00 c3 5b 98 e8 0f dc 40 ff 0f 0b 48 c7 c7 60 c3 5b 98 e8 01 dc 40 ff <0f> 0b 48 c7 c7 c0 c3 5b 98 e8 f3 db 40 ff 0f 0b 48 c7 c7 20 c4 5b
    [ 1779.516772] RSP: 0018:ffff880119127420 EFLAGS: 00010286
    [ 1779.516772] RAX: 000000000000004e RBX: dead000000000200 RCX: 0000000000000000
    [ 1779.516772] RDX: 000000000000004e RSI: 0000000000000008 RDI: ffffed0023224e7a
    [ 1779.516772] RBP: ffff88011934bc10 R08: ffffed002367cea9 R09: ffffed002367cea9
    [ 1779.516772] R10: 0000000000000001 R11: ffffed002367cea8 R12: ffff8800b6e12008
    [ 1779.516772] R13: ffff8800b6e12010 R14: ffff88011934bc20 R15: ffff8800b6e12008
    [ 1779.516772] FS:  0000000000000000(0000) GS:ffff88011b200000(0000) knlGS:0000000000000000
    [ 1779.516772] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 1779.516772] CR2: 00007fc876534010 CR3: 000000010da16000 CR4: 00000000001006f0
    [ 1779.516772] Call Trace:
    [ 1779.516772]  conn_free+0x9f/0x2b0 [nf_conncount]
    [ 1779.516772]  ? nf_ct_tmpl_alloc+0x2a0/0x2a0 [nf_conntrack]
    [ 1779.516772]  ? nf_conncount_add+0x520/0x520 [nf_conncount]
    [ 1779.516772]  ? do_raw_spin_trylock+0x1a0/0x1a0
    [ 1779.516772]  ? do_raw_spin_trylock+0x10/0x1a0
    [ 1779.516772]  find_or_evict+0xe5/0x150 [nf_conncount]
    [ 1779.516772]  nf_conncount_gc_list+0x162/0x360 [nf_conncount]
    [ 1779.516772]  ? nf_conncount_lookup+0xee0/0xee0 [nf_conncount]
    [ 1779.516772]  ? _raw_spin_unlock_irqrestore+0x45/0x50
    [ 1779.516772]  ? trace_hardirqs_off+0x6b/0x220
    [ 1779.516772]  ? trace_hardirqs_on_caller+0x220/0x220
    [ 1779.516772]  nft_rhash_gc+0x16b/0x540 [nf_tables_set]
    [ ... ]
    
    Fixes: 5c789e131cbb ("netfilter: nf_conncount: Add list lock and gc worker, and RCU for init tree search")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 08c7e68ab261645055a9cd66c52c717c25ed0161
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Mon Nov 5 03:43:19 2018 +0900

    netfilter: nf_conncount: use spin_lock_bh instead of spin_lock
    
    [ Upstream commit fd3e71a9f71e232181a225301a75936373636ccc ]
    
    conn_free() holds lock with spin_lock() and it is called by both
    nf_conncount_lookup() and nf_conncount_gc_list(). nf_conncount_lookup()
    is called from bottom-half context and nf_conncount_gc_list() from
    process context. So that spin_lock() call is not safe. Hence
    conn_free() should use spin_lock_bh() instead of spin_lock().
    
    test commands:
       %nft add table ip filter
       %nft add chain ip filter input { type filter hook input priority 0\; }
       %nft add rule filter input meter test { ip saddr ct count over 2 } \
               counter
    
    splat looks like:
    [  461.996507] ================================
    [  461.998999] WARNING: inconsistent lock state
    [  461.998999] 4.19.0-rc6+ #22 Not tainted
    [  461.998999] --------------------------------
    [  461.998999] inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage.
    [  461.998999] kworker/0:2/134 [HC0[0]:SC0[0]:HE1:SE1] takes:
    [  461.998999] 00000000a71a559a (&(&list->list_lock)->rlock){+.?.}, at: conn_free+0x69/0x2b0 [nf_conncount]
    [  461.998999] {IN-SOFTIRQ-W} state was registered at:
    [  461.998999]   _raw_spin_lock+0x30/0x70
    [  461.998999]   nf_conncount_add+0x28a/0x520 [nf_conncount]
    [  461.998999]   nft_connlimit_eval+0x401/0x580 [nft_connlimit]
    [  461.998999]   nft_dynset_eval+0x32b/0x590 [nf_tables]
    [  461.998999]   nft_do_chain+0x497/0x1430 [nf_tables]
    [  461.998999]   nft_do_chain_ipv4+0x255/0x330 [nf_tables]
    [  461.998999]   nf_hook_slow+0xb1/0x160
    [ ... ]
    [  461.998999] other info that might help us debug this:
    [  461.998999]  Possible unsafe locking scenario:
    [  461.998999]
    [  461.998999]        CPU0
    [  461.998999]        ----
    [  461.998999]   lock(&(&list->list_lock)->rlock);
    [  461.998999]   <Interrupt>
    [  461.998999]     lock(&(&list->list_lock)->rlock);
    [  461.998999]
    [  461.998999]  *** DEADLOCK ***
    [  461.998999]
    [ ... ]
    
    Fixes: 5c789e131cbb ("netfilter: nf_conncount: Add list lock and gc worker, and RCU for init tree search")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f6168a800b6b64f5b421bf34f737ec38a965f00c
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Sat Nov 10 04:13:24 2018 +0000

    sysv: return 'err' instead of 0 in __sysv_write_inode
    
    [ Upstream commit c4b7d1ba7d263b74bb72e9325262a67139605cde ]
    
    Fixes gcc '-Wunused-but-set-variable' warning:
    
    fs/sysv/inode.c: In function '__sysv_write_inode':
    fs/sysv/inode.c:239:6: warning:
     variable 'err' set but not used [-Wunused-but-set-variable]
    
    __sysv_write_inode should return 'err' instead of 0
    
    Fixes: 05459ca81ac3 ("repair sysv_write_inode(), switch sysv to simple_fsync()")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1eb8dd51887bbcdd08220828f693105e9e3459fe
Author: Bjorn Andersson <bjorn.andersson@linaro.org>
Date:   Fri Nov 2 14:45:32 2018 -0700

    arm64: dts: sdm845-mtp: Reserve reserved gpios
    
    [ Upstream commit 5f8d3ab136d0ccb59c4d628d8f85e0d8f2761d07 ]
    
    With the introduction of commit 3edfb7bd76bd ("gpiolib: Show correct
    direction from the beginning") the gpiolib will attempt to read the
    direction of all pins, which triggers a read from protected register
    regions.
    
    The pins 0 through 3 and 81 through 84 are protected, so mark these as
    reserved.
    
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Reviewed-by: Stephen Boyd <sboyd@kernel.org>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Andy Gross <andy.gross@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 411b321f0ff5856a244660997678957013ca4644
Author: Vasily Khoruzhick <anarsoul@gmail.com>
Date:   Thu Nov 8 20:31:35 2018 -0800

    ASoC: sun8i-codec: fix crash on module removal
    
    [ Upstream commit 278df5e5527b633f4882f1680ad58b62a7c07bfe ]
    
    drvdata is actually sun8i_codec, not snd_soc_card, so it crashes
    when calling snd_soc_card_get_drvdata().
    
    Drop card and scodec vars anyway since we don't need to
    disable/unprepare clocks - it's already done by calling
    runtime_suspend()
    
    Drop clk_disable_unprepare() calls for the same reason.
    
    Fixes: 36c684936fae7 ("ASoC: Add sun8i digital audio codec")
    Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
    Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b42ab52844123694b7f0524be08c96c8408aaa37
Author: Quentin Monnet <quentin.monnet@netronome.com>
Date:   Thu Nov 8 11:52:25 2018 +0000

    tools: bpftool: prevent infinite loop in get_fdinfo()
    
    [ Upstream commit 53909030aa29bffe1f8490df62176c2375135652 ]
    
    Function getline() returns -1 on failure to read a line, thus creating
    an infinite loop in get_fdinfo() if the key is not found. Fix it by
    calling the function only as long as we get a strictly positive return
    value.
    
    Found by copying the code for a key which is not always present...
    
    Fixes: 71bb428fe2c1 ("tools: bpf: add bpftool")
    Signed-off-by: Quentin Monnet <quentin.monnet@netronome.com>
    Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 136c523734297fe1905978eb38e2d274b24c1f48
Author: Janusz Krzysztofik <jmkrzyszt@gmail.com>
Date:   Wed Nov 7 22:30:31 2018 +0100

    ARM: OMAP1: ams-delta: Fix possible use of uninitialized field
    
    [ Upstream commit cec83ff1241ec98113a19385ea9e9cfa9aa4125b ]
    
    While playing with initialization order of modem device, it has been
    discovered that under some circumstances (early console init, I
    believe) its .pm() callback may be called before the
    uart_port->private_data pointer is initialized from
    plat_serial8250_port->private_data, resulting in NULL pointer
    dereference.  Fix it by checking for uninitialized pointer before using
    it in modem_pm().
    
    Fixes: aabf31737a6a ("ARM: OMAP1: ams-delta: update the modem to use regulator API")
    Signed-off-by: Janusz Krzysztofik <jmkrzyszt@gmail.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 28f3050b13ab69e01e435962c298b345ede591ed
Author: Adam Ford <aford173@gmail.com>
Date:   Sun Oct 28 15:34:21 2018 -0500

    ARM: dts: am3517-som: Fix WL127x Wifi interrupt
    
    [ Upstream commit 419b194cdedc76d0d3cd5b0900db0fa8177c4a52 ]
    
    At the same time the AM3517 EVM was gaining WiFi support,
    separate patches were introduced to move the interrupt
    from HIGH to RISING.  Because they overlapped, this was not
    done to the AM3517-EVM.  This patch fixes Kernel 4.19+
    
    Fixes: 6bf5e3410f19 ("ARM: dts: am3517-som: Add WL127x Wifi")
    
    Signed-off-by: Adam Ford <aford173@gmail.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9f7df2a39ab8aad4eacc4e35e80d94f3b273637f
Author: Adam Ford <aford173@gmail.com>
Date:   Sun Oct 28 15:29:27 2018 -0500

    ARM: dts: logicpd-somlv: Fix interrupt on mmc3_dat1
    
    [ Upstream commit 3d8b804bc528d3720ec0c39c212af92dafaf6e84 ]
    
    The interrupt on mmc3_dat1 is wrong which prevents this from
    appearing in /proc/interrupts.
    
    Fixes: ab8dd3aed011 ("ARM: DTS: Add minimal Support for Logic PD
    DM3730 SOM-LV") #Kernel 4.9+
    
    Signed-off-by: Adam Ford <aford173@gmail.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 09372f3cbeed0a6a8a3ea3fafeb7e699984bee80
Author: Adam Ford <aford173@gmail.com>
Date:   Sun Oct 28 15:28:32 2018 -0500

    ARM: dts: LogicPD Torpedo: Fix mmc3_dat1 interrupt
    
    [ Upstream commit 6809564d64ff1301d44c13334cc0e8369e825a20 ]
    
    When the Torpedo was first introduced back at Kernel 4.2,
    the interrupt extended flag has been set incorrectly.
    
    It was subsequently moved, so this patch corrects Kernel
    4.18+
    
    Fixes: a38867305203 ("ARM: dts: Move move WiFi bindings to
    logicpd-torpedo-37xx-devkit") # v4.18+
    
    Signed-off-by: Adam Ford <aford173@gmail.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 886e00c5fe3d41ef161f5fa04b5dc1cc89a1bead
Author: Adam Ford <aford173@gmail.com>
Date:   Sun Oct 28 15:13:48 2018 -0500

    ARM: dts: am3517: Fix pinmuxing for CD on MMC1
    
    [ Upstream commit e7f4ffffa972db4820c23ff9831a6a4f3f6d8cc5 ]
    
    The MMC1 is active low, not active high.  For some reason,
    this worked with different combination of U-Boot and kernels,
    but it's supposed to be active low and is currently broken.
    
    Fixes: cfaa856a2510 ("ARM: dts: am3517: Add pinmuxing, CD and
    WP for MMC1") #kernel 4.18+
    
    Signed-off-by: Adam Ford <aford173@gmail.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit de7e3f88dd5c594d9ea1fac6a176716435d905bc
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Wed Oct 17 10:15:34 2018 +0200

    staging: rtl8723bs: Fix the return value in case of error in 'rtw_wx_read32()'
    
    [ Upstream commit c3e43d8b958bd6849817393483e805d8638a8ab7 ]
    
    We return 0 unconditionally in 'rtw_wx_read32()'.
    However, 'ret' is set to some error codes in several error handling paths.
    
    Return 'ret' instead to propagate the error code.
    
    Fixes: 554c0a3abf216 ("staging: Add rtl8723bs sdio wifi driver")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 748b7861bce5db2777432448e4a4161129273ad2
Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Date:   Tue Nov 6 11:38:57 2018 +0000

    ASoC: qdsp6: q6afe-dai: Fix the dai widgets
    
    [ Upstream commit e14856f6cfbb1b96aa45a68f188b147b5bde76b4 ]
    
    For some reason the dapm widgets are incorrectly defined from the start,
    Not sure how we ended up with such thing. Fix them now!
    
    Without this fix the backend dais are always powered up even if there
    is no active stream.
    
    Reported-by: Jimmy Cheng-Yi Chiang <cychiang@google.com>
    Reported-by: Rohit kumar <rohitkr@codeaurora.org>
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 32d28e247da716f651e25ad71cdf777b51d7839b
Author: Rohit kumar <rohitkr@codeaurora.org>
Date:   Thu Nov 1 17:21:07 2018 +0530

    ASoC: qdsp6: q6afe: Fix wrong MI2S SD line mask
    
    [ Upstream commit 112b57fa737445b2361be332ce8cc0fd3e2b994e ]
    
    SD line mask for MI2S starts from BIT 0 instead of BIT 1.
    Fix all bit mask for MI2S SD lines.
    
    Signed-off-by: Rohit kumar <rohitkr@codeaurora.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8ec3e5552e4e01e73d4efe8637efd7fde020fb20
Author: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date:   Wed Oct 31 00:48:12 2018 +0000

    ASoC: rsnd: fixup clock start checker
    
    [ Upstream commit 3ee9a76a8c5a10e1bfb04b81db767c6d562ddaf3 ]
    
    commit 4d230d12710646 ("ASoC: rsnd: fixup not to call clk_get/set under
    non-atomic") fixuped clock start timing. But it exchanged clock start
    checker from ssi->usrcnt to ssi->rate.
    
    Current rsnd_ssi_master_clk_start() is called from .prepare,
    but some player (for example GStreamer) might calls it many times.
    In such case, the checker might returns error even though it was not
    error. It should check ssi->usrcnt instead of ssi->rate.
    This patch fixup it. Without this patch, GStreamer can't switch
    48kHz / 44.1kHz.
    
    Reported-by: Yusuke Goda <yusuke.goda.sx@renesas.com>
    Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
    Tested-by: Yusuke Goda <yusuke.goda.sx@renesas.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5a8fbba77bf8eae8f7715048b8fd22781c6b73b7
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Wed Oct 17 17:54:00 2018 -0700

    ARM: OMAP2+: prm44xx: Fix section annotation on omap44xx_prm_enable_io_wakeup
    
    [ Upstream commit eef3dc34a1e0b01d53328b88c25237bcc7323777 ]
    
    When building the kernel with Clang, the following section mismatch
    warning appears:
    
    WARNING: vmlinux.o(.text+0x38b3c): Section mismatch in reference from
    the function omap44xx_prm_late_init() to the function
    .init.text:omap44xx_prm_enable_io_wakeup()
    The function omap44xx_prm_late_init() references
    the function __init omap44xx_prm_enable_io_wakeup().
    This is often because omap44xx_prm_late_init lacks a __init
    annotation or the annotation of omap44xx_prm_enable_io_wakeup is wrong.
    
    Remove the __init annotation from omap44xx_prm_enable_io_wakeup so there
    is no more mismatch.
    
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9ac607494a5dd30f04d80500559eb2a4f14e7012
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Thu Nov 29 14:14:49 2018 +0100

    net: fix XPS static_key accounting
    
    [ Upstream commit 867d0ad476db89a1e8af3f297af402399a54eea5 ]
    
    Commit 04157469b7b8 ("net: Use static_key for XPS maps") introduced a
    static key for XPS, but the increments/decrements don't match.
    
    First, the static key's counter is incremented once for each queue, but
    only decremented once for a whole batch of queues, leading to large
    unbalances.
    
    Second, the xps_rxqs_needed key is decremented whenever we reset a batch
    of queues, whether they had any rxqs mapping or not, so that if we setup
    cpu-XPS on em1 and RXQS-XPS on em2, resetting the queues on em1 would
    decrement the xps_rxqs_needed key.
    
    This reworks the accounting scheme so that the xps_needed key is
    incremented only once for each type of XPS for all the queues on a
    device, and the xps_rxqs_needed key is incremented only once for all
    queues. This is sufficient to let us retrieve queues via
    get_xps_queue().
    
    This patch introduces a new reset_xps_maps(), which reinitializes and
    frees the appropriate map (xps_rxqs_map or xps_cpus_map), and drops a
    reference to the needed keys:
     - both xps_needed and xps_rxqs_needed, in case of rxqs maps,
     - only xps_needed, in case of CPU maps.
    
    Now, we also need to call reset_xps_maps() at the end of
    __netif_set_xps_queue() when there's no active map left, for example
    when writing '00000000,00000000' to all queues' xps_rxqs setting.
    
    Fixes: 04157469b7b8 ("net: Use static_key for XPS maps")
    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>

commit b4b8a71c72badf9a33cb0ae092141a601e69d223
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Thu Nov 29 14:14:48 2018 +0100

    net: restore call to netdev_queue_numa_node_write when resetting XPS
    
    [ Upstream commit f28c020fb488e1a8b87469812017044bef88aa2b ]
    
    Before commit 80d19669ecd3 ("net: Refactor XPS for CPUs and Rx queues"),
    netif_reset_xps_queues() did netdev_queue_numa_node_write() for all the
    queues being reset. Now, this is only done when the "active" variable in
    clean_xps_maps() is false, ie when on all the CPUs, there's no active
    XPS mapping left.
    
    Fixes: 80d19669ecd3 ("net: Refactor XPS for CPUs and Rx queues")
    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>

commit a275c66b4d81ba9284bea79a125018a1cbe70db1
Author: Xin Long <lucien.xin@gmail.com>
Date:   Tue Nov 27 19:11:50 2018 +0800

    sctp: update frag_point when stream_interleave is set
    
    [ Upstream commit 4135cce7fd0a0d755665c02728578c7c5afe4726 ]
    
    sctp_assoc_update_frag_point() should be called whenever asoc->pathmtu
    changes, but we missed one place in sctp_association_init(). It would
    cause frag_point is zero when sending data.
    
    As says in Jakub's reproducer, if sp->pathmtu is set by socketopt, the
    new asoc->pathmtu inherits it in sctp_association_init(). Later when
    transports are added and their pmtu >= asoc->pathmtu, it will never
    call sctp_assoc_update_frag_point() to set frag_point.
    
    This patch is to fix it by updating frag_point after asoc->pathmtu is
    set as sp->pathmtu in sctp_association_init(). Note that it moved them
    after sctp_stream_init(), as stream->si needs to be set first.
    
    Frag_point's calculation is also related with datachunk's type, so it
    needs to update frag_point when stream->si may be changed in
    sctp_process_init().
    
    v1->v2:
      - call sctp_assoc_update_frag_point() separately in sctp_process_init
        and sctp_association_init, per Marcelo's suggestion.
    
    Fixes: 2f5e3c9df693 ("sctp: introduce sctp_assoc_update_frag_point")
    Reported-by: Jakub Audykowicz <jakub.audykowicz@gmail.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4aa6d46d1711758ee18d078b76175b807ac55438
Author: Baruch Siach <baruch@tkos.co.il>
Date:   Thu Nov 29 12:40:11 2018 +0200

    net: phy: sfp: correct store of detected link modes
    
    [ Upstream commit d7f7e0018b96fd1a30a968faa9464eb57372c1ec ]
    
    The link modes that sfp_parse_support() detects are stored in the
    'modes' bitmap. There is no reason to make an exception for 1000Base-PX
    or 1000Base-BX10.
    
    Fixes: 03145864bd0f ("sfp: support 1G BiDi (eg, FiberStore SFP-GE-BX) modules")
    Signed-off-by: Baruch Siach <baruch@tkos.co.il>
    Acked-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7dba859ca58590c6f3445553db25cd748c40ff0
Author: Jason Wang <jasowang@redhat.com>
Date:   Thu Nov 29 13:53:16 2018 +0800

    virtio-net: keep vnet header zeroed after processing XDP
    
    [ Upstream commit 436c9453a1ac0944b82870ef2e0d9be956b396d9 ]
    
    We copy vnet header unconditionally in page_to_skb() this is wrong
    since XDP may modify the packet data. So let's keep a zeroed vnet
    header for not confusing the conversion between vnet header and skb
    metadata.
    
    In the future, we should able to detect whether or not the packet was
    modified and keep using the vnet header when packet was not touched.
    
    Fixes: f600b6905015 ("virtio_net: Add XDP support")
    Reported-by: Pavel Popa <pashinho1990@gmail.com>
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36206419989d9cd8a6dbb27ed61bae524e95f812
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Thu Nov 29 14:45:39 2018 +0100

    tun: forbid iface creation with rtnl ops
    
    [ Upstream commit 35b827b6d06199841a83839e8bb69c0cd13a28be ]
    
    It's not supported right now (the goal of the initial patch was to support
    'ip link del' only).
    
    Before the patch:
    $ ip link add foo type tun
    [  239.632660] BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
    [snip]
    [  239.636410] RIP: 0010:register_netdevice+0x8e/0x3a0
    
    This panic occurs because dev->netdev_ops is not set by tun_setup(). But to
    have something usable, it will require more than just setting
    netdev_ops.
    
    Fixes: f019a7a594d9 ("tun: Implement ip link del tunXXX")
    CC: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bbc83e8d08cbbbd083f4c5cb192d60d64b0bd0ba
Author: Yuchung Cheng <ycheng@google.com>
Date:   Wed Dec 5 14:38:38 2018 -0800

    tcp: fix NULL ref in tail loss probe
    
    [ Upstream commit b2b7af861122a0c0f6260155c29a1b2e594cd5b5 ]
    
    TCP loss probe timer may fire when the retranmission queue is empty but
    has a non-zero tp->packets_out counter. tcp_send_loss_probe will call
    tcp_rearm_rto which triggers NULL pointer reference by fetching the
    retranmission queue head in its sub-routines.
    
    Add a more detailed warning to help catch the root cause of the inflight
    accounting inconsistency.
    
    Reported-by: Rafael Tinoco <rafael.tinoco@linaro.org>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03b271cb9175b8fc9d6dfcfb3e87f23a7d6815dc
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Dec 5 14:24:31 2018 -0800

    tcp: Do not underestimate rwnd_limited
    
    [ Upstream commit 41727549de3e7281feb174d568c6e46823db8684 ]
    
    If available rwnd is too small, tcp_tso_should_defer()
    can decide it is worth waiting before splitting a TSO packet.
    
    This really means we are rwnd limited.
    
    Fixes: 5615f88614a4 ("tcp: instrument how long TCP is limited by receive window")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Reviewed-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5148726f2c272055ffa8e528a9280733679e4a06
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sat Dec 1 01:36:59 2018 +0800

    sctp: kfree_rcu asoc
    
    [ Upstream commit fb6df5a6234c38a9c551559506a49a677ac6f07a ]
    
    In sctp_hash_transport/sctp_epaddr_lookup_transport, it dereferences
    a transport's asoc under rcu_read_lock while asoc is freed not after
    a grace period, which leads to a use-after-free panic.
    
    This patch fixes it by calling kfree_rcu to make asoc be freed after
    a grace period.
    
    Note that only the asoc's memory is delayed to free in the patch, it
    won't cause sk to linger longer.
    
    Thanks Neil and Marcelo to make this clear.
    
    Fixes: 7fda702f9315 ("sctp: use new rhlist interface on sctp transport rhashtable")
    Fixes: cd2b70875058 ("sctp: check duplicate node before inserting a new transport")
    Reported-by: syzbot+0b05d8aa7cb185107483@syzkaller.appspotmail.com
    Reported-by: syzbot+aad231d51b1923158444@syzkaller.appspotmail.com
    Suggested-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a482f800169c4e8cdcc88437475f9ca66abd51ca
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Dec 4 09:40:35 2018 -0800

    rtnetlink: ndo_dflt_fdb_dump() only work for ARPHRD_ETHER devices
    
    [ Upstream commit 688838934c231bb08f46db687e57f6d8bf82709c ]
    
    kmsan was able to trigger a kernel-infoleak using a gre device [1]
    
    nlmsg_populate_fdb_fill() has a hard coded assumption
    that dev->addr_len is ETH_ALEN, as normally guaranteed
    for ARPHRD_ETHER devices.
    
    A similar issue was fixed recently in commit da71577545a5
    ("rtnetlink: Disallow FDB configuration for non-Ethernet device")
    
    [1]
    BUG: KMSAN: kernel-infoleak in copyout lib/iov_iter.c:143 [inline]
    BUG: KMSAN: kernel-infoleak in _copy_to_iter+0x4c0/0x2700 lib/iov_iter.c:576
    CPU: 0 PID: 6697 Comm: syz-executor310 Not tainted 4.20.0-rc3+ #95
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x32d/0x480 lib/dump_stack.c:113
     kmsan_report+0x12c/0x290 mm/kmsan/kmsan.c:683
     kmsan_internal_check_memory+0x32a/0xa50 mm/kmsan/kmsan.c:743
     kmsan_copy_to_user+0x78/0xd0 mm/kmsan/kmsan_hooks.c:634
     copyout lib/iov_iter.c:143 [inline]
     _copy_to_iter+0x4c0/0x2700 lib/iov_iter.c:576
     copy_to_iter include/linux/uio.h:143 [inline]
     skb_copy_datagram_iter+0x4e2/0x1070 net/core/datagram.c:431
     skb_copy_datagram_msg include/linux/skbuff.h:3316 [inline]
     netlink_recvmsg+0x6f9/0x19d0 net/netlink/af_netlink.c:1975
     sock_recvmsg_nosec net/socket.c:794 [inline]
     sock_recvmsg+0x1d1/0x230 net/socket.c:801
     ___sys_recvmsg+0x444/0xae0 net/socket.c:2278
     __sys_recvmsg net/socket.c:2327 [inline]
     __do_sys_recvmsg net/socket.c:2337 [inline]
     __se_sys_recvmsg+0x2fa/0x450 net/socket.c:2334
     __x64_sys_recvmsg+0x4a/0x70 net/socket.c:2334
     do_syscall_64+0xcf/0x110 arch/x86/entry/common.c:291
     entry_SYSCALL_64_after_hwframe+0x63/0xe7
    RIP: 0033:0x441119
    Code: 18 89 d0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 db 0a fc ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007fffc7f008a8 EFLAGS: 00000207 ORIG_RAX: 000000000000002f
    RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 0000000000441119
    RDX: 0000000000000040 RSI: 00000000200005c0 RDI: 0000000000000003
    RBP: 00000000006cc018 R08: 0000000000000100 R09: 0000000000000100
    R10: 0000000000000100 R11: 0000000000000207 R12: 0000000000402080
    R13: 0000000000402110 R14: 0000000000000000 R15: 0000000000000000
    
    Uninit was stored to memory at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:246 [inline]
     kmsan_save_stack mm/kmsan/kmsan.c:261 [inline]
     kmsan_internal_chain_origin+0x13d/0x240 mm/kmsan/kmsan.c:469
     kmsan_memcpy_memmove_metadata+0x1a9/0xf70 mm/kmsan/kmsan.c:344
     kmsan_memcpy_metadata+0xb/0x10 mm/kmsan/kmsan.c:362
     __msan_memcpy+0x61/0x70 mm/kmsan/kmsan_instr.c:162
     __nla_put lib/nlattr.c:744 [inline]
     nla_put+0x20a/0x2d0 lib/nlattr.c:802
     nlmsg_populate_fdb_fill+0x444/0x810 net/core/rtnetlink.c:3466
     nlmsg_populate_fdb net/core/rtnetlink.c:3775 [inline]
     ndo_dflt_fdb_dump+0x73a/0x960 net/core/rtnetlink.c:3807
     rtnl_fdb_dump+0x1318/0x1cb0 net/core/rtnetlink.c:3979
     netlink_dump+0xc79/0x1c90 net/netlink/af_netlink.c:2244
     __netlink_dump_start+0x10c4/0x11d0 net/netlink/af_netlink.c:2352
     netlink_dump_start include/linux/netlink.h:216 [inline]
     rtnetlink_rcv_msg+0x141b/0x1540 net/core/rtnetlink.c:4910
     netlink_rcv_skb+0x394/0x640 net/netlink/af_netlink.c:2477
     rtnetlink_rcv+0x50/0x60 net/core/rtnetlink.c:4965
     netlink_unicast_kernel net/netlink/af_netlink.c:1310 [inline]
     netlink_unicast+0x1699/0x1740 net/netlink/af_netlink.c:1336
     netlink_sendmsg+0x13c7/0x1440 net/netlink/af_netlink.c:1917
     sock_sendmsg_nosec net/socket.c:621 [inline]
     sock_sendmsg net/socket.c:631 [inline]
     ___sys_sendmsg+0xe3b/0x1240 net/socket.c:2116
     __sys_sendmsg net/socket.c:2154 [inline]
     __do_sys_sendmsg net/socket.c:2163 [inline]
     __se_sys_sendmsg+0x305/0x460 net/socket.c:2161
     __x64_sys_sendmsg+0x4a/0x70 net/socket.c:2161
     do_syscall_64+0xcf/0x110 arch/x86/entry/common.c:291
     entry_SYSCALL_64_after_hwframe+0x63/0xe7
    
    Uninit was created at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:246 [inline]
     kmsan_internal_poison_shadow+0x6d/0x130 mm/kmsan/kmsan.c:170
     kmsan_kmalloc+0xa1/0x100 mm/kmsan/kmsan_hooks.c:186
     __kmalloc+0x14c/0x4d0 mm/slub.c:3825
     kmalloc include/linux/slab.h:551 [inline]
     __hw_addr_create_ex net/core/dev_addr_lists.c:34 [inline]
     __hw_addr_add_ex net/core/dev_addr_lists.c:80 [inline]
     __dev_mc_add+0x357/0x8a0 net/core/dev_addr_lists.c:670
     dev_mc_add+0x6d/0x80 net/core/dev_addr_lists.c:687
     ip_mc_filter_add net/ipv4/igmp.c:1128 [inline]
     igmp_group_added+0x4d4/0xb80 net/ipv4/igmp.c:1311
     __ip_mc_inc_group+0xea9/0xf70 net/ipv4/igmp.c:1444
     ip_mc_inc_group net/ipv4/igmp.c:1453 [inline]
     ip_mc_up+0x1c3/0x400 net/ipv4/igmp.c:1775
     inetdev_event+0x1d03/0x1d80 net/ipv4/devinet.c:1522
     notifier_call_chain kernel/notifier.c:93 [inline]
     __raw_notifier_call_chain kernel/notifier.c:394 [inline]
     raw_notifier_call_chain+0x13d/0x240 kernel/notifier.c:401
     __dev_notify_flags+0x3da/0x860 net/core/dev.c:1733
     dev_change_flags+0x1ac/0x230 net/core/dev.c:7569
     do_setlink+0x165f/0x5ea0 net/core/rtnetlink.c:2492
     rtnl_newlink+0x2ad7/0x35a0 net/core/rtnetlink.c:3111
     rtnetlink_rcv_msg+0x1148/0x1540 net/core/rtnetlink.c:4947
     netlink_rcv_skb+0x394/0x640 net/netlink/af_netlink.c:2477
     rtnetlink_rcv+0x50/0x60 net/core/rtnetlink.c:4965
     netlink_unicast_kernel net/netlink/af_netlink.c:1310 [inline]
     netlink_unicast+0x1699/0x1740 net/netlink/af_netlink.c:1336
     netlink_sendmsg+0x13c7/0x1440 net/netlink/af_netlink.c:1917
     sock_sendmsg_nosec net/socket.c:621 [inline]
     sock_sendmsg net/socket.c:631 [inline]
     ___sys_sendmsg+0xe3b/0x1240 net/socket.c:2116
     __sys_sendmsg net/socket.c:2154 [inline]
     __do_sys_sendmsg net/socket.c:2163 [inline]
     __se_sys_sendmsg+0x305/0x460 net/socket.c:2161
     __x64_sys_sendmsg+0x4a/0x70 net/socket.c:2161
     do_syscall_64+0xcf/0x110 arch/x86/entry/common.c:291
     entry_SYSCALL_64_after_hwframe+0x63/0xe7
    
    Bytes 36-37 of 105 are uninitialized
    Memory access of size 105 starts at ffff88819686c000
    Data copied to user address 0000000020000380
    
    Fixes: d83b06036048 ("net: add fdb generic dump routine")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: John Fastabend <john.fastabend@gmail.com>
    Cc: Ido Schimmel <idosch@mellanox.com>
    Cc: David Ahern <dsahern@gmail.com>
    Reviewed-by: Ido Schimmel <idosch@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5c9c30da73017edf3ec45fce06beb4469bc6b39
Author: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date:   Fri Dec 7 15:05:04 2018 +1100

    Revert "net/ibm/emac: wrong bit is used for STA control"
    
    [ Upstream commit 5b3279e2cba2238b37f6c18adfdea8bddb32715a ]
    
    This reverts commit 624ca9c33c8a853a4a589836e310d776620f4ab9.
    
    This commit is completely bogus. The STACR register has two formats, old
    and new, depending on the version of the IP block used. There's a pair of
    device-tree properties that can be used to specify the format used:
    
            has-inverted-stacr-oc
            has-new-stacr-staopc
    
    What this commit did was to change the bit definition used with the old
    parts to match the new parts. This of course breaks the driver on all
    the old ones.
    
    Instead, the author should have set the appropriate properties in the
    device-tree for the variant used on his board.
    
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7fafda16bb64c134658ffde0ac9332d23ba26fd0
Author: Edward Cree <ecree@solarflare.com>
Date:   Tue Dec 4 17:37:57 2018 +0000

    net: use skb_list_del_init() to remove from RX sublists
    
    [ Upstream commit 22f6bbb7bcfcef0b373b0502a7ff390275c575dd ]
    
    list_del() leaves the skb->next pointer poisoned, which can then lead to
     a crash in e.g. OVS forwarding.  For example, setting up an OVS VXLAN
     forwarding bridge on sfc as per:
    
    ========
    $ ovs-vsctl show
    5dfd9c47-f04b-4aaa-aa96-4fbb0a522a30
        Bridge "br0"
            Port "br0"
                Interface "br0"
                    type: internal
            Port "enp6s0f0"
                Interface "enp6s0f0"
            Port "vxlan0"
                Interface "vxlan0"
                    type: vxlan
                    options: {key="1", local_ip="10.0.0.5", remote_ip="10.0.0.4"}
        ovs_version: "2.5.0"
    ========
    (where 10.0.0.5 is an address on enp6s0f1)
    and sending traffic across it will lead to the following panic:
    ========
    general protection fault: 0000 [#1] SMP PTI
    CPU: 5 PID: 0 Comm: swapper/5 Not tainted 4.20.0-rc3-ehc+ #701
    Hardware name: Dell Inc. PowerEdge R710/0M233H, BIOS 6.4.0 07/23/2013
    RIP: 0010:dev_hard_start_xmit+0x38/0x200
    Code: 53 48 89 fb 48 83 ec 20 48 85 ff 48 89 54 24 08 48 89 4c 24 18 0f 84 ab 01 00 00 48 8d 86 90 00 00 00 48 89 f5 48 89 44 24 10 <4c> 8b 33 48 c7 03 00 00 00 00 48 8b 05 c7 d1 b3 00 4d 85 f6 0f 95
    RSP: 0018:ffff888627b437e0 EFLAGS: 00010202
    RAX: 0000000000000000 RBX: dead000000000100 RCX: ffff88862279c000
    RDX: ffff888614a342c0 RSI: 0000000000000000 RDI: 0000000000000000
    RBP: ffff888618a88000 R08: 0000000000000001 R09: 00000000000003e8
    R10: 0000000000000000 R11: ffff888614a34140 R12: 0000000000000000
    R13: 0000000000000062 R14: dead000000000100 R15: ffff888616430000
    FS:  0000000000000000(0000) GS:ffff888627b40000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f6d2bc6d000 CR3: 000000000200a000 CR4: 00000000000006e0
    Call Trace:
     <IRQ>
     __dev_queue_xmit+0x623/0x870
     ? masked_flow_lookup+0xf7/0x220 [openvswitch]
     ? ep_poll_callback+0x101/0x310
     do_execute_actions+0xaba/0xaf0 [openvswitch]
     ? __wake_up_common+0x8a/0x150
     ? __wake_up_common_lock+0x87/0xc0
     ? queue_userspace_packet+0x31c/0x5b0 [openvswitch]
     ovs_execute_actions+0x47/0x120 [openvswitch]
     ovs_dp_process_packet+0x7d/0x110 [openvswitch]
     ovs_vport_receive+0x6e/0xd0 [openvswitch]
     ? dst_alloc+0x64/0x90
     ? rt_dst_alloc+0x50/0xd0
     ? ip_route_input_slow+0x19a/0x9a0
     ? __udp_enqueue_schedule_skb+0x198/0x1b0
     ? __udp4_lib_rcv+0x856/0xa30
     ? __udp4_lib_rcv+0x856/0xa30
     ? cpumask_next_and+0x19/0x20
     ? find_busiest_group+0x12d/0xcd0
     netdev_frame_hook+0xce/0x150 [openvswitch]
     __netif_receive_skb_core+0x205/0xae0
     __netif_receive_skb_list_core+0x11e/0x220
     netif_receive_skb_list+0x203/0x460
     ? __efx_rx_packet+0x335/0x5e0 [sfc]
     efx_poll+0x182/0x320 [sfc]
     net_rx_action+0x294/0x3c0
     __do_softirq+0xca/0x297
     irq_exit+0xa6/0xb0
     do_IRQ+0x54/0xd0
     common_interrupt+0xf/0xf
     </IRQ>
    ========
    So, in all listified-receive handling, instead pull skbs off the lists with
     skb_list_del_init().
    
    Fixes: 9af86f933894 ("net: core: fix use-after-free in __netif_receive_skb_list_core")
    Fixes: 7da517a3bc52 ("net: core: Another step of skb receive list processing")
    Fixes: a4ca8b7df73c ("net: ipv4: fix drop handling in ip_list_rcv() and ip_list_rcv_finish()")
    Fixes: d8269e2cbf90 ("net: ipv6: listify ipv6_rcv() and ip6_rcv_finish()")
    Signed-off-by: Edward Cree <ecree@solarflare.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16218638a239df12346334f66c2a197ee28e34ae
Author: Christoph Paasch <cpaasch@apple.com>
Date:   Thu Nov 29 16:01:04 2018 -0800

    net: Prevent invalid access to skb->prev in __qdisc_drop_all
    
    [ Upstream commit 9410d386d0a829ace9558336263086c2fbbe8aed ]
    
    __qdisc_drop_all() accesses skb->prev to get to the tail of the
    segment-list.
    
    With commit 68d2f84a1368 ("net: gro: properly remove skb from list")
    the skb-list handling has been changed to set skb->next to NULL and set
    the list-poison on skb->prev.
    
    With that change, __qdisc_drop_all() will panic when it tries to
    dereference skb->prev.
    
    Since commit 992cba7e276d ("net: Add and use skb_list_del_init().")
    __list_del_entry is used, leaving skb->prev unchanged (thus,
    pointing to the list-head if it's the first skb of the list).
    This will make __qdisc_drop_all modify the next-pointer of the list-head
    and result in a panic later on:
    
    [   34.501053] general protection fault: 0000 [#1] SMP KASAN PTI
    [   34.501968] CPU: 2 PID: 0 Comm: swapper/2 Not tainted 4.20.0-rc2.mptcp #108
    [   34.502887] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 0.5.1 01/01/2011
    [   34.504074] RIP: 0010:dev_gro_receive+0x343/0x1f90
    [   34.504751] Code: e0 48 c1 e8 03 42 80 3c 30 00 0f 85 4a 1c 00 00 4d 8b 24 24 4c 39 65 d0 0f 84 0a 04 00 00 49 8d 7c 24 38 48 89 f8 48 c1 e8 03 <42> 0f b6 04 30 84 c0 74 08 3c 04
    [   34.507060] RSP: 0018:ffff8883af507930 EFLAGS: 00010202
    [   34.507761] RAX: 0000000000000007 RBX: ffff8883970b2c80 RCX: 1ffff11072e165a6
    [   34.508640] RDX: 1ffff11075867008 RSI: ffff8883ac338040 RDI: 0000000000000038
    [   34.509493] RBP: ffff8883af5079d0 R08: ffff8883970b2d40 R09: 0000000000000062
    [   34.510346] R10: 0000000000000034 R11: 0000000000000000 R12: 0000000000000000
    [   34.511215] R13: 0000000000000000 R14: dffffc0000000000 R15: ffff8883ac338008
    [   34.512082] FS:  0000000000000000(0000) GS:ffff8883af500000(0000) knlGS:0000000000000000
    [   34.513036] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   34.513741] CR2: 000055ccc3e9d020 CR3: 00000003abf32000 CR4: 00000000000006e0
    [   34.514593] Call Trace:
    [   34.514893]  <IRQ>
    [   34.515157]  napi_gro_receive+0x93/0x150
    [   34.515632]  receive_buf+0x893/0x3700
    [   34.516094]  ? __netif_receive_skb+0x1f/0x1a0
    [   34.516629]  ? virtnet_probe+0x1b40/0x1b40
    [   34.517153]  ? __stable_node_chain+0x4d0/0x850
    [   34.517684]  ? kfree+0x9a/0x180
    [   34.518067]  ? __kasan_slab_free+0x171/0x190
    [   34.518582]  ? detach_buf+0x1df/0x650
    [   34.519061]  ? lapic_next_event+0x5a/0x90
    [   34.519539]  ? virtqueue_get_buf_ctx+0x280/0x7f0
    [   34.520093]  virtnet_poll+0x2df/0xd60
    [   34.520533]  ? receive_buf+0x3700/0x3700
    [   34.521027]  ? qdisc_watchdog_schedule_ns+0xd5/0x140
    [   34.521631]  ? htb_dequeue+0x1817/0x25f0
    [   34.522107]  ? sch_direct_xmit+0x142/0xf30
    [   34.522595]  ? virtqueue_napi_schedule+0x26/0x30
    [   34.523155]  net_rx_action+0x2f6/0xc50
    [   34.523601]  ? napi_complete_done+0x2f0/0x2f0
    [   34.524126]  ? kasan_check_read+0x11/0x20
    [   34.524608]  ? _raw_spin_lock+0x7d/0xd0
    [   34.525070]  ? _raw_spin_lock_bh+0xd0/0xd0
    [   34.525563]  ? kvm_guest_apic_eoi_write+0x6b/0x80
    [   34.526130]  ? apic_ack_irq+0x9e/0xe0
    [   34.526567]  __do_softirq+0x188/0x4b5
    [   34.527015]  irq_exit+0x151/0x180
    [   34.527417]  do_IRQ+0xdb/0x150
    [   34.527783]  common_interrupt+0xf/0xf
    [   34.528223]  </IRQ>
    
    This patch makes sure that skb->prev is set to NULL when entering
    netem_enqueue.
    
    Cc: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
    Cc: Tyler Hicks <tyhicks@canonical.com>
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Fixes: 68d2f84a1368 ("net: gro: properly remove skb from list")
    Suggested-by: Eric Dumazet <eric.dumazet@gmail.com>
    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 ac1fb97e9136e6260812e39b867f7ae6e72e075a
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Mon Dec 3 08:19:33 2018 +0100

    net: phy: don't allow __set_phy_supported to add unsupported modes
    
    [ Upstream commit d2a36971ef595069b7a600d1144c2e0881a930a1 ]
    
    Currently __set_phy_supported allows to add modes w/o checking whether
    the PHY supports them. This is wrong, it should never add modes but
    only remove modes we don't want to support.
    
    The commit marked as fixed didn't do anything wrong, it just copied
    existing functionality to the helper which is being fixed now.
    
    Fixes: f3a6bd393c2c ("phylib: Add phy_set_max_speed helper")
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.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 70727c00cbb7a77f787c6a1d9e59ae426b149ac9
Author: Eran Ben Elisha <eranbe@mellanox.com>
Date:   Sun Dec 2 14:34:36 2018 +0200

    net/mlx4_en: Change min MTU size to ETH_MIN_MTU
    
    [ Upstream commit 24be19e47779d604d1492c114459dca9a92acf78 ]
    
    NIC driver minimal MTU size shall be set to ETH_MIN_MTU, as defined in
    the RFC791 and in the network stack. Remove old mlx4_en only define for
    it, which was set to wrong value.
    
    Fixes: b80f71f5816f ("ethernet/mellanox: use core min/max MTU checking")
    Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1fa276e9200974788cea3d35b95b961b1311cae5
Author: Tarick Bedeir <tarick@google.com>
Date:   Fri Dec 7 00:30:26 2018 -0800

    net/mlx4_core: Correctly set PFC param if global pause is turned off.
    
    [ Upstream commit bd5122cd1e0644d8bd8dd84517c932773e999766 ]
    
    rx_ppp and tx_ppp can be set between 0 and 255, so don't clamp to 1.
    
    Fixes: 6e8814ceb7e8 ("net/mlx4_en: Fix mixed PFC and Global pause user control requests")
    Signed-off-by: Tarick Bedeir <tarick@google.com>
    Reviewed-by: Eran Ben Elisha <eranbe@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec5d7ceda60a81a9498bfefb259d066961ff116b
Author: Su Yanjun <suyj.fnst@cn.fujitsu.com>
Date:   Mon Dec 3 15:33:07 2018 +0800

    net: 8139cp: fix a BUG triggered by changing mtu with network traffic
    
    [ Upstream commit a5d4a89245ead1f37ed135213653c5beebea4237 ]
    
    When changing mtu many times with traffic, a bug is triggered:
    
    [ 1035.684037] kernel BUG at lib/dynamic_queue_limits.c:26!
    [ 1035.684042] invalid opcode: 0000 [#1] SMP
    [ 1035.684049] Modules linked in: loop binfmt_misc 8139cp(OE) macsec
    tcp_diag udp_diag inet_diag unix_diag af_packet_diag netlink_diag tcp_lp
    fuse uinput xt_CHECKSUM iptable_mangle ipt_MASQUERADE
    nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat nf_conntrack_ipv4
    nf_defrag_ipv4 xt_conntrack nf_conntrack ipt_REJECT nf_reject_ipv4 tun
    bridge stp llc ebtable_filter ebtables ip6table_filter devlink
    ip6_tables iptable_filter sunrpc snd_hda_codec_generic snd_hda_intel
    snd_hda_codec snd_hda_core snd_hwdep ppdev snd_seq iosf_mbi crc32_pclmul
    parport_pc snd_seq_device ghash_clmulni_intel parport snd_pcm
    aesni_intel joydev lrw snd_timer virtio_balloon sg gf128mul glue_helper
    ablk_helper cryptd snd soundcore i2c_piix4 pcspkr ip_tables xfs
    libcrc32c sr_mod sd_mod cdrom crc_t10dif crct10dif_generic ata_generic
    [ 1035.684102]  pata_acpi virtio_console qxl drm_kms_helper syscopyarea
    sysfillrect sysimgblt floppy fb_sys_fops crct10dif_pclmul
    crct10dif_common ttm crc32c_intel serio_raw ata_piix drm libata 8139too
    virtio_pci drm_panel_orientation_quirks virtio_ring virtio mii dm_mirror
    dm_region_hash dm_log dm_mod [last unloaded: 8139cp]
    [ 1035.684132] CPU: 9 PID: 25140 Comm: if-mtu-change Kdump: loaded
    Tainted: G           OE  ------------ T 3.10.0-957.el7.x86_64 #1
    [ 1035.684134] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
    [ 1035.684136] task: ffff8f59b1f5a080 ti: ffff8f5a2e32c000 task.ti:
    ffff8f5a2e32c000
    [ 1035.684149] RIP: 0010:[<ffffffffba3a40d0>]  [<ffffffffba3a40d0>]
    dql_completed+0x180/0x190
    [ 1035.684162] RSP: 0000:ffff8f5a75483e50  EFLAGS: 00010093
    [ 1035.684162] RAX: 00000000000000c2 RBX: ffff8f5a6f91c000 RCX:
    0000000000000000
    [ 1035.684162] RDX: 0000000000000000 RSI: 0000000000000184 RDI:
    ffff8f599fea3ec0
    [ 1035.684162] RBP: ffff8f5a75483ea8 R08: 00000000000000c2 R09:
    0000000000000000
    [ 1035.684162] R10: 00000000000616ef R11: ffff8f5a75483b56 R12:
    ffff8f599fea3e00
    [ 1035.684162] R13: 0000000000000001 R14: 0000000000000000 R15:
    0000000000000184
    [ 1035.684162] FS:  00007fa8434de740(0000) GS:ffff8f5a75480000(0000)
    knlGS:0000000000000000
    [ 1035.684162] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 1035.684162] CR2: 00000000004305d0 CR3: 000000024eb66000 CR4:
    00000000001406e0
    [ 1035.684162] Call Trace:
    [ 1035.684162]  <IRQ>
    [ 1035.684162]  [<ffffffffc08cbaf8>] ? cp_interrupt+0x478/0x580 [8139cp]
    [ 1035.684162]  [<ffffffffba14a294>]
    __handle_irq_event_percpu+0x44/0x1c0
    [ 1035.684162]  [<ffffffffba14a442>] handle_irq_event_percpu+0x32/0x80
    [ 1035.684162]  [<ffffffffba14a4cc>] handle_irq_event+0x3c/0x60
    [ 1035.684162]  [<ffffffffba14db29>] handle_fasteoi_irq+0x59/0x110
    [ 1035.684162]  [<ffffffffba02e554>] handle_irq+0xe4/0x1a0
    [ 1035.684162]  [<ffffffffba7795dd>] do_IRQ+0x4d/0xf0
    [ 1035.684162]  [<ffffffffba76b362>] common_interrupt+0x162/0x162
    [ 1035.684162]  <EOI>
    [ 1035.684162]  [<ffffffffba0c2ae4>] ? __wake_up_bit+0x24/0x70
    [ 1035.684162]  [<ffffffffba1e46f5>] ? do_set_pte+0xd5/0x120
    [ 1035.684162]  [<ffffffffba1b64fb>] unlock_page+0x2b/0x30
    [ 1035.684162]  [<ffffffffba1e4879>] do_read_fault.isra.61+0x139/0x1b0
    [ 1035.684162]  [<ffffffffba1e9134>] handle_pte_fault+0x2f4/0xd10
    [ 1035.684162]  [<ffffffffba1ebc6d>] handle_mm_fault+0x39d/0x9b0
    [ 1035.684162]  [<ffffffffba76f5e3>] __do_page_fault+0x203/0x500
    [ 1035.684162]  [<ffffffffba76f9c6>] trace_do_page_fault+0x56/0x150
    [ 1035.684162]  [<ffffffffba76ef42>] do_async_page_fault+0x22/0xf0
    [ 1035.684162]  [<ffffffffba76b788>] async_page_fault+0x28/0x30
    [ 1035.684162] Code: 54 c7 47 54 ff ff ff ff 44 0f 49 ce 48 8b 35 48 2f
    9c 00 48 89 77 58 e9 fe fe ff ff 0f 1f 80 00 00 00 00 41 89 d1 e9 ef fe
    ff ff <0f> 0b 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 55 8d 42 ff 48
    [ 1035.684162] RIP  [<ffffffffba3a40d0>] dql_completed+0x180/0x190
    [ 1035.684162]  RSP <ffff8f5a75483e50>
    
    It's not the same as in 7fe0ee09 patch described.
    As 8139cp uses shared irq mode, other device irq will trigger
    cp_interrupt to execute.
    
    cp_change_mtu
     -> cp_close
     -> cp_open
    
    In cp_close routine  just before free_irq(), some interrupt may occur.
    In my environment, cp_interrupt exectutes and IntrStatus is 0x4,
    exactly TxOk. That will cause cp_tx to wake device queue.
    
    As device queue is started, cp_start_xmit and cp_open will run at same
    time which will cause kernel BUG.
    
    For example:
    [#] for tx descriptor
    
    At start:
    
    [#][#][#]
    num_queued=3
    
    After cp_init_hw->cp_start_hw->netdev_reset_queue:
    
    [#][#][#]
    num_queued=0
    
    When 8139cp starts to work then cp_tx will check
    num_queued mismatchs the complete_bytes.
    
    The patch will check IntrMask before check IntrStatus in cp_interrupt.
    When 8139cp interrupt is disabled, just return.
    
    Signed-off-by: Su Yanjun <suyj.fnst@cn.fujitsu.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c4ec6a9a788a50b4ba79e75b837a627e117b5ca4
Author: Shmulik Ladkani <shmulik@metanetworks.com>
Date:   Fri Dec 7 09:50:17 2018 +0200

    ipv6: sr: properly initialize flowi6 prior passing to ip6_route_output
    
    [ Upstream commit 1b4e5ad5d6b9f15cd0b5121f86d4719165958417 ]
    
    In 'seg6_output', stack variable 'struct flowi6 fl6' was missing
    initialization.
    
    Fixes: 6c8702c60b88 ("ipv6: sr: add support for SRH encapsulation and injection with lwtunnels")
    Signed-off-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e96b90351f48d4ea1f83fe01a666e8752f88b6b
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Thu Dec 6 19:30:37 2018 +0100

    neighbour: Avoid writing before skb->head in neigh_hh_output()
    
    [ Upstream commit e6ac64d4c4d095085d7dd71cbd05704ac99829b2 ]
    
    While skb_push() makes the kernel panic if the skb headroom is less than
    the unaligned hardware header size, it will proceed normally in case we
    copy more than that because of alignment, and we'll silently corrupt
    adjacent slabs.
    
    In the case fixed by the previous patch,
    "ipv6: Check available headroom in ip6_xmit() even without options", we
    end up in neigh_hh_output() with 14 bytes headroom, 14 bytes hardware
    header and write 16 bytes, starting 2 bytes before the allocated buffer.
    
    Always check we're not writing before skb->head and, if the headroom is
    not enough, warn and drop the packet.
    
    v2:
     - instead of panicking with BUG_ON(), WARN_ON_ONCE() and drop the packet
       (Eric Dumazet)
     - if we avoid the panic, though, we need to explicitly check the headroom
       before the memcpy(), otherwise we'll have corrupted slabs on a running
       kernel, after we warn
     - use __skb_push() instead of skb_push(), as the headroom check is
       already implemented here explicitly (Eric Dumazet)
    
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd018cb37ea086d62e9d6db635a3c8893d8ad58e
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Thu Dec 6 19:30:36 2018 +0100

    ipv6: Check available headroom in ip6_xmit() even without options
    
    [ Upstream commit 66033f47ca60294a95fc85ec3a3cc909dab7b765 ]
    
    Even if we send an IPv6 packet without options, MAX_HEADER might not be
    enough to account for the additional headroom required by alignment of
    hardware headers.
    
    On a configuration without HYPERV_NET, WLAN, AX25, and with IPV6_TUNNEL,
    sending short SCTP packets over IPv4 over L2TP over IPv6, we start with
    100 bytes of allocated headroom in sctp_packet_transmit(), end up with 54
    bytes after l2tp_xmit_skb(), and 14 bytes in ip6_finish_output2().
    
    Those would be enough to append our 14 bytes header, but we're going to
    align that to 16 bytes, and write 2 bytes out of the allocated slab in
    neigh_hh_output().
    
    KASan says:
    
    [  264.967848] ==================================================================
    [  264.967861] BUG: KASAN: slab-out-of-bounds in ip6_finish_output2+0x1aec/0x1c70
    [  264.967866] Write of size 16 at addr 000000006af1c7fe by task netperf/6201
    [  264.967870]
    [  264.967876] CPU: 0 PID: 6201 Comm: netperf Not tainted 4.20.0-rc4+ #1
    [  264.967881] Hardware name: IBM 2827 H43 400 (z/VM 6.4.0)
    [  264.967887] Call Trace:
    [  264.967896] ([<00000000001347d6>] show_stack+0x56/0xa0)
    [  264.967903]  [<00000000017e379c>] dump_stack+0x23c/0x290
    [  264.967912]  [<00000000007bc594>] print_address_description+0xf4/0x290
    [  264.967919]  [<00000000007bc8fc>] kasan_report+0x13c/0x240
    [  264.967927]  [<000000000162f5e4>] ip6_finish_output2+0x1aec/0x1c70
    [  264.967935]  [<000000000163f890>] ip6_finish_output+0x430/0x7f0
    [  264.967943]  [<000000000163fe44>] ip6_output+0x1f4/0x580
    [  264.967953]  [<000000000163882a>] ip6_xmit+0xfea/0x1ce8
    [  264.967963]  [<00000000017396e2>] inet6_csk_xmit+0x282/0x3f8
    [  264.968033]  [<000003ff805fb0ba>] l2tp_xmit_skb+0xe02/0x13e0 [l2tp_core]
    [  264.968037]  [<000003ff80631192>] l2tp_eth_dev_xmit+0xda/0x150 [l2tp_eth]
    [  264.968041]  [<0000000001220020>] dev_hard_start_xmit+0x268/0x928
    [  264.968069]  [<0000000001330e8e>] sch_direct_xmit+0x7ae/0x1350
    [  264.968071]  [<000000000122359c>] __dev_queue_xmit+0x2b7c/0x3478
    [  264.968075]  [<00000000013d2862>] ip_finish_output2+0xce2/0x11a0
    [  264.968078]  [<00000000013d9b14>] ip_finish_output+0x56c/0x8c8
    [  264.968081]  [<00000000013ddd1e>] ip_output+0x226/0x4c0
    [  264.968083]  [<00000000013dbd6c>] __ip_queue_xmit+0x894/0x1938
    [  264.968100]  [<000003ff80bc3a5c>] sctp_packet_transmit+0x29d4/0x3648 [sctp]
    [  264.968116]  [<000003ff80b7bf68>] sctp_outq_flush_ctrl.constprop.5+0x8d0/0xe50 [sctp]
    [  264.968131]  [<000003ff80b7c716>] sctp_outq_flush+0x22e/0x7d8 [sctp]
    [  264.968146]  [<000003ff80b35c68>] sctp_cmd_interpreter.isra.16+0x530/0x6800 [sctp]
    [  264.968161]  [<000003ff80b3410a>] sctp_do_sm+0x222/0x648 [sctp]
    [  264.968177]  [<000003ff80bbddac>] sctp_primitive_ASSOCIATE+0xbc/0xf8 [sctp]
    [  264.968192]  [<000003ff80b93328>] __sctp_connect+0x830/0xc20 [sctp]
    [  264.968208]  [<000003ff80bb11ce>] sctp_inet_connect+0x2e6/0x378 [sctp]
    [  264.968212]  [<0000000001197942>] __sys_connect+0x21a/0x450
    [  264.968215]  [<000000000119aff8>] sys_socketcall+0x3d0/0xb08
    [  264.968218]  [<000000000184ea7a>] system_call+0x2a2/0x2c0
    
    [...]
    
    Just like ip_finish_output2() does for IPv4, check that we have enough
    headroom in ip6_xmit(), and reallocate it if we don't.
    
    This issue is older than git history.
    
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ffe5754d2823c34d0025255e87a02148cf867090
Author: Jiri Wiesner <jwiesner@suse.com>
Date:   Wed Dec 5 16:55:29 2018 +0100

    ipv4: ipv6: netfilter: Adjust the frag mem limit when truesize changes
    
    [ Upstream commit ebaf39e6032faf77218220707fc3fa22487784e0 ]
    
    The *_frag_reasm() functions are susceptible to miscalculating the byte
    count of packet fragments in case the truesize of a head buffer changes.
    The truesize member may be changed by the call to skb_unclone(), leaving
    the fragment memory limit counter unbalanced even if all fragments are
    processed. This miscalculation goes unnoticed as long as the network
    namespace which holds the counter is not destroyed.
    
    Should an attempt be made to destroy a network namespace that holds an
    unbalanced fragment memory limit counter the cleanup of the namespace
    never finishes. The thread handling the cleanup gets stuck in
    inet_frags_exit_net() waiting for the percpu counter to reach zero. The
    thread is usually in running state with a stacktrace similar to:
    
     PID: 1073   TASK: ffff880626711440  CPU: 1   COMMAND: "kworker/u48:4"
      #5 [ffff880621563d48] _raw_spin_lock at ffffffff815f5480
      #6 [ffff880621563d48] inet_evict_bucket at ffffffff8158020b
      #7 [ffff880621563d80] inet_frags_exit_net at ffffffff8158051c
      #8 [ffff880621563db0] ops_exit_list at ffffffff814f5856
      #9 [ffff880621563dd8] cleanup_net at ffffffff814f67c0
     #10 [ffff880621563e38] process_one_work at ffffffff81096f14
    
    It is not possible to create new network namespaces, and processes
    that call unshare() end up being stuck in uninterruptible sleep state
    waiting to acquire the net_mutex.
    
    The bug was observed in the IPv6 netfilter code by Per Sundstrom.
    I thank him for his analysis of the problem. The parts of this patch
    that apply to IPv4 and IPv6 fragment reassembly are preemptive measures.
    
    Signed-off-by: Jiri Wiesner <jwiesner@suse.com>
    Reported-by: Per Sundstrom <per.sundstrom@redqube.se>
    Acked-by: Peter Oskolkov <posk@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>