commit 99fea5647c9297be53f022547aa632e3582bfcb6
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Oct 14 09:48:17 2020 +0200

    Linux 4.9.239
    
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Link: https://lore.kernel.org/r/20201012132629.585664421@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43d1cfcf5798a8668b688aee1775a574f8502106
Author: Anant Thazhemadam <anant.thazhemadam@gmail.com>
Date:   Mon Oct 5 18:59:58 2020 +0530

    net: usb: rtl8150: set random MAC address when set_ethernet_addr() fails
    
    commit f45a4248ea4cc13ed50618ff066849f9587226b2 upstream.
    
    When get_registers() fails in set_ethernet_addr(),the uninitialized
    value of node_id gets copied over as the address.
    So, check the return value of get_registers().
    
    If get_registers() executed successfully (i.e., it returns
    sizeof(node_id)), copy over the MAC address using ether_addr_copy()
    (instead of using memcpy()).
    
    Else, if get_registers() failed instead, a randomly generated MAC
    address is set as the MAC address instead.
    
    Reported-by: syzbot+abbc768b560c84d92fd3@syzkaller.appspotmail.com
    Tested-by: syzbot+abbc768b560c84d92fd3@syzkaller.appspotmail.com
    Acked-by: Petko Manolov <petkan@nucleusys.com>
    Signed-off-by: Anant Thazhemadam <anant.thazhemadam@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 189394cf5e240341e2a60e60be2f6ccba21b6b00
Author: Vijay Balakrishna <vijayb@linux.microsoft.com>
Date:   Sat Oct 10 23:16:40 2020 -0700

    mm: khugepaged: recalculate min_free_kbytes after memory hotplug as expected by khugepaged
    
    commit 4aab2be0983031a05cb4a19696c9da5749523426 upstream.
    
    When memory is hotplug added or removed the min_free_kbytes should be
    recalculated based on what is expected by khugepaged.  Currently after
    hotplug, min_free_kbytes will be set to a lower default and higher
    default set when THP enabled is lost.
    
    This change restores min_free_kbytes as expected for THP consumers.
    
    [vijayb@linux.microsoft.com: v5]
      Link: https://lkml.kernel.org/r/1601398153-5517-1-git-send-email-vijayb@linux.microsoft.com
    
    Fixes: f000565adb77 ("thp: set recommended min free kbytes")
    Signed-off-by: Vijay Balakrishna <vijayb@linux.microsoft.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Pavel Tatashin <pasha.tatashin@soleen.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Allen Pais <apais@microsoft.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/1600305709-2319-2-git-send-email-vijayb@linux.microsoft.com
    Link: https://lkml.kernel.org/r/1600204258-13683-1-git-send-email-vijayb@linux.microsoft.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1cd6cc24e41cb0d23c74f3b490a6e911c41cd158
Author: Kajol Jain <kjain@linux.ibm.com>
Date:   Thu Aug 27 12:17:32 2020 +0530

    perf: Fix task_function_call() error handling
    
    [ Upstream commit 6d6b8b9f4fceab7266ca03d194f60ec72bd4b654 ]
    
    The error handling introduced by commit:
    
      2ed6edd33a21 ("perf: Add cond_resched() to task_function_call()")
    
    looses any return value from smp_call_function_single() that is not
    {0, -EINVAL}. This is a problem because it will return -EXNIO when the
    target CPU is offline. Worse, in that case it'll turn into an infinite
    loop.
    
    Fixes: 2ed6edd33a21 ("perf: Add cond_resched() to task_function_call()")
    Reported-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
    Signed-off-by: Kajol Jain <kjain@linux.ibm.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Reviewed-by: Barret Rhoden <brho@google.com>
    Tested-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
    Link: https://lkml.kernel.org/r/20200827064732.20860-1-kjain@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2f2a503643ad8204be8f8f8e7fb7f227b5972e4a
Author: David Howells <dhowells@redhat.com>
Date:   Fri Oct 2 14:04:51 2020 +0100

    rxrpc: Fix server keyring leak
    
    [ Upstream commit 38b1dc47a35ba14c3f4472138ea56d014c2d609b ]
    
    If someone calls setsockopt() twice to set a server key keyring, the first
    keyring is leaked.
    
    Fix it to return an error instead if the server key keyring is already set.
    
    Fixes: 17926a79320a ("[AF_RXRPC]: Provide secure RxRPC sockets for use by userspace and kernel both")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 81f997b4b9f4527be45699224ec7f7ac4970cef4
Author: David Howells <dhowells@redhat.com>
Date:   Thu Oct 1 11:57:40 2020 +0100

    rxrpc: Fix some missing _bh annotations on locking conn->state_lock
    
    [ Upstream commit fa1d113a0f96f9ab7e4fe4f8825753ba1e34a9d3 ]
    
    conn->state_lock may be taken in softirq mode, but a previous patch
    replaced an outer lock in the response-packet event handling code, and lost
    the _bh from that when doing so.
    
    Fix this by applying the _bh annotation to the state_lock locking.
    
    Fixes: a1399f8bb033 ("rxrpc: Call channels should have separate call number spaces")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 90a4dcfd864ca1854ff32e7feab457e786877091
Author: David Howells <dhowells@redhat.com>
Date:   Tue Sep 8 22:09:04 2020 +0100

    rxrpc: Downgrade the BUG() for unsupported token type in rxrpc_read()
    
    [ Upstream commit 9a059cd5ca7d9c5c4ca5a6e755cf72f230176b6a ]
    
    If rxrpc_read() (which allows KEYCTL_READ to read a key), sees a token of a
    type it doesn't recognise, it can BUG in a couple of places, which is
    unnecessary as it can easily get back to userspace.
    
    Fix this to print an error message instead.
    
    Fixes: 99455153d067 ("RxRPC: Parse security index 5 keys (Kerberos 5)")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 922888326eb52239f3a76bbb7aa3f1fb952c0076
Author: Marc Dionne <marc.dionne@auristor.com>
Date:   Fri Sep 4 14:01:24 2020 -0300

    rxrpc: Fix rxkad token xdr encoding
    
    [ Upstream commit 56305118e05b2db8d0395bba640ac9a3aee92624 ]
    
    The session key should be encoded with just the 8 data bytes and
    no length; ENCODE_DATA precedes it with a 4 byte length, which
    confuses some existing tools that try to parse this format.
    
    Add an ENCODE_BYTES macro that does not include a length, and use
    it for the key.  Also adjust the expected length.
    
    Note that commit 774521f353e1d ("rxrpc: Fix an assertion in
    rxrpc_read()") had fixed a BUG by changing the length rather than
    fixing the encoding.  The original length was correct.
    
    Fixes: 99455153d067 ("RxRPC: Parse security index 5 keys (Kerberos 5)")
    Signed-off-by: Marc Dionne <marc.dionne@auristor.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 22bc408f5d8c3087cbaf357e06d01341eda79fd0
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Sat Sep 26 21:33:43 2020 -0700

    mdio: fix mdio-thunder.c dependency & build error
    
    [ Upstream commit 7dbbcf496f2a4b6d82cfc7810a0746e160b79762 ]
    
    Fix build error by selecting MDIO_DEVRES for MDIO_THUNDER.
    Fixes this build error:
    
    ld: drivers/net/phy/mdio-thunder.o: in function `thunder_mdiobus_pci_probe':
    drivers/net/phy/mdio-thunder.c:78: undefined reference to `devm_mdiobus_alloc_size'
    
    Fixes: 379d7ac7ca31 ("phy: mdio-thunder: Add driver for Cavium Thunder SoC MDIO buses.")
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Cc: Andrew Lunn <andrew@lunn.ch>
    Cc: Heiner Kallweit <hkallweit1@gmail.com>
    Cc: netdev@vger.kernel.org
    Cc: David Daney <david.daney@cavium.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dbda849d1af6a0b1fa212df8d3db202ef157500c
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Sep 25 06:38:07 2020 -0700

    bonding: set dev->needed_headroom in bond_setup_by_slave()
    
    [ Upstream commit f32f19339596b214c208c0dba716f4b6cc4f6958 ]
    
    syzbot managed to crash a host by creating a bond
    with a GRE device.
    
    For non Ethernet device, bonding calls bond_setup_by_slave()
    instead of ether_setup(), and unfortunately dev->needed_headroom
    was not copied from the new added member.
    
    [  171.243095] skbuff: skb_under_panic: text:ffffffffa184b9ea len:116 put:20 head:ffff883f84012dc0 data:ffff883f84012dbc tail:0x70 end:0xd00 dev:bond0
    [  171.243111] ------------[ cut here ]------------
    [  171.243112] kernel BUG at net/core/skbuff.c:112!
    [  171.243117] invalid opcode: 0000 [#1] SMP KASAN PTI
    [  171.243469] gsmi: Log Shutdown Reason 0x03
    [  171.243505] Call Trace:
    [  171.243506]  <IRQ>
    [  171.243512]  [<ffffffffa171be59>] skb_push+0x49/0x50
    [  171.243516]  [<ffffffffa184b9ea>] ipgre_header+0x2a/0xf0
    [  171.243520]  [<ffffffffa17452d7>] neigh_connected_output+0xb7/0x100
    [  171.243524]  [<ffffffffa186f1d3>] ip6_finish_output2+0x383/0x490
    [  171.243528]  [<ffffffffa186ede2>] __ip6_finish_output+0xa2/0x110
    [  171.243531]  [<ffffffffa186acbc>] ip6_finish_output+0x2c/0xa0
    [  171.243534]  [<ffffffffa186abe9>] ip6_output+0x69/0x110
    [  171.243537]  [<ffffffffa186ac90>] ? ip6_output+0x110/0x110
    [  171.243541]  [<ffffffffa189d952>] mld_sendpack+0x1b2/0x2d0
    [  171.243544]  [<ffffffffa189d290>] ? mld_send_report+0xf0/0xf0
    [  171.243548]  [<ffffffffa189c797>] mld_ifc_timer_expire+0x2d7/0x3b0
    [  171.243551]  [<ffffffffa189c4c0>] ? mld_gq_timer_expire+0x50/0x50
    [  171.243556]  [<ffffffffa0fea270>] call_timer_fn+0x30/0x130
    [  171.243559]  [<ffffffffa0fea17c>] expire_timers+0x4c/0x110
    [  171.243563]  [<ffffffffa0fea0e3>] __run_timers+0x213/0x260
    [  171.243566]  [<ffffffffa0fecb7d>] ? ktime_get+0x3d/0xa0
    [  171.243570]  [<ffffffffa0ff9c4e>] ? clockevents_program_event+0x7e/0xe0
    [  171.243574]  [<ffffffffa0f7e5d5>] ? sched_clock_cpu+0x15/0x190
    [  171.243577]  [<ffffffffa0fe973d>] run_timer_softirq+0x1d/0x40
    [  171.243581]  [<ffffffffa1c00152>] __do_softirq+0x152/0x2f0
    [  171.243585]  [<ffffffffa0f44e1f>] irq_exit+0x9f/0xb0
    [  171.243588]  [<ffffffffa1a02e1d>] smp_apic_timer_interrupt+0xfd/0x1a0
    [  171.243591]  [<ffffffffa1a01ea6>] apic_timer_interrupt+0x86/0x90
    
    Fixes: f5184d267c1a ("net: Allow netdevices to specify needed head/tailroom")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 43bfc48e86840f33483fe132eea8adba4cf00156
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Fri Sep 25 14:42:56 2020 +1000

    xfrm: Use correct address family in xfrm_state_find
    
    [ Upstream commit e94ee171349db84c7cfdc5fefbebe414054d0924 ]
    
    The struct flowi must never be interpreted by itself as its size
    depends on the address family.  Therefore it must always be grouped
    with its original family value.
    
    In this particular instance, the original family value is lost in
    the function xfrm_state_find.  Therefore we get a bogus read when
    it's coupled with the wrong family which would occur with inter-
    family xfrm states.
    
    This patch fixes it by keeping the original family value.
    
    Note that the same bug could potentially occur in LSM through
    the xfrm_state_pol_flow_match hook.  I checked the current code
    there and it seems to be safe for now as only secid is used which
    is part of struct flowi_common.  But that API should be changed
    so that so that we don't get new bugs in the future.  We could
    do that by replacing fl with just secid or adding a family field.
    
    Reported-by: syzbot+577fbac3145a6eb2e7a5@syzkaller.appspotmail.com
    Fixes: 48b8d78315bf ("[XFRM]: State selection update to use inner...")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7529b2338ecba610cd54f9ac3b936cf13b0425a4
Author: Voon Weifeng <weifeng.voon@intel.com>
Date:   Wed Sep 23 16:56:14 2020 +0800

    net: stmmac: removed enabling eee in EEE set callback
    
    [ Upstream commit 7241c5a697479c7d0c5a96595822cdab750d41ae ]
    
    EEE should be only be enabled during stmmac_mac_link_up() when the
    link are up and being set up properly. set_eee should only do settings
    configuration and disabling the eee.
    
    Without this fix, turning on EEE using ethtool will return
    "Operation not supported". This is due to the driver is in a dead loop
    waiting for eee to be advertised in the for eee to be activated but the
    driver will only configure the EEE advertisement after the eee is
    activated.
    
    Ethtool should only return "Operation not supported" if there is no EEE
    capbility in the MAC controller.
    
    Fixes: 8a7493e58ad6 ("net: stmmac: Fix a race in EEE enable callback")
    Signed-off-by: Voon Weifeng <weifeng.voon@intel.com>
    Acked-by: Mark Gross <mgross@linux.intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5f334eee28983a58b3cb8cf004b76b9a02d09649
Author: Antony Antony <antony.antony@secunet.com>
Date:   Fri Sep 4 08:50:29 2020 +0200

    xfrm: clone whole liftime_cur structure in xfrm_do_migrate
    
    [ Upstream commit 8366685b2883e523f91e9816d7be371eb1144749 ]
    
    When we clone state only add_time was cloned. It missed values like
    bytes, packets.  Now clone the all members of the structure.
    
    v1->v3:
     - use memcpy to copy the entire structure
    
    Fixes: 80c9abaabf42 ("[XFRM]: Extension for dynamic update of endpoint address(es)")
    Signed-off-by: Antony Antony <antony.antony@secunet.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a9326ecfd6e50fed150b22c2c9e5b733940be374
Author: Antony Antony <antony.antony@secunet.com>
Date:   Fri Sep 4 08:49:55 2020 +0200

    xfrm: clone XFRMA_REPLAY_ESN_VAL in xfrm_do_migrate
    
    [ Upstream commit 91a46c6d1b4fcbfa4773df9421b8ad3e58088101 ]
    
    XFRMA_REPLAY_ESN_VAL was not cloned completely from the old to the new.
    Migrate this attribute during XFRMA_MSG_MIGRATE
    
    v1->v2:
     - move curleft cloning to a separate patch
    
    Fixes: af2f464e326e ("xfrm: Assign esn pointers when cloning a state")
    Signed-off-by: Antony Antony <antony.antony@secunet.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 171dfb5c1267c5dfe6db73d7dead6af72df0d768
Author: Philip Yang <Philip.Yang@amd.com>
Date:   Tue Sep 15 17:07:35 2020 -0400

    drm/amdgpu: prevent double kfree ttm->sg
    
    [ Upstream commit 1d0e16ac1a9e800598dcfa5b6bc53b704a103390 ]
    
    Set ttm->sg to NULL after kfree, to avoid memory corruption backtrace:
    
    [  420.932812] kernel BUG at
    /build/linux-do9eLF/linux-4.15.0/mm/slub.c:295!
    [  420.934182] invalid opcode: 0000 [#1] SMP NOPTI
    [  420.935445] Modules linked in: xt_conntrack ipt_MASQUERADE
    [  420.951332] Hardware name: Dell Inc. PowerEdge R7525/0PYVT1, BIOS
    1.5.4 07/09/2020
    [  420.952887] RIP: 0010:__slab_free+0x180/0x2d0
    [  420.954419] RSP: 0018:ffffbe426291fa60 EFLAGS: 00010246
    [  420.955963] RAX: ffff9e29263e9c30 RBX: ffff9e29263e9c30 RCX:
    000000018100004b
    [  420.957512] RDX: ffff9e29263e9c30 RSI: fffff3d33e98fa40 RDI:
    ffff9e297e407a80
    [  420.959055] RBP: ffffbe426291fb00 R08: 0000000000000001 R09:
    ffffffffc0d39ade
    [  420.960587] R10: ffffbe426291fb20 R11: ffff9e49ffdd4000 R12:
    ffff9e297e407a80
    [  420.962105] R13: fffff3d33e98fa40 R14: ffff9e29263e9c30 R15:
    ffff9e2954464fd8
    [  420.963611] FS:  00007fa2ea097780(0000) GS:ffff9e297e840000(0000)
    knlGS:0000000000000000
    [  420.965144] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  420.966663] CR2: 00007f16bfffefb8 CR3: 0000001ff0c62000 CR4:
    0000000000340ee0
    [  420.968193] Call Trace:
    [  420.969703]  ? __page_cache_release+0x3c/0x220
    [  420.971294]  ? amdgpu_ttm_tt_unpopulate+0x5e/0x80 [amdgpu]
    [  420.972789]  kfree+0x168/0x180
    [  420.974353]  ? amdgpu_ttm_tt_set_user_pages+0x64/0xc0 [amdgpu]
    [  420.975850]  ? kfree+0x168/0x180
    [  420.977403]  amdgpu_ttm_tt_unpopulate+0x5e/0x80 [amdgpu]
    [  420.978888]  ttm_tt_unpopulate.part.10+0x53/0x60 [amdttm]
    [  420.980357]  ttm_tt_destroy.part.11+0x4f/0x60 [amdttm]
    [  420.981814]  ttm_tt_destroy+0x13/0x20 [amdttm]
    [  420.983273]  ttm_bo_cleanup_memtype_use+0x36/0x80 [amdttm]
    [  420.984725]  ttm_bo_release+0x1c9/0x360 [amdttm]
    [  420.986167]  amdttm_bo_put+0x24/0x30 [amdttm]
    [  420.987663]  amdgpu_bo_unref+0x1e/0x30 [amdgpu]
    [  420.989165]  amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu+0x9ca/0xb10
    [amdgpu]
    [  420.990666]  kfd_ioctl_alloc_memory_of_gpu+0xef/0x2c0 [amdgpu]
    
    Signed-off-by: Philip Yang <Philip.Yang@amd.com>
    Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c5543f392aaf7bf1cfb7f04821e3c9e16297cb76
Author: Dumitru Ceara <dceara@redhat.com>
Date:   Wed Oct 7 17:48:03 2020 +0200

    openvswitch: handle DNAT tuple collision
    
    commit 8aa7b526dc0b5dbf40c1b834d76a667ad672a410 upstream.
    
    With multiple DNAT rules it's possible that after destination
    translation the resulting tuples collide.
    
    For example, two openvswitch flows:
    nw_dst=10.0.0.10,tp_dst=10, actions=ct(commit,table=2,nat(dst=20.0.0.1:20))
    nw_dst=10.0.0.20,tp_dst=10, actions=ct(commit,table=2,nat(dst=20.0.0.1:20))
    
    Assuming two TCP clients initiating the following connections:
    10.0.0.10:5000->10.0.0.10:10
    10.0.0.10:5000->10.0.0.20:10
    
    Both tuples would translate to 10.0.0.10:5000->20.0.0.1:20 causing
    nf_conntrack_confirm() to fail because of tuple collision.
    
    Netfilter handles this case by allocating a null binding for SNAT at
    egress by default.  Perform the same operation in openvswitch for DNAT
    if no explicit SNAT is requested by the user and allocate a null binding
    for SNAT for packets in the "original" direction.
    
    Reported-at: https://bugzilla.redhat.com/1877128
    Suggested-by: Florian Westphal <fw@strlen.de>
    Fixes: 05752523e565 ("openvswitch: Interface with NAT.")
    Signed-off-by: Dumitru Ceara <dceara@redhat.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8dd5ea068f8df18399be9cd7f426797b37c9abde
Author: Anant Thazhemadam <anant.thazhemadam@gmail.com>
Date:   Mon Oct 5 02:25:36 2020 +0530

    net: team: fix memory leak in __team_options_register
    
    commit 9a9e77495958c7382b2438bc19746dd3aaaabb8e upstream.
    
    The variable "i" isn't initialized back correctly after the first loop
    under the label inst_rollback gets executed.
    
    The value of "i" is assigned to be option_count - 1, and the ensuing
    loop (under alloc_rollback) begins by initializing i--.
    Thus, the value of i when the loop begins execution will now become
    i = option_count - 2.
    
    Thus, when kfree(dst_opts[i]) is called in the second loop in this
    order, (i.e., inst_rollback followed by alloc_rollback),
    dst_optsp[option_count - 2] is the first element freed, and
    dst_opts[option_count - 1] does not get freed, and thus, a memory
    leak is caused.
    
    This memory leak can be fixed, by assigning i = option_count (instead of
    option_count - 1).
    
    Fixes: 80f7c6683fe0 ("team: add support for per-port options")
    Reported-by: syzbot+69b804437cfec30deac3@syzkaller.appspotmail.com
    Tested-by: syzbot+69b804437cfec30deac3@syzkaller.appspotmail.com
    Signed-off-by: Anant Thazhemadam <anant.thazhemadam@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2390e1402694b0a183ec0be4aec7db2c9c03e014
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Sep 25 06:38:08 2020 -0700

    team: set dev->needed_headroom in team_setup_by_port()
    
    commit 89d01748b2354e210b5d4ea47bc25a42a1b42c82 upstream.
    
    Some devices set needed_headroom. If we ignore it, we might
    end up crashing in various skb_push() for example in ipgre_header()
    since some layers assume enough headroom has been reserved.
    
    Fixes: 1d76efe1577b ("team: add support for non-ethernet devices")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b4471a89e1cc27be9179480a735979fa420216f
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Oct 8 01:38:31 2020 -0700

    sctp: fix sctp_auth_init_hmacs() error path
    
    commit d42ee76ecb6c49d499fc5eb32ca34468d95dbc3e upstream.
    
    After freeing ep->auth_hmacs we have to clear the pointer
    or risk use-after-free as reported by syzbot:
    
    BUG: KASAN: use-after-free in sctp_auth_destroy_hmacs net/sctp/auth.c:509 [inline]
    BUG: KASAN: use-after-free in sctp_auth_destroy_hmacs net/sctp/auth.c:501 [inline]
    BUG: KASAN: use-after-free in sctp_auth_free+0x17e/0x1d0 net/sctp/auth.c:1070
    Read of size 8 at addr ffff8880a8ff52c0 by task syz-executor941/6874
    
    CPU: 0 PID: 6874 Comm: syz-executor941 Not tainted 5.9.0-rc8-syzkaller #0
    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+0x198/0x1fd lib/dump_stack.c:118
     print_address_description.constprop.0.cold+0xae/0x497 mm/kasan/report.c:383
     __kasan_report mm/kasan/report.c:513 [inline]
     kasan_report.cold+0x1f/0x37 mm/kasan/report.c:530
     sctp_auth_destroy_hmacs net/sctp/auth.c:509 [inline]
     sctp_auth_destroy_hmacs net/sctp/auth.c:501 [inline]
     sctp_auth_free+0x17e/0x1d0 net/sctp/auth.c:1070
     sctp_endpoint_destroy+0x95/0x240 net/sctp/endpointola.c:203
     sctp_endpoint_put net/sctp/endpointola.c:236 [inline]
     sctp_endpoint_free+0xd6/0x110 net/sctp/endpointola.c:183
     sctp_destroy_sock+0x9c/0x3c0 net/sctp/socket.c:4981
     sctp_v6_destroy_sock+0x11/0x20 net/sctp/socket.c:9415
     sk_common_release+0x64/0x390 net/core/sock.c:3254
     sctp_close+0x4ce/0x8b0 net/sctp/socket.c:1533
     inet_release+0x12e/0x280 net/ipv4/af_inet.c:431
     inet6_release+0x4c/0x70 net/ipv6/af_inet6.c:475
     __sock_release+0xcd/0x280 net/socket.c:596
     sock_close+0x18/0x20 net/socket.c:1277
     __fput+0x285/0x920 fs/file_table.c:281
     task_work_run+0xdd/0x190 kernel/task_work.c:141
     exit_task_work include/linux/task_work.h:25 [inline]
     do_exit+0xb7d/0x29f0 kernel/exit.c:806
     do_group_exit+0x125/0x310 kernel/exit.c:903
     __do_sys_exit_group kernel/exit.c:914 [inline]
     __se_sys_exit_group kernel/exit.c:912 [inline]
     __x64_sys_exit_group+0x3a/0x50 kernel/exit.c:912
     do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    RIP: 0033:0x43f278
    Code: Bad RIP value.
    RSP: 002b:00007fffe0995c38 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 000000000043f278
    RDX: 0000000000000000 RSI: 000000000000003c RDI: 0000000000000000
    RBP: 00000000004bf068 R08: 00000000000000e7 R09: ffffffffffffffd0
    R10: 0000000020000000 R11: 0000000000000246 R12: 0000000000000001
    R13: 00000000006d1180 R14: 0000000000000000 R15: 0000000000000000
    
    Allocated by task 6874:
     kasan_save_stack+0x1b/0x40 mm/kasan/common.c:48
     kasan_set_track mm/kasan/common.c:56 [inline]
     __kasan_kmalloc.constprop.0+0xbf/0xd0 mm/kasan/common.c:461
     kmem_cache_alloc_trace+0x174/0x300 mm/slab.c:3554
     kmalloc include/linux/slab.h:554 [inline]
     kmalloc_array include/linux/slab.h:593 [inline]
     kcalloc include/linux/slab.h:605 [inline]
     sctp_auth_init_hmacs+0xdb/0x3b0 net/sctp/auth.c:464
     sctp_auth_init+0x8a/0x4a0 net/sctp/auth.c:1049
     sctp_setsockopt_auth_supported net/sctp/socket.c:4354 [inline]
     sctp_setsockopt+0x477e/0x97f0 net/sctp/socket.c:4631
     __sys_setsockopt+0x2db/0x610 net/socket.c:2132
     __do_sys_setsockopt net/socket.c:2143 [inline]
     __se_sys_setsockopt net/socket.c:2140 [inline]
     __x64_sys_setsockopt+0xba/0x150 net/socket.c:2140
     do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Freed by task 6874:
     kasan_save_stack+0x1b/0x40 mm/kasan/common.c:48
     kasan_set_track+0x1c/0x30 mm/kasan/common.c:56
     kasan_set_free_info+0x1b/0x30 mm/kasan/generic.c:355
     __kasan_slab_free+0xd8/0x120 mm/kasan/common.c:422
     __cache_free mm/slab.c:3422 [inline]
     kfree+0x10e/0x2b0 mm/slab.c:3760
     sctp_auth_destroy_hmacs net/sctp/auth.c:511 [inline]
     sctp_auth_destroy_hmacs net/sctp/auth.c:501 [inline]
     sctp_auth_init_hmacs net/sctp/auth.c:496 [inline]
     sctp_auth_init_hmacs+0x2b7/0x3b0 net/sctp/auth.c:454
     sctp_auth_init+0x8a/0x4a0 net/sctp/auth.c:1049
     sctp_setsockopt_auth_supported net/sctp/socket.c:4354 [inline]
     sctp_setsockopt+0x477e/0x97f0 net/sctp/socket.c:4631
     __sys_setsockopt+0x2db/0x610 net/socket.c:2132
     __do_sys_setsockopt net/socket.c:2143 [inline]
     __se_sys_setsockopt net/socket.c:2140 [inline]
     __x64_sys_setsockopt+0xba/0x150 net/socket.c:2140
     do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: 1f485649f529 ("[SCTP]: Implement SCTP-AUTH internals")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Vlad Yasevich <vyasevich@gmail.com>
    Cc: Neil Horman <nhorman@tuxdriver.com>
    Cc: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c5aaf93d033564d602f0034a488b728949f9968
Author: Hugh Dickins <hughd@google.com>
Date:   Fri Oct 9 20:07:59 2020 -0700

    mm/khugepaged: fix filemap page_to_pgoff(page) != offset
    
    commit 033b5d77551167f8c24ca862ce83d3e0745f9245 upstream.
    
    There have been elusive reports of filemap_fault() hitting its
    VM_BUG_ON_PAGE(page_to_pgoff(page) != offset, page) on kernels built
    with CONFIG_READ_ONLY_THP_FOR_FS=y.
    
    Suren has hit it on a kernel with CONFIG_READ_ONLY_THP_FOR_FS=y and
    CONFIG_NUMA is not set: and he has analyzed it down to how khugepaged
    without NUMA reuses the same huge page after collapse_file() failed
    (whereas NUMA targets its allocation to the respective node each time).
    And most of us were usually testing with CONFIG_NUMA=y kernels.
    
    collapse_file(old start)
      new_page = khugepaged_alloc_page(hpage)
      __SetPageLocked(new_page)
      new_page->index = start // hpage->index=old offset
      new_page->mapping = mapping
      xas_store(&xas, new_page)
    
                              filemap_fault
                                page = find_get_page(mapping, offset)
                                // if offset falls inside hpage then
                                // compound_head(page) == hpage
                                lock_page_maybe_drop_mmap()
                                  __lock_page(page)
    
      // collapse fails
      xas_store(&xas, old page)
      new_page->mapping = NULL
      unlock_page(new_page)
    
    collapse_file(new start)
      new_page = khugepaged_alloc_page(hpage)
      __SetPageLocked(new_page)
      new_page->index = start // hpage->index=new offset
      new_page->mapping = mapping // mapping becomes valid again
    
                                // since compound_head(page) == hpage
                                // page_to_pgoff(page) got changed
                                VM_BUG_ON_PAGE(page_to_pgoff(page) != offset)
    
    An initial patch replaced __SetPageLocked() by lock_page(), which did
    fix the race which Suren illustrates above.  But testing showed that it's
    not good enough: if the racing task's __lock_page() gets delayed long
    after its find_get_page(), then it may follow collapse_file(new start)'s
    successful final unlock_page(), and crash on the same VM_BUG_ON_PAGE.
    
    It could be fixed by relaxing filemap_fault()'s VM_BUG_ON_PAGE to a
    check and retry (as is done for mapping), with similar relaxations in
    find_lock_entry() and pagecache_get_page(): but it's not obvious what
    else might get caught out; and khugepaged non-NUMA appears to be unique
    in exposing a page to page cache, then revoking, without going through
    a full cycle of freeing before reuse.
    
    Instead, non-NUMA khugepaged_prealloc_page() release the old page
    if anyone else has a reference to it (1% of cases when I tested).
    
    Although never reported on huge tmpfs, I believe its find_lock_entry()
    has been at similar risk; but huge tmpfs does not rely on khugepaged
    for its normal working nearly so much as READ_ONLY_THP_FOR_FS does.
    
    Reported-by: Denis Lisov <dennis.lissov@gmail.com>
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=206569
    Link: https://lore.kernel.org/linux-mm/?q=20200219144635.3b7417145de19b65f258c943%40linux-foundation.org
    Reported-by: Qian Cai <cai@lca.pw>
    Link: https://lore.kernel.org/linux-xfs/?q=20200616013309.GB815%40lca.pw
    Reported-and-analyzed-by: Suren Baghdasaryan <surenb@google.com>
    Fixes: 87c460a0bded ("mm/khugepaged: collapse_shmem() without freezing new_page")
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Cc: stable@vger.kernel.org # v4.9+
    Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 925d7af7a7cedf453bef429df4ac3737d1604f24
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Oct 7 01:42:46 2020 -0700

    macsec: avoid use-after-free in macsec_handle_frame()
    
    commit c7cc9200e9b4a2ac172e990ef1975cd42975dad6 upstream.
    
    De-referencing skb after call to gro_cells_receive() is not allowed.
    We need to fetch skb->len earlier.
    
    Fixes: 5491e7c6b1a9 ("macsec: enable GRO and RPS on macsec devices")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Paolo Abeni <pabeni@redhat.com>
    Acked-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03170ea7eb98ac6cc334f7225e8f30e5cc7ddf18
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Tue Sep 29 12:40:31 2020 -0400

    ftrace: Move RCU is watching check after recursion check
    
    commit b40341fad6cc2daa195f8090fd3348f18fff640a upstream.
    
    The first thing that the ftrace function callback helper functions should do
    is to check for recursion. Peter Zijlstra found that when
    "rcu_is_watching()" had its notrace removed, it caused perf function tracing
    to crash. This is because the call of rcu_is_watching() is tested before
    function recursion is checked and and if it is traced, it will cause an
    infinite recursion loop.
    
    rcu_is_watching() should still stay notrace, but to prevent this should
    never had crashed in the first place. The recursion prevention must be the
    first thing done in callback functions.
    
    Link: https://lore.kernel.org/r/20200929112541.GM2628@hirez.programming.kicks-ass.net
    
    Cc: stable@vger.kernel.org
    Cc: Paul McKenney <paulmck@kernel.org>
    Fixes: c68c0fa293417 ("ftrace: Have ftrace_ops_get_func() handle RCU and PER_CPU flags too")
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reported-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6b6cf4d72fe107ae21ddaae1aa5a9b4622efbd5
Author: Miquel Raynal <miquel.raynal@bootlin.com>
Date:   Tue May 19 15:00:26 2020 +0200

    mtd: rawnand: sunxi: Fix the probe error path
    
    commit 3d84515ffd8fb657e10fa5b1215e9f095fa7efca upstream.
    
    nand_release() is supposed be called after MTD device registration.
    Here, only nand_scan() happened, so use nand_cleanup() instead.
    
    Fixes: 1fef62c1423b ("mtd: nand: add sunxi NAND flash controller support")
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-54-miquel.raynal@bootlin.com
    [iwamatsu: adjust filename]
    Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 854aa409cdc690bcf3b6f21a2b089812eb508e33
Author: Tommi Rantala <tommi.t.rantala@nokia.com>
Date:   Thu Mar 5 10:37:12 2020 +0200

    perf top: Fix stdio interface input handling with glibc 2.28+
    
    commit 29b4f5f188571c112713c35cc87eefb46efee612 upstream.
    
    Since glibc 2.28 when running 'perf top --stdio', input handling no
    longer works, but hitting any key always just prints the "Mapped keys"
    help text.
    
    To fix it, call clearerr() in the display_thread() loop to clear any EOF
    sticky errors, as instructed in the glibc NEWS file
    (https://sourceware.org/git/?p=glibc.git;a=blob;f=NEWS):
    
     * All stdio functions now treat end-of-file as a sticky condition.  If you
       read from a file until EOF, and then the file is enlarged by another
       process, you must call clearerr or another function with the same effect
       (e.g. fseek, rewind) before you can read the additional data.  This
       corrects a longstanding C99 conformance bug.  It is most likely to affect
       programs that use stdio to read interactive input from a terminal.
       (Bug #1190.)
    
    Signed-off-by: Tommi Rantala <tommi.t.rantala@nokia.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/20200305083714.9381-2-tommi.t.rantala@nokia.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ac70e919a93fdde551dcd17436610acd34c9e057
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Mon Jul 13 11:12:54 2020 +0900

    driver core: Fix probe_count imbalance in really_probe()
    
    commit b292b50b0efcc7095d8bf15505fba6909bb35dce upstream.
    
    syzbot is reporting hung task in wait_for_device_probe() [1]. At least,
    we always need to decrement probe_count if we incremented probe_count in
    really_probe().
    
    However, since I can't find "Resources present before probing" message in
    the console log, both "this message simply flowed off" and "syzbot is not
    hitting this path" will be possible. Therefore, while we are at it, let's
    also prepare for concurrent wait_for_device_probe() calls by replacing
    wake_up() with wake_up_all().
    
    [1] https://syzkaller.appspot.com/bug?id=25c833f1983c9c1d512f4ff860dd0d7f5a2e2c0f
    
    Reported-by: syzbot <syzbot+805f5f6ae37411f15b64@syzkaller.appspotmail.com>
    Fixes: 7c35e699c88bd607 ("driver core: Print device when resources present in really_probe()")
    Cc: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: stable <stable@kernel.org>
    Link: https://lore.kernel.org/r/20200713021254.3444-1-penguin-kernel@I-love.SAKURA.ne.jp
    [iwamatsu: Drop patch for deferred_probe_timeout_work_func()]
    Signed-off-by: Nobuhiro Iwamatsu (CIP) <nobuhiro1.iwamatsu@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c25dcb0c07a7e090fd9da5333cc5de024dd7d23f
Author: Aaron Ma <aaron.ma@canonical.com>
Date:   Sat Oct 3 01:09:16 2020 +0800

    platform/x86: thinkpad_acpi: re-initialize ACPI buffer size when reuse
    
    commit 720ef73d1a239e33c3ad8fac356b9b1348e68aaf upstream.
    
    Evaluating ACPI _BCL could fail, then ACPI buffer size will be set to 0.
    When reuse this ACPI buffer, AE_BUFFER_OVERFLOW will be triggered.
    
    Re-initialize buffer size will make ACPI evaluate successfully.
    
    Fixes: 46445b6b896fd ("thinkpad-acpi: fix handle locate for video and query of _BCL")
    Signed-off-by: Aaron Ma <aaron.ma@canonical.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1323ff9dde1b9ff65401913dfb82d1ed1285f201
Author: Tom Rix <trix@redhat.com>
Date:   Sun Sep 13 12:02:03 2020 -0700

    platform/x86: thinkpad_acpi: initialize tp_nvram_state variable
    
    commit 5f38b06db8af3ed6c2fc1b427504ca56fae2eacc upstream.
    
    clang static analysis flags this represenative problem
    thinkpad_acpi.c:2523:7: warning: Branch condition evaluates
      to a garbage value
                    if (!oldn->mute ||
                        ^~~~~~~~~~~
    
    In hotkey_kthread() mute is conditionally set by hotkey_read_nvram()
    but unconditionally checked by hotkey_compare_and_issue_event().
    So the tp_nvram_state variable s[2] needs to be initialized.
    
    Fixes: 01e88f25985d ("ACPI: thinkpad-acpi: add CMOS NVRAM polling for hot keys (v9)")
    Signed-off-by: Tom Rix <trix@redhat.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: mark gross <mgross@linux.intel.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 80736e23232e7b46a125e2d31687543c584f3e96
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Mon Oct 5 10:56:22 2020 -0700

    usermodehelper: reset umask to default before executing user process
    
    commit 4013c1496c49615d90d36b9d513eee8e369778e9 upstream.
    
    Kernel threads intentionally do CLONE_FS in order to follow any changes
    that 'init' does to set up the root directory (or cwd).
    
    It is admittedly a bit odd, but it avoids the situation where 'init'
    does some extensive setup to initialize the system environment, and then
    we execute a usermode helper program, and it uses the original FS setup
    from boot time that may be very limited and incomplete.
    
    [ Both Al Viro and Eric Biederman point out that 'pivot_root()' will
      follow the root regardless, since it fixes up other users of root (see
      chroot_fs_refs() for details), but overmounting root and doing a
      chroot() would not. ]
    
    However, Vegard Nossum noticed that the CLONE_FS not only means that we
    follow the root and current working directories, it also means we share
    umask with whatever init changed it to. That wasn't intentional.
    
    Just reset umask to the original default (0022) before actually starting
    the usermode helper program.
    
    Reported-by: Vegard Nossum <vegard.nossum@oracle.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Acked-by: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 55422f175ece9b058febb6dd6ba1671616d083ce
Author: Anant Thazhemadam <anant.thazhemadam@gmail.com>
Date:   Wed Oct 7 09:24:01 2020 +0530

    net: wireless: nl80211: fix out-of-bounds access in nl80211_del_key()
    
    commit 3dc289f8f139997f4e9d3cfccf8738f20d23e47b upstream.
    
    In nl80211_parse_key(), key.idx is first initialized as -1.
    If this value of key.idx remains unmodified and gets returned, and
    nl80211_key_allowed() also returns 0, then rdev_del_key() gets called
    with key.idx = -1.
    This causes an out-of-bounds array access.
    
    Handle this issue by checking if the value of key.idx after
    nl80211_parse_key() is called and return -EINVAL if key.idx < 0.
    
    Cc: stable@vger.kernel.org
    Reported-by: syzbot+b1bb342d1d097516cbda@syzkaller.appspotmail.com
    Tested-by: syzbot+b1bb342d1d097516cbda@syzkaller.appspotmail.com
    Signed-off-by: Anant Thazhemadam <anant.thazhemadam@gmail.com>
    Link: https://lore.kernel.org/r/20201007035401.9522-1-anant.thazhemadam@gmail.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f1adb22fc0c567d65e8c56cc04d633d2fa1bfb4
Author: Peilin Ye <yepeilin.cs@gmail.com>
Date:   Thu Sep 24 09:43:48 2020 -0400

    fbcon: Fix global-out-of-bounds read in fbcon_get_font()
    
    commit 5af08640795b2b9a940c9266c0260455377ae262 upstream.
    
    fbcon_get_font() is reading out-of-bounds. A malicious user may resize
    `vc->vc_font.height` to a large value, causing fbcon_get_font() to
    read out of `fontdata`.
    
    fbcon_get_font() handles both built-in and user-provided fonts.
    Fortunately, recently we have added FONT_EXTRA_WORDS support for built-in
    fonts, so fix it by adding range checks using FNTSIZE().
    
    This patch depends on patch "fbdev, newport_con: Move FONT_EXTRA_WORDS
    macros into linux/font.h", and patch "Fonts: Support FONT_EXTRA_WORDS
    macros for built-in fonts".
    
    Cc: stable@vger.kernel.org
    Reported-and-tested-by: syzbot+29d4ed7f3bdedf2aa2fd@syzkaller.appspotmail.com
    Link: https://syzkaller.appspot.com/bug?id=08b8be45afea11888776f897895aef9ad1c3ecfd
    Signed-off-by: Peilin Ye <yepeilin.cs@gmail.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/b34544687a1a09d6de630659eb7a773f4953238b.1600953813.git.yepeilin.cs@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 919829cea8343e6cc1e47d174c0fd3594ad7307b
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Tue Sep 22 09:29:31 2020 +0200

    Revert "ravb: Fixed to be able to unload modules"
    
    commit 77972b55fb9d35d4a6b0abca99abffaa4ec6a85b upstream.
    
    This reverts commit 1838d6c62f57836639bd3d83e7855e0ee4f6defc.
    
    This commit moved the ravb_mdio_init() call (and thus the
    of_mdiobus_register() call) from the ravb_probe() to the ravb_open()
    call.  This causes a regression during system resume (s2idle/s2ram), as
    new PHY devices cannot be bound while suspended.
    
    During boot, the Micrel PHY is detected like this:
    
        Micrel KSZ9031 Gigabit PHY e6800000.ethernet-ffffffff:00: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus:phy_addr=e6800000.ethernet-ffffffff:00, irq=228)
        ravb e6800000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
    
    During system suspend, (A) defer_all_probes is set to true, and (B)
    usermodehelper_disabled is set to UMH_DISABLED, to avoid drivers being
    probed while suspended.
    
      A. If CONFIG_MODULES=n, phy_device_register() calling device_add()
         merely adds the device, but does not probe it yet, as
         really_probe() returns early due to defer_all_probes being set:
    
           dpm_resume+0x128/0x4f8
             device_resume+0xcc/0x1b0
               dpm_run_callback+0x74/0x340
                 ravb_resume+0x190/0x1b8
                   ravb_open+0x84/0x770
                     of_mdiobus_register+0x1e0/0x468
                       of_mdiobus_register_phy+0x1b8/0x250
                         of_mdiobus_phy_device_register+0x178/0x1e8
                           phy_device_register+0x114/0x1b8
                             device_add+0x3d4/0x798
                               bus_probe_device+0x98/0xa0
                                 device_initial_probe+0x10/0x18
                                   __device_attach+0xe4/0x140
                                     bus_for_each_drv+0x64/0xc8
                                       __device_attach_driver+0xb8/0xe0
                                         driver_probe_device.part.11+0xc4/0xd8
                                           really_probe+0x32c/0x3b8
    
         Later, phy_attach_direct() notices no PHY driver has been bound,
         and falls back to the Generic PHY, leading to degraded operation:
    
           Generic PHY e6800000.ethernet-ffffffff:00: attached PHY driver [Generic PHY] (mii_bus:phy_addr=e6800000.ethernet-ffffffff:00, irq=POLL)
           ravb e6800000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
    
      B. If CONFIG_MODULES=y, request_module() returns early with -EBUSY due
         to UMH_DISABLED, and MDIO initialization fails completely:
    
           mdio_bus e6800000.ethernet-ffffffff:00: error -16 loading PHY driver module for ID 0x00221622
           ravb e6800000.ethernet eth0: failed to initialize MDIO
           PM: dpm_run_callback(): ravb_resume+0x0/0x1b8 returns -16
           PM: Device e6800000.ethernet failed to resume: error -16
    
         Ignoring -EBUSY in phy_request_driver_module(), like was done for
         -ENOENT in commit 21e194425abd65b5 ("net: phy: fix issue with loading
         PHY driver w/o initramfs"), would makes it fall back to the Generic
         PHY, like in the CONFIG_MODULES=n case.
    
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Cc: stable@vger.kernel.org
    Reviewed-by: Sergei Shtylyov <sergei.shtylyov@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23283c874e5f725d7df92132446a7f09a537b6df
Author: Peilin Ye <yepeilin.cs@gmail.com>
Date:   Thu Sep 24 09:42:22 2020 -0400

    Fonts: Support FONT_EXTRA_WORDS macros for built-in fonts
    
    commit 6735b4632def0640dbdf4eb9f99816aca18c4f16 upstream.
    
    syzbot has reported an issue in the framebuffer layer, where a malicious
    user may overflow our built-in font data buffers.
    
    In order to perform a reliable range check, subsystems need to know
    `FONTDATAMAX` for each built-in font. Unfortunately, our font descriptor,
    `struct console_font` does not contain `FONTDATAMAX`, and is part of the
    UAPI, making it infeasible to modify it.
    
    For user-provided fonts, the framebuffer layer resolves this issue by
    reserving four extra words at the beginning of data buffers. Later,
    whenever a function needs to access them, it simply uses the following
    macros:
    
    Recently we have gathered all the above macros to <linux/font.h>. Let us
    do the same thing for built-in fonts, prepend four extra words (including
    `FONTDATAMAX`) to their data buffers, so that subsystems can use these
    macros for all fonts, no matter built-in or user-provided.
    
    This patch depends on patch "fbdev, newport_con: Move FONT_EXTRA_WORDS
    macros into linux/font.h".
    
    Cc: stable@vger.kernel.org
    Link: https://syzkaller.appspot.com/bug?id=08b8be45afea11888776f897895aef9ad1c3ecfd
    Signed-off-by: Peilin Ye <yepeilin.cs@gmail.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/ef18af00c35fb3cc826048a5f70924ed6ddce95b.1600953813.git.yepeilin.cs@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ab047585733025fd136331365c74e1b0282ac43
Author: Peilin Ye <yepeilin.cs@gmail.com>
Date:   Thu Sep 24 09:40:53 2020 -0400

    fbdev, newport_con: Move FONT_EXTRA_WORDS macros into linux/font.h
    
    commit bb0890b4cd7f8203e3aa99c6d0f062d6acdaad27 upstream.
    
    drivers/video/console/newport_con.c is borrowing FONT_EXTRA_WORDS macros
    from drivers/video/fbdev/core/fbcon.h. To keep things simple, move all
    definitions into <linux/font.h>.
    
    Since newport_con now uses four extra words, initialize the fourth word in
    newport_set_font() properly.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Peilin Ye <yepeilin.cs@gmail.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/7fb8bc9b0abc676ada6b7ac0e0bd443499357267.1600953813.git.yepeilin.cs@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c61977a713511c01abdf9b2a72693d21cb60556
Author: Will McVicker <willmcvicker@google.com>
Date:   Mon Aug 24 19:38:32 2020 +0000

    netfilter: ctnetlink: add a range check for l3/l4 protonum
    
    commit 1cc5ef91d2ff94d2bf2de3b3585423e8a1051cb6 upstream.
    
    The indexes to the nf_nat_l[34]protos arrays come from userspace. So
    check the tuple's family, e.g. l3num, when creating the conntrack in
    order to prevent an OOB memory access during setup.  Here is an example
    kernel panic on 4.14.180 when userspace passes in an index greater than
    NFPROTO_NUMPROTO.
    
    Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
    Modules linked in:...
    Process poc (pid: 5614, stack limit = 0x00000000a3933121)
    CPU: 4 PID: 5614 Comm: poc Tainted: G S      W  O    4.14.180-g051355490483
    Hardware name: Qualcomm Technologies, Inc. SM8150 V2 PM8150 Google Inc. MSM
    task: 000000002a3dfffe task.stack: 00000000a3933121
    pc : __cfi_check_fail+0x1c/0x24
    lr : __cfi_check_fail+0x1c/0x24
    ...
    Call trace:
    __cfi_check_fail+0x1c/0x24
    name_to_dev_t+0x0/0x468
    nfnetlink_parse_nat_setup+0x234/0x258
    ctnetlink_parse_nat_setup+0x4c/0x228
    ctnetlink_new_conntrack+0x590/0xc40
    nfnetlink_rcv_msg+0x31c/0x4d4
    netlink_rcv_skb+0x100/0x184
    nfnetlink_rcv+0xf4/0x180
    netlink_unicast+0x360/0x770
    netlink_sendmsg+0x5a0/0x6a4
    ___sys_sendmsg+0x314/0x46c
    SyS_sendmsg+0xb4/0x108
    el0_svc_naked+0x34/0x38
    
    This crash is not happening since 5.4+, however, ctnetlink still
    allows for creating entries with unsupported layer 3 protocol number.
    
    Fixes: c1d10adb4a521 ("[NETFILTER]: Add ctnetlink port for nf_conntrack")
    Signed-off-by: Will McVicker <willmcvicker@google.com>
    [pablo@netfilter.org: rebased original patch on top of nf.git]
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2b4a58ad279a232a2f4530dd150d4442ad9475d
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Sep 24 19:41:58 2020 -0400

    ep_create_wakeup_source(): dentry name can change under you...
    
    commit 3701cb59d892b88d569427586f01491552f377b1 upstream.
    
    or get freed, for that matter, if it's a long (separately stored)
    name.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 187af78babc94c7dde028bbfcbf9587f68e0a891
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Sep 10 08:33:27 2020 -0400

    epoll: EPOLL_CTL_ADD: close the race in decision to take fast path
    
    commit fe0a916c1eae8e17e86c3753d13919177d63ed7e upstream.
    
    Checking for the lack of epitems refering to the epoll we want to insert into
    is not enough; we might have an insertion of that epoll into another one that
    has already collected the set of files to recheck for excessive reverse paths,
    but hasn't gotten to creating/inserting the epitem for it.
    
    However, any such insertion in progress can be detected - it will update the
    generation count in our epoll when it's done looking through it for files
    to check.  That gets done under ->mtx of our epoll and that allows us to
    detect that safely.
    
    We are *not* holding epmutex here, so the generation count is not stable.
    However, since both the update of ep->gen by loop check and (later)
    insertion into ->f_ep_link are done with ep->mtx held, we are fine -
    the sequence is
            grab epmutex
            bump loop_check_gen
            ...
            grab tep->mtx           // 1
            tep->gen = loop_check_gen
            ...
            drop tep->mtx           // 2
            ...
            grab tep->mtx           // 3
            ...
            insert into ->f_ep_link
            ...
            drop tep->mtx           // 4
            bump loop_check_gen
            drop epmutex
    and if the fastpath check in another thread happens for that
    eventpoll, it can come
            * before (1) - in that case fastpath is just fine
            * after (4) - we'll see non-empty ->f_ep_link, slow path
    taken
            * between (2) and (3) - loop_check_gen is stable,
    with ->mtx providing barriers and we end up taking slow path.
    
    Note that ->f_ep_link emptiness check is slightly racy - we are protected
    against insertions into that list, but removals can happen right under us.
    Not a problem - in the worst case we'll end up taking a slow path for
    no good reason.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ece24175756a7a50c8c21ab08c4d5ce039240e5
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Sep 10 08:30:05 2020 -0400

    epoll: replace ->visited/visited_list with generation count
    
    commit 18306c404abe18a0972587a6266830583c60c928 upstream.
    
    removes the need to clear it, along with the races.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a16d314ccda2efa6173f2ae7d386f99c61d273a4
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Wed Sep 9 22:25:06 2020 -0400

    epoll: do not insert into poll queues until all sanity checks are done
    
    commit f8d4f44df056c5b504b0d49683fb7279218fd207 upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a675ac9fe9794f0981db6e4b101503818f61622
Author: Or Cohen <orcohen@paloaltonetworks.com>
Date:   Thu Sep 3 21:05:28 2020 -0700

    net/packet: fix overflow in tpacket_rcv
    
    commit acf69c946233259ab4d64f8869d4037a198c7f06 upstream.
    
    Using tp_reserve to calculate netoff can overflow as
    tp_reserve is unsigned int and netoff is unsigned short.
    
    This may lead to macoff receving a smaller value then
    sizeof(struct virtio_net_hdr), and if po->has_vnet_hdr
    is set, an out-of-bounds write will occur when
    calling virtio_net_hdr_from_skb.
    
    The bug is fixed by converting netoff to unsigned int
    and checking if it exceeds USHRT_MAX.
    
    This addresses CVE-2020-14386
    
    Fixes: 8913336a7e8d ("packet: add PACKET_RESERVE sockopt")
    Signed-off-by: Or Cohen <orcohen@paloaltonetworks.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [ snu: backported to pre-5.3, changed tp_drops counting/locking ]
    Signed-off-by: Stefan Nuernberger <snu@amazon.com>
    CC: David Woodhouse <dwmw@amazon.co.uk>
    CC: Amit Shah <aams@amazon.com>
    CC: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7b664232a376e236554767191a83e5f7c1e1e1e
Author: Thibaut Sautereau <thibaut.sautereau@ssi.gouv.fr>
Date:   Fri Oct 2 17:16:11 2020 +0200

    random32: Restore __latent_entropy attribute on net_rand_state
    
    [ Upstream commit 09a6b0bc3be793ca8cba580b7992d73e9f68f15d ]
    
    Commit f227e3ec3b5c ("random32: update the net random state on interrupt
    and activity") broke compilation and was temporarily fixed by Linus in
    83bdc7275e62 ("random32: remove net_rand_state from the latent entropy
    gcc plugin") by entirely moving net_rand_state out of the things handled
    by the latent_entropy GCC plugin.
    
    From what I understand when reading the plugin code, using the
    __latent_entropy attribute on a declaration was the wrong part and
    simply keeping the __latent_entropy attribute on the variable definition
    was the correct fix.
    
    Fixes: 83bdc7275e62 ("random32: remove net_rand_state from the latent entropy gcc plugin")
    Acked-by: Willy Tarreau <w@1wt.eu>
    Cc: Emese Revfy <re.emese@gmail.com>
    Signed-off-by: Thibaut Sautereau <thibaut.sautereau@ssi.gouv.fr>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0c86eb71b8caed01ee9e59ba031290034e012c15
Author: Nicolas VINCENT <nicolas.vincent@vossloh.com>
Date:   Wed Sep 23 16:08:40 2020 +0200

    i2c: cpm: Fix i2c_ram structure
    
    [ Upstream commit a2bd970aa62f2f7f80fd0d212b1d4ccea5df4aed ]
    
    the i2c_ram structure is missing the sdmatmp field mentionned in
    datasheet for MPC8272 at paragraph 36.5. With this field missing, the
    hardware would write past the allocated memory done through
    cpm_muram_alloc for the i2c_ram structure and land in memory allocated
    for the buffers descriptors corrupting the cbd_bufaddr field. Since this
    field is only set during setup(), the first i2c transaction would work
    and the following would send data read from an arbitrary memory
    location.
    
    Fixes: 61045dbe9d8d ("i2c: Add support for I2C bus on Freescale CPM1/CPM2 controllers")
    Signed-off-by: Nicolas VINCENT <nicolas.vincent@vossloh.com>
    Acked-by: Jochen Friedrich <jochen@scram.de>
    Acked-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fd87f837c80c48754d6ef9183b94cb72470c107c
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Fri Sep 18 09:13:35 2020 +0800

    iommu/exynos: add missing put_device() call in exynos_iommu_of_xlate()
    
    [ Upstream commit 1a26044954a6d1f4d375d5e62392446af663be7a ]
    
    if of_find_device_by_node() succeed, exynos_iommu_of_xlate() doesn't have
    a corresponding put_device(). Thus add put_device() to fix the exception
    handling for this function implementation.
    
    Fixes: aa759fd376fb ("iommu/exynos: Add callback for initializing devices from device tree")
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Acked-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Link: https://lore.kernel.org/r/20200918011335.909141-1-yukuai3@huawei.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eb8eda5b07505fca0b3c134c1d3526795eca2fe3
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Tue Sep 22 14:40:46 2020 +0200

    clk: samsung: exynos4: mark 'chipid' clock as CLK_IGNORE_UNUSED
    
    [ Upstream commit f3bb0f796f5ffe32f0fbdce5b1b12eb85511158f ]
    
    The ChipID IO region has it's own clock, which is being disabled while
    scanning for unused clocks. It turned out that some CPU hotplug, CPU idle
    or even SOC firmware code depends on the reads from that area. Fix the
    mysterious hang caused by entering deep CPU idle state by ignoring the
    'chipid' clock during unused clocks scan, as there are no direct clients
    for it which will keep it enabled.
    
    Fixes: e062b571777f ("clk: exynos4: register clocks using common clock framework")
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Link: https://lore.kernel.org/r/20200922124046.10496-1-m.szyprowski@samsung.com
    Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
    Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6d6102ad5dd76c43c0a314efc43bfe331d4d7143
Author: Jeffrey Mitchell <jeffrey.mitchell@starlab.io>
Date:   Tue Sep 15 16:42:52 2020 -0500

    nfs: Fix security label length not being reset
    
    [ Upstream commit d33030e2ee3508d65db5644551435310df86010e ]
    
    nfs_readdir_page_filler() iterates over entries in a directory, reusing
    the same security label buffer, but does not reset the buffer's length.
    This causes decode_attr_security_label() to return -ERANGE if an entry's
    security label is longer than the previous one's. This error, in
    nfs4_decode_dirent(), only gets passed up as -EAGAIN, which causes another
    failed attempt to copy into the buffer. The second error is ignored and
    the remaining entries do not show up in ls, specifically the getdents64()
    syscall.
    
    Reproduce by creating multiple files in NFS and giving one of the later
    files a longer security label. ls will not see that file nor any that are
    added afterwards, though they will exist on the backend.
    
    In nfs_readdir_page_filler(), reset security label buffer length before
    every reuse
    
    Signed-off-by: Jeffrey Mitchell <jeffrey.mitchell@starlab.io>
    Fixes: b4487b935452 ("nfs: Fix getxattr kernel panic and memory overflow")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 358b32586e7c240f379e5820bcd4cf894bdef978
Author: Felix Fietkau <nbd@nbd.name>
Date:   Thu Sep 17 14:50:31 2020 +0200

    mac80211: do not allow bigger VHT MPDUs than the hardware supports
    
    [ Upstream commit 3bd5c7a28a7c3aba07a2d300d43f8e988809e147 ]
    
    Limit maximum VHT MPDU size by local capability.
    
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Link: https://lore.kernel.org/r/20200917125031.45009-1-nbd@nbd.name
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ebd8e6f534ab8166ef80634eb02f15c8f7a3509d
Author: Xie He <xie.he.0141@gmail.com>
Date:   Wed Sep 16 14:25:07 2020 -0700

    drivers/net/wan/hdlc: Set skb->protocol before transmitting
    
    [ Upstream commit 9fb030a70431a2a2a1b292dbf0b2f399cc072c16 ]
    
    This patch sets skb->protocol before transmitting frames on the HDLC
    device, so that a user listening on the HDLC device with an AF_PACKET
    socket will see outgoing frames' sll_protocol field correctly set and
    consistent with that of incoming frames.
    
    1. Control frames in hdlc_cisco and hdlc_ppp
    
    When these drivers send control frames, skb->protocol is not set.
    
    This value should be set to htons(ETH_P_HDLC), because when receiving
    control frames, their skb->protocol is set to htons(ETH_P_HDLC).
    
    When receiving, hdlc_type_trans in hdlc.h is called, which then calls
    cisco_type_trans or ppp_type_trans. The skb->protocol of control frames
    is set to htons(ETH_P_HDLC) so that the control frames can be received
    by hdlc_rcv in hdlc.c, which calls cisco_rx or ppp_rx to process the
    control frames.
    
    2. hdlc_fr
    
    When this driver sends control frames, skb->protocol is set to internal
    values used in this driver.
    
    When this driver sends data frames (from upper stacked PVC devices),
    skb->protocol is the same as that of the user data packet being sent on
    the upper PVC device (for normal PVC devices), or is htons(ETH_P_802_3)
    (for Ethernet-emulating PVC devices).
    
    However, skb->protocol for both control frames and data frames should be
    set to htons(ETH_P_HDLC), because when receiving, all frames received on
    the HDLC device will have their skb->protocol set to htons(ETH_P_HDLC).
    
    When receiving, hdlc_type_trans in hdlc.h is called, and because this
    driver doesn't provide a type_trans function in struct hdlc_proto,
    all frames will have their skb->protocol set to htons(ETH_P_HDLC).
    The frames are then received by hdlc_rcv in hdlc.c, which calls fr_rx
    to process the frames (control frames are consumed and data frames
    are re-received on upper PVC devices).
    
    Cc: Krzysztof Halasa <khc@pm.waw.pl>
    Signed-off-by: Xie He <xie.he.0141@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 63708b20824d64a6c6a12fcc265b653b2ff6b062
Author: Xie He <xie.he.0141@gmail.com>
Date:   Wed Sep 16 09:49:18 2020 -0700

    drivers/net/wan/lapbether: Make skb->protocol consistent with the header
    
    [ Upstream commit 83f9a9c8c1edc222846dc1bde6e3479703e8e5a3 ]
    
    This driver is a virtual driver stacked on top of Ethernet interfaces.
    
    When this driver transmits data on the Ethernet device, the skb->protocol
    setting is inconsistent with the Ethernet header prepended to the skb.
    
    This causes a user listening on the Ethernet interface with an AF_PACKET
    socket, to see different sll_protocol values for incoming and outgoing
    frames, because incoming frames would have this value set by parsing the
    Ethernet header.
    
    This patch changes the skb->protocol value for outgoing Ethernet frames,
    making it consistent with the Ethernet header prepended. This makes a
    user listening on the Ethernet device with an AF_PACKET socket, to see
    the same sll_protocol value for incoming and outgoing frames.
    
    Cc: Martin Schiller <ms@dev.tdt.de>
    Signed-off-by: Xie He <xie.he.0141@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 83fc8bcd84f54bbb7f85772e7e656200a67edbd1
Author: Olympia Giannou <ogiannou@gmail.com>
Date:   Fri Sep 11 14:17:24 2020 +0000

    rndis_host: increase sleep time in the query-response loop
    
    [ Upstream commit 4202c9fdf03d79dedaa94b2c4cf574f25793d669 ]
    
    Some WinCE devices face connectivity issues via the NDIS interface. They
    fail to register, resulting in -110 timeout errors and failures during the
    probe procedure.
    
    In this kind of WinCE devices, the Windows-side ndis driver needs quite
    more time to be loaded and configured, so that the linux rndis host queries
    to them fail to be responded correctly on time.
    
    More specifically, when INIT is called on the WinCE side - no other
    requests can be served by the Client and this results in a failed QUERY
    afterwards.
    
    The increase of the waiting time on the side of the linux rndis host in
    the command-response loop leaves the INIT process to complete and respond
    to a QUERY, which comes afterwards. The WinCE devices with this special
    "feature" in their ndis driver are satisfied by this fix.
    
    Signed-off-by: Olympia Giannou <olympia.giannou@leica-geosystems.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8e87484ca7dc987c9a754db6f6537827e814ab47
Author: Lucy Yan <lucyyan@google.com>
Date:   Thu Sep 10 12:05:09 2020 -0700

    net: dec: de2104x: Increase receive ring size for Tulip
    
    [ Upstream commit ee460417d254d941dfea5fb7cff841f589643992 ]
    
    Increase Rx ring size to address issue where hardware is reaching
    the receive work limit.
    
    Before:
    
    [  102.223342] de2104x 0000:17:00.0 eth0: rx work limit reached
    [  102.245695] de2104x 0000:17:00.0 eth0: rx work limit reached
    [  102.251387] de2104x 0000:17:00.0 eth0: rx work limit reached
    [  102.267444] de2104x 0000:17:00.0 eth0: rx work limit reached
    
    Signed-off-by: Lucy Yan <lucyyan@google.com>
    Reviewed-by: Moritz Fischer <mdf@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1e6078e40de68e1e99eb6242dc85a764d66770ad
Author: Jean Delvare <jdelvare@suse.de>
Date:   Mon Sep 28 11:10:37 2020 +0200

    drm/amdgpu: restore proper ref count in amdgpu_display_crtc_set_config
    
    commit a39d0d7bdf8c21ac7645c02e9676b5cb2b804c31 upstream.
    
    A recent attempt to fix a ref count leak in
    amdgpu_display_crtc_set_config() turned out to be doing too much and
    "fixed" an intended decrease as if it were a leak. Undo that part to
    restore the proper balance. This is the very nature of this function
    to increase or decrease the power reference count depending on the
    situation.
    
    Consequences of this bug is that the power reference would
    eventually get down to 0 while the display was still in use,
    resulting in that display switching off unexpectedly.
    
    Signed-off-by: Jean Delvare <jdelvare@suse.de>
    Fixes: e008fa6fb415 ("drm/amdgpu: fix ref count leak in amdgpu_display_crtc_set_config")
    Cc: stable@vger.kernel.org
    Cc: Navid Emamdoost <navid.emamdoost@gmail.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b3fae139de45358bc40e8508a79235af8021fac6
Author: Jiri Kosina <jkosina@suse.cz>
Date:   Mon Sep 28 16:21:17 2020 -0700

    Input: i8042 - add nopnp quirk for Acer Aspire 5 A515
    
    commit 5fc27b098dafb8e30794a9db0705074c7d766179 upstream.
    
    Touchpad on this laptop is not detected properly during boot, as PNP
    enumerates (wrongly) AUX port as disabled on this machine.
    
    Fix that by adding this board (with admittedly quite funny DMI
    identifiers) to nopnp quirk list.
    
    Reported-by: Andrés Barrantes Silman <andresbs2000@protonmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Link: https://lore.kernel.org/r/nycvar.YFH.7.76.2009252337340.3336@cbobk.fhfr.pm
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eaff5190972173f9813f820d77419df9eeb6ead4
Author: dillon min <dillon.minfei@gmail.com>
Date:   Thu Sep 3 15:30:21 2020 +0800

    gpio: tc35894: fix up tc35894 interrupt configuration
    
    commit 214b0e1ad01abf4c1f6d8d28fa096bf167e47cef upstream.
    
    The offset of regmap is incorrect, j * 8 is move to the
    wrong register.
    
    for example:
    
    asume i = 0, j = 1. we want to set KPY5 as interrupt
    falling edge mode, regmap[0][1] should be TC3589x_GPIOIBE1 0xcd
    but, regmap[i] + j * 8 = TC3589x_GPIOIBE0 + 8 ,point to 0xd4,
    this is TC3589x_GPIOIE2 not TC3589x_GPIOIBE1.
    
    Fixes: d88b25be3584 ("gpio: Add TC35892 GPIO driver")
    Cc: Cc: stable@vger.kernel.org
    Signed-off-by: dillon min <dillon.minfei@gmail.com>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 903cb855d88c5e554f98f2a79d9909406b93c13a
Author: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Date:   Sun Sep 20 18:01:58 2020 +0100

    USB: gadget: f_ncm: Fix NDP16 datagram validation
    
    commit 2b405533c2560d7878199c57d95a39151351df72 upstream.
    
    commit 2b74b0a04d3e ("USB: gadget: f_ncm: add bounds checks to ncm_unwrap_ntb()")
    adds important bounds checking however it unfortunately also introduces  a
    bug with respect to section 3.3.1 of the NCM specification.
    
    wDatagramIndex[1] : "Byte index, in little endian, of the second datagram
    described by this NDP16. If zero, then this marks the end of the sequence
    of datagrams in this NDP16."
    
    wDatagramLength[1]: "Byte length, in little endian, of the second datagram
    described by this NDP16. If zero, then this marks the end of the sequence
    of datagrams in this NDP16."
    
    wDatagramIndex[1] and wDatagramLength[1] respectively then may be zero but
    that does not mean we should throw away the data referenced by
    wDatagramIndex[0] and wDatagramLength[0] as is currently the case.
    
    Breaking the loop on (index2 == 0 || dg_len2 == 0) should come at the end
    as was previously the case and checks for index2 and dg_len2 should be
    removed since zero is valid.
    
    I'm not sure how much testing the above patch received but for me right now
    after enumeration ping doesn't work. Reverting the commit restores ping,
    scp, etc.
    
    The extra validation associated with wDatagramIndex[0] and
    wDatagramLength[0] appears to be valid so, this change removes the incorrect
    restriction on wDatagramIndex[1] and wDatagramLength[1] restoring data
    processing between host and device.
    
    Fixes: 2b74b0a04d3e ("USB: gadget: f_ncm: add bounds checks to ncm_unwrap_ntb()")
    Cc: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Cc: Brooke Basile <brookebasile@gmail.com>
    Cc: stable <stable@kernel.org>
    Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Link: https://lore.kernel.org/r/20200920170158.1217068-1-bryan.odonoghue@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fefdb41bd4b808c512c126ca14420ff3a8450908
Author: Stefano Garzarella <sgarzare@redhat.com>
Date:   Fri Jul 5 13:04:53 2019 +0200

    vsock/virtio: stop workers during the .remove()
    
    [ Upstream commit 17dd1367389cfe7f150790c83247b68e0c19d106 ]
    
    Before to call vdev->config->reset(vdev) we need to be sure that
    no one is accessing the device, for this reason, we add new variables
    in the struct virtio_vsock to stop the workers during the .remove().
    
    This patch also add few comments before vdev->config->reset(vdev)
    and vdev->config->del_vqs(vdev).
    
    Suggested-by: Stefan Hajnoczi <stefanha@redhat.com>
    Suggested-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d87ebcd52eeeed8923c3eba266fd1907fbd067c6
Author: Stefano Garzarella <sgarzare@redhat.com>
Date:   Fri Jul 5 13:04:52 2019 +0200

    vsock/virtio: use RCU to avoid use-after-free on the_virtio_vsock
    
    [ Upstream commit 9c7a5582f5d720dc35cfcc42ccaded69f0642e4a ]
    
    Some callbacks used by the upper layers can run while we are in the
    .remove(). A potential use-after-free can happen, because we free
    the_virtio_vsock without knowing if the callbacks are over or not.
    
    To solve this issue we move the assignment of the_virtio_vsock at the
    end of .probe(), when we finished all the initialization, and at the
    beginning of .remove(), before to release resources.
    For the same reason, we do the same also for the vdev->priv.
    
    We use RCU to be sure that all callbacks that use the_virtio_vsock
    ended before freeing it. This is not required for callbacks that
    use vdev->priv, because after the vdev->config->del_vqs() we are sure
    that they are ended and will no longer be invoked.
    
    We also take the mutex during the .remove() to avoid that .probe() can
    run while we are resetting the device.
    
    Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>