commit 10a20903d7ac2be29e0e13d66ad0d74e637b8343
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Mar 20 09:07:59 2020 +0100

    Linux 4.9.217

commit 0bde22da659c98a693e54d6ddaf88113953c00b5
Author: Matteo Croce <mcroce@redhat.com>
Date:   Fri Feb 21 12:28:38 2020 +0100

    ipv4: ensure rcu_read_lock() in cipso_v4_error()
    
    commit 3e72dfdf8227b052393f71d820ec7599909dddc2 upstream.
    
    Similarly to commit c543cb4a5f07 ("ipv4: ensure rcu_read_lock() in
    ipv4_link_failure()"), __ip_options_compile() must be called under rcu
    protection.
    
    Fixes: 3da1ed7ac398 ("net: avoid use IPCB in cipso_v4_error")
    Suggested-by: Guillaume Nault <gnault@redhat.com>
    Signed-off-by: Matteo Croce <mcroce@redhat.com>
    Acked-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff58bb340c430da021875283f8bf251630c61183
Author: Jann Horn <jannh@google.com>
Date:   Tue Mar 17 01:28:45 2020 +0100

    mm: slub: add missing TID bump in kmem_cache_alloc_bulk()
    
    commit fd4d9c7d0c71866ec0c2825189ebd2ce35bd95b8 upstream.
    
    When kmem_cache_alloc_bulk() attempts to allocate N objects from a percpu
    freelist of length M, and N > M > 0, it will first remove the M elements
    from the percpu freelist, then call ___slab_alloc() to allocate the next
    element and repopulate the percpu freelist. ___slab_alloc() can re-enable
    IRQs via allocate_slab(), so the TID must be bumped before ___slab_alloc()
    to properly commit the freelist head change.
    
    Fix it by unconditionally bumping c->tid when entering the slowpath.
    
    Cc: stable@vger.kernel.org
    Fixes: ebe909e0fdb3 ("slub: improve bulk alloc strategy")
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed14ef08c55ad6ebe94d2cadf373817d326239c2
Author: Kees Cook <keescook@chromium.org>
Date:   Mon Feb 10 02:04:17 2020 +0100

    ARM: 8958/1: rename missed uaccess .fixup section
    
    commit f87b1c49bc675da30d8e1e8f4b60b800312c7b90 upstream.
    
    When the uaccess .fixup section was renamed to .text.fixup, one case was
    missed. Under ld.bfd, the orphaned section was moved close to .text
    (since they share the "ax" bits), so things would work normally on
    uaccess faults. Under ld.lld, the orphaned section was placed outside
    the .text section, making it unreachable.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/282
    Link: https://bugs.chromium.org/p/chromium/issues/detail?id=1020633#c44
    Link: https://lore.kernel.org/r/nycvar.YSQ.7.76.1912032147340.17114@knanqh.ubzr
    Link: https://lore.kernel.org/lkml/202002071754.F5F073F1D@keescook/
    
    Fixes: c4a84ae39b4a5 ("ARM: 8322/1: keep .text and .fixup regions closer together")
    Cc: stable@vger.kernel.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3a4c51d02e70ca4af86cd5b50c4aef3007e04e03
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Tue Jan 28 20:22:13 2020 +0100

    ARM: 8957/1: VDSO: Match ARMv8 timer in cntvct_functional()
    
    commit 45939ce292b4b11159719faaf60aba7d58d5fe33 upstream.
    
    It is possible for a system with an ARMv8 timer to run a 32-bit kernel.
    When this happens we will unconditionally have the vDSO code remove the
    __vdso_gettimeofday and __vdso_clock_gettime symbols because
    cntvct_functional() returns false since it does not match that
    compatibility string.
    
    Fixes: ecf99a439105 ("ARM: 8331/1: VDSO initialization, mapping, and synchronization")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e06aeb9f3da6c08edbb3eb599b22d7a573ffc89f
Author: Qian Cai <cai@lca.pw>
Date:   Fri Feb 21 23:31:11 2020 -0500

    jbd2: fix data races at struct journal_head
    
    [ Upstream commit 6c5d911249290f41f7b50b43344a7520605b1acb ]
    
    journal_head::b_transaction and journal_head::b_next_transaction could
    be accessed concurrently as noticed by KCSAN,
    
     LTP: starting fsync04
     /dev/zero: Can't open blockdev
     EXT4-fs (loop0): mounting ext3 file system using the ext4 subsystem
     EXT4-fs (loop0): mounted filesystem with ordered data mode. Opts: (null)
     ==================================================================
     BUG: KCSAN: data-race in __jbd2_journal_refile_buffer [jbd2] / jbd2_write_access_granted [jbd2]
    
     write to 0xffff99f9b1bd0e30 of 8 bytes by task 25721 on cpu 70:
      __jbd2_journal_refile_buffer+0xdd/0x210 [jbd2]
      __jbd2_journal_refile_buffer at fs/jbd2/transaction.c:2569
      jbd2_journal_commit_transaction+0x2d15/0x3f20 [jbd2]
      (inlined by) jbd2_journal_commit_transaction at fs/jbd2/commit.c:1034
      kjournald2+0x13b/0x450 [jbd2]
      kthread+0x1cd/0x1f0
      ret_from_fork+0x27/0x50
    
     read to 0xffff99f9b1bd0e30 of 8 bytes by task 25724 on cpu 68:
      jbd2_write_access_granted+0x1b2/0x250 [jbd2]
      jbd2_write_access_granted at fs/jbd2/transaction.c:1155
      jbd2_journal_get_write_access+0x2c/0x60 [jbd2]
      __ext4_journal_get_write_access+0x50/0x90 [ext4]
      ext4_mb_mark_diskspace_used+0x158/0x620 [ext4]
      ext4_mb_new_blocks+0x54f/0xca0 [ext4]
      ext4_ind_map_blocks+0xc79/0x1b40 [ext4]
      ext4_map_blocks+0x3b4/0x950 [ext4]
      _ext4_get_block+0xfc/0x270 [ext4]
      ext4_get_block+0x3b/0x50 [ext4]
      __block_write_begin_int+0x22e/0xae0
      __block_write_begin+0x39/0x50
      ext4_write_begin+0x388/0xb50 [ext4]
      generic_perform_write+0x15d/0x290
      ext4_buffered_write_iter+0x11f/0x210 [ext4]
      ext4_file_write_iter+0xce/0x9e0 [ext4]
      new_sync_write+0x29c/0x3b0
      __vfs_write+0x92/0xa0
      vfs_write+0x103/0x260
      ksys_write+0x9d/0x130
      __x64_sys_write+0x4c/0x60
      do_syscall_64+0x91/0xb05
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
     5 locks held by fsync04/25724:
      #0: ffff99f9911093f8 (sb_writers#13){.+.+}, at: vfs_write+0x21c/0x260
      #1: ffff99f9db4c0348 (&sb->s_type->i_mutex_key#15){+.+.}, at: ext4_buffered_write_iter+0x65/0x210 [ext4]
      #2: ffff99f5e7dfcf58 (jbd2_handle){++++}, at: start_this_handle+0x1c1/0x9d0 [jbd2]
      #3: ffff99f9db4c0168 (&ei->i_data_sem){++++}, at: ext4_map_blocks+0x176/0x950 [ext4]
      #4: ffffffff99086b40 (rcu_read_lock){....}, at: jbd2_write_access_granted+0x4e/0x250 [jbd2]
     irq event stamp: 1407125
     hardirqs last  enabled at (1407125): [<ffffffff980da9b7>] __find_get_block+0x107/0x790
     hardirqs last disabled at (1407124): [<ffffffff980da8f9>] __find_get_block+0x49/0x790
     softirqs last  enabled at (1405528): [<ffffffff98a0034c>] __do_softirq+0x34c/0x57c
     softirqs last disabled at (1405521): [<ffffffff97cc67a2>] irq_exit+0xa2/0xc0
    
     Reported by Kernel Concurrency Sanitizer on:
     CPU: 68 PID: 25724 Comm: fsync04 Tainted: G L 5.6.0-rc2-next-20200221+ #7
     Hardware name: HPE ProLiant DL385 Gen10/ProLiant DL385 Gen10, BIOS A40 07/10/2019
    
    The plain reads are outside of jh->b_state_lock critical section which result
    in data races. Fix them by adding pairs of READ|WRITE_ONCE().
    
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Qian Cai <cai@lca.pw>
    Link: https://lore.kernel.org/r/20200222043111.2227-1-cai@lca.pw
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4306259ff6b8b682322d9aeb0c12b27c61c4a548
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Mon Feb 24 12:47:14 2020 -0800

    signal: avoid double atomic counter increments for user accounting
    
    [ Upstream commit fda31c50292a5062332fa0343c084bd9f46604d9 ]
    
    When queueing a signal, we increment both the users count of pending
    signals (for RLIMIT_SIGPENDING tracking) and we increment the refcount
    of the user struct itself (because we keep a reference to the user in
    the signal structure in order to correctly account for it when freeing).
    
    That turns out to be fairly expensive, because both of them are atomic
    updates, and particularly under extreme signal handling pressure on big
    machines, you can get a lot of cache contention on the user struct.
    That can then cause horrid cacheline ping-pong when you do these
    multiple accesses.
    
    So change the reference counting to only pin the user for the _first_
    pending signal, and to unpin it when the last pending signal is
    dequeued.  That means that when a user sees a lot of concurrent signal
    queuing - which is the only situation when this matters - the only
    atomic access needed is generally the 'sigpending' count update.
    
    This was noticed because of a particularly odd timing artifact on a
    dual-socket 96C/192T Cascade Lake platform: when you get into bad
    contention, on that machine for some reason seems to be much worse when
    the contention happens in the upper 32-byte half of the cacheline.
    
    As a result, the kernel test robot will-it-scale 'signal1' benchmark had
    an odd performance regression simply due to random alignment of the
    'struct user_struct' (and pointed to a completely unrelated and
    apparently nonsensical commit for the regression).
    
    Avoiding the double increments (and decrements on the dequeueing side,
    of course) makes for much less contention and hugely improved
    performance on that will-it-scale microbenchmark.
    
    Quoting Feng Tang:
    
     "It makes a big difference, that the performance score is tripled! bump
      from original 17000 to 54000. Also the gap between 5.0-rc6 and
      5.0-rc6+Jiri's patch is reduced to around 2%"
    
    [ The "2% gap" is the odd cacheline placement difference on that
      platform: under the extreme contention case, the effect of which half
      of the cacheline was hot was 5%, so with the reduced contention the
      odd timing artifact is reduced too ]
    
    It does help in the non-contended case too, but is not nearly as
    noticeable.
    
    Reported-and-tested-by: Feng Tang <feng.tang@intel.com>
    Cc: Eric W. Biederman <ebiederm@xmission.com>
    Cc: Huang, Ying <ying.huang@intel.com>
    Cc: Philip Li <philip.li@intel.com>
    Cc: Andi Kleen <andi.kleen@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d2a49017c249c3e02897c4471a7b3bd967301158
Author: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
Date:   Sun Feb 23 20:03:02 2020 +0530

    mac80211: rx: avoid RCU list traversal under mutex
    
    [ Upstream commit 253216ffb2a002a682c6f68bd3adff5b98b71de8 ]
    
    local->sta_mtx is held in __ieee80211_check_fast_rx_iface().
    No need to use list_for_each_entry_rcu() as it also requires
    a cond argument to avoid false lockdep warnings when not used in
    RCU read-side section (with CONFIG_PROVE_RCU_LIST).
    Therefore use list_for_each_entry();
    
    Signed-off-by: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
    Link: https://lore.kernel.org/r/20200223143302.15390-1-madhuparnabhowmik10@gmail.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4f1547a774ddefb1144c09a9e4a9b8ca1f1caff7
Author: Marek Vasut <marex@denx.de>
Date:   Sun Feb 23 14:38:40 2020 +0100

    net: ks8851-ml: Fix IRQ handling and locking
    
    [ Upstream commit 44343418d0f2f623cb9da6f5000df793131cbe3b ]
    
    The KS8851 requires that packet RX and TX are mutually exclusive.
    Currently, the driver hopes to achieve this by disabling interrupt
    from the card by writing the card registers and by disabling the
    interrupt on the interrupt controller. This however is racy on SMP.
    
    Replace this approach by expanding the spinlock used around the
    ks_start_xmit() TX path to ks_irq() RX path to assure true mutual
    exclusion and remove the interrupt enabling/disabling, which is
    now not needed anymore. Furthermore, disable interrupts also in
    ks_net_stop(), which was missing before.
    
    Note that a massive improvement here would be to re-use the KS8851
    driver approach, which is to move the TX path into a worker thread,
    interrupt handling to threaded interrupt, and synchronize everything
    with mutexes, but that would be a much bigger rework, for a separate
    patch.
    
    Signed-off-by: Marek Vasut <marex@denx.de>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Lukas Wunner <lukas@wunner.de>
    Cc: Petr Stetiar <ynezz@true.cz>
    Cc: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c0d470e3ec3b0af2eb9f825adefbd8e3b56ca103
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Fri Feb 21 10:44:50 2020 +0100

    cfg80211: check reg_rule for NULL in handle_channel_custom()
    
    [ Upstream commit a7ee7d44b57c9ae174088e53a668852b7f4f452d ]
    
    We may end up with a NULL reg_rule after the loop in
    handle_channel_custom() if the bandwidth didn't fit,
    check if this is the case and bail out if so.
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Link: https://lore.kernel.org/r/20200221104449.3b558a50201c.I4ad3725c4dacaefd2d18d3cc65ba6d18acd5dbfe@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5e953295a8d966313eaef05b3d8044e12880e0e6
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Fri Feb 14 14:53:07 2020 +0800

    HID: i2c-hid: add Trekstor Surfbook E11B to descriptor override
    
    [ Upstream commit be0aba826c4a6ba5929def1962a90d6127871969 ]
    
    The Surfbook E11B uses the SIPODEV SP1064 touchpad, which does not supply
    descriptors, so it has to be added to the override list.
    
    BugLink: https://bugs.launchpad.net/bugs/1858299
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 479912f78ffc88339fe1f2b84baeefbf759fcd0e
Author: Mansour Behabadi <mansour@oxplot.com>
Date:   Wed Jan 29 17:26:31 2020 +1100

    HID: apple: Add support for recent firmware on Magic Keyboards
    
    [ Upstream commit e433be929e63265b7412478eb7ff271467aee2d7 ]
    
    Magic Keyboards with more recent firmware (0x0100) report Fn key differently.
    Without this patch, Fn key may not behave as expected and may not be
    configurable via hid_apple fnmode module parameter.
    
    Signed-off-by: Mansour Behabadi <mansour@oxplot.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f2a18533a69e589353cd98b45c81034f2422ae23
Author: Jean Delvare <jdelvare@suse.de>
Date:   Thu Feb 6 16:58:45 2020 +0100

    ACPI: watchdog: Allow disabling WDAT at boot
    
    [ Upstream commit 3f9e12e0df012c4a9a7fd7eb0d3ae69b459d6b2c ]
    
    In case the WDAT interface is broken, give the user an option to
    ignore it to let a native driver bind to the watchdog device instead.
    
    Signed-off-by: Jean Delvare <jdelvare@suse.de>
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 22333af249bc9d473f99787cd0321f25ee8dfba9
Author: Kim Phillips <kim.phillips@amd.com>
Date:   Wed Mar 11 14:13:21 2020 -0500

    perf/amd/uncore: Replace manual sampling check with CAP_NO_INTERRUPT flag
    
    [ Upstream commit f967140dfb7442e2db0868b03b961f9c59418a1b ]
    
    Enable the sampling check in kernel/events/core.c::perf_event_open(),
    which returns the more appropriate -EOPNOTSUPP.
    
    BEFORE:
    
      $ sudo perf record -a -e instructions,l3_request_g1.caching_l3_cache_accesses true
      Error:
      The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (l3_request_g1.caching_l3_cache_accesses).
      /bin/dmesg | grep -i perf may provide additional information.
    
    With nothing relevant in dmesg.
    
    AFTER:
    
      $ sudo perf record -a -e instructions,l3_request_g1.caching_l3_cache_accesses true
      Error:
      l3_request_g1.caching_l3_cache_accesses: PMU Hardware doesn't support sampling/overflow-interrupts. Try 'perf stat'
    
    Fixes: c43ca5091a37 ("perf/x86/amd: Add support for AMD NB and L2I "uncore" counters")
    Signed-off-by: Kim Phillips <kim.phillips@amd.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Acked-by: Peter Zijlstra <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20200311191323.13124-1-kim.phillips@amd.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 135075ae4eaf211fdb4aea93b0e7e917d1627dae
Author: Sven Eckelmann <sven@narfation.org>
Date:   Tue Mar 17 21:15:40 2020 +0100

    batman-adv: Use explicit tvlv padding for ELP packets
    
    commit f4156f9656feac21f4de712fac94fae964c5d402 upstream.
    
    The announcement messages of batman-adv COMPAT_VERSION 15 have the
    possibility to announce additional information via a dynamic TVLV part.
    This part is optional for the ELP packets and currently not parsed by the
    Linux implementation. Still out-of-tree versions are using it to transport
    things like neighbor hashes to optimize the rebroadcast behavior.
    
    Since the ELP broadcast packets are smaller than the minimal ethernet
    packet, it often has to be padded. This is often done (as specified in
    RFC894) with octets of zero and thus work perfectly fine with the TVLV
    part (making it a zero length and thus empty). But not all ethernet
    compatible hardware seems to follow this advice. To avoid ambiguous
    situations when parsing the TVLV header, just force the 4 bytes (TVLV
    length + padding) after the required ELP header to zero.
    
    Fixes: d6f94d91f766 ("batman-adv: ELP - adding basic infrastructure")
    Reported-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34673c28f43dc6603039bbffc67443014b2123a1
Author: Sven Eckelmann <sven@narfation.org>
Date:   Tue Mar 17 21:15:39 2020 +0100

    batman-adv: Avoid probe ELP information leak
    
    commit 88d0895d0ea9d4431507d576c963f2ff9918144d upstream.
    
    The probe ELPs for WiFi interfaces are expanded to contain at least
    BATADV_ELP_MIN_PROBE_SIZE bytes. This is usually a lot more than the
    number of bytes which the template ELP packet requires.
    
    These extra padding bytes were not initialized and thus could contain data
    which were previously stored at the same location. It is therefore required
    to set it to some predefined or random values to avoid leaking private
    information from the system transmitting these kind of packets.
    
    Fixes: e4623c913508 ("batman-adv: Avoid probe ELP information leak")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Acked-by: Antonio Quartulli <a@unstable.cc>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c6ed319b82ff75f96c262477eae7f5d4fc65823
Author: Matthias Schiffer <mschiffer@universe-factory.net>
Date:   Tue Mar 17 21:15:38 2020 +0100

    batman-adv: update data pointers after skb_cow()
    
    commit bc44b78157f621ff2a2618fe287a827bcb094ac4 upstream.
    
    batadv_check_unicast_ttvn() calls skb_cow(), so pointers into the SKB data
    must be (re)set after calling it. The ethhdr variable is dropped
    altogether.
    
    Fixes: 78fc6bbe0aca ("batman-adv: add UNICAST_4ADDR packet type")
    Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit baed34edb061ba596b5bb6cd307aba9411d04b83
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Mar 16 23:31:05 2020 +0100

    batman-adv: Don't schedule OGM for disabled interface
    
    A transmission scheduling for an interface which is currently dropped by
    batadv_iv_ogm_iface_disable could still be in progress. The B.A.T.M.A.N. V
    is simply cancelling the workqueue item in an synchronous way but this is
    not possible with B.A.T.M.A.N. IV because the OGM submissions are
    intertwined.
    
    Instead it has to stop submitting the OGM when it detect that the buffer
    pointer is set to NULL.
    
    Reported-by: syzbot+a98f2016f40b9cd3818a@syzkaller.appspotmail.com
    Reported-by: syzbot+ac36b6a33c28a491e929@syzkaller.appspotmail.com
    Fixes: c6c8fea29769 ("net: Add batman-adv meshing protocol")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Cc: Hillf Danton <hdanton@sina.com>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f9fd18c20252634cb4a523794aa1eea61840b17
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Mar 16 23:31:04 2020 +0100

    batman-adv: Avoid free/alloc race when handling OGM buffer
    
    commit 40e220b4218bb3d278e5e8cc04ccdfd1c7ff8307 upstream.
    
    Each slave interface of an B.A.T.M.A.N. IV virtual interface has an OGM
    packet buffer which is initialized using data from netdevice notifier and
    other rtnetlink related hooks. It is sent regularly via various slave
    interfaces of the batadv virtual interface and in this process also
    modified (realloced) to integrate additional state information via TVLV
    containers.
    
    It must be avoided that the worker item is executed without a common lock
    with the netdevice notifier/rtnetlink helpers. Otherwise it can either
    happen that half modified/freed data is sent out or functions modifying the
    OGM buffer try to access already freed memory regions.
    
    Reported-by: syzbot+0cc629f19ccb8534935b@syzkaller.appspotmail.com
    Fixes: c6c8fea29769 ("net: Add batman-adv meshing protocol")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5841c1bb484f550063ae82040e90e6d42c66b73d
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Mar 16 23:31:03 2020 +0100

    batman-adv: Avoid free/alloc race when handling OGM2 buffer
    
    commit a8d23cbbf6c9f515ed678204ad2962be7c336344 upstream.
    
    A B.A.T.M.A.N. V virtual interface has an OGM2 packet buffer which is
    initialized using data from the netdevice notifier and other rtnetlink
    related hooks. It is sent regularly via various slave interfaces of the
    batadv virtual interface and in this process also modified (realloced) to
    integrate additional state information via TVLV containers.
    
    It must be avoided that the worker item is executed without a common lock
    with the netdevice notifier/rtnetlink helpers. Otherwise it can either
    happen that half modified data is sent out or the functions modifying the
    OGM2 buffer try to access already freed memory regions.
    
    Fixes: 0da0035942d4 ("batman-adv: OGMv2 - add basic infrastructure")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f6dd57c7b5041504677727504e80bca67e3c501
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Mar 16 23:31:02 2020 +0100

    batman-adv: Fix duplicated OGMs on NETDEV_UP
    
    commit 9e6b5648bbc4cd48fab62cecbb81e9cc3c6e7e88 upstream.
    
    The state of slave interfaces are handled differently depending on whether
    the interface is up or not. All active interfaces (IFF_UP) will transmit
    OGMs. But for B.A.T.M.A.N. IV, also non-active interfaces are scheduling
    (low TTL) OGMs on active interfaces. The code which setups and schedules
    the OGMs must therefore already be called when the interfaces gets added as
    slave interface and the transmit function must then check whether it has to
    send out the OGM or not on the specific slave interface.
    
    But the commit f0d97253fb5f ("batman-adv: remove ogm_emit and ogm_schedule
    API calls") moved the setup code from the enable function to the activate
    function. The latter is called either when the added slave was already up
    when batadv_hardif_enable_interface processed the new interface or when a
    NETDEV_UP event was received for this slave interfac. As result, each
    NETDEV_UP would schedule a new OGM worker for the interface and thus OGMs
    would be send a lot more than expected.
    
    Fixes: f0d97253fb5f ("batman-adv: remove ogm_emit and ogm_schedule API calls")
    Reported-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Tested-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Acked-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c3e542a40ada81a8b1b06fdae1c9a991e99ef6b
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Mar 16 23:31:01 2020 +0100

    batman-adv: Prevent duplicated gateway_node entry
    
    commit dff9bc42ab0b2d38c5e90ddd79b238fed5b4c7ad upstream.
    
    The function batadv_gw_node_add is responsible for adding new gw_node to
    the gateway_list. It is expecting that the caller already checked that
    there is not already an entry with the same key or not.
    
    But the lock for the list is only held when the list is really modified.
    This could lead to duplicated entries because another context could create
    an entry with the same key between the check and the list manipulation.
    
    The check and the manipulation of the list must therefore be in the same
    locked code section.
    
    Fixes: c6c8fea29769 ("net: Add batman-adv meshing protocol")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Acked-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b081203732b8a12ea7700eeeb8e03e206088bb99
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Mon Mar 16 23:31:00 2020 +0100

    batman-adv: Fix multicast TT issues with bogus ROAM flags
    
    commit a44ebeff6bbd6ef50db41b4195fca87b21aefd20 upstream.
    
    When a (broken) node wrongly sends multicast TT entries with a ROAM
    flag then this causes any receiving node to drop all entries for the
    same multicast MAC address announced by other nodes, leading to
    packet loss.
    
    Fix this DoS vector by only storing TT sync flags. For multicast TT
    non-sync'ing flag bits like ROAM are unused so far anyway.
    
    Fixes: 1d8ab8d3c176 ("batman-adv: Modified forwarding behaviour for multicast packets")
    Reported-by: Leonardo Mörlein <me@irrelefant.net>
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 292ddcd9d68e0a1b52bc15175f43bb122556c2b9
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Mon Mar 16 23:30:59 2020 +0100

    batman-adv: Avoid storing non-TT-sync flags on singular entries too
    
    commit 4a519b83da16927fb98fd32b0f598e639d1f1859 upstream.
    
    Since commit 54e22f265e87 ("batman-adv: fix TT sync flag inconsistencies")
    TT sync flags and TT non-sync'd flags are supposed to be stored
    separately.
    
    The previous patch missed to apply this separation on a TT entry with
    only a single TT orig entry.
    
    This is a minor fix because with only a single TT orig entry the DDoS
    issue the former patch solves does not apply.
    
    Fixes: 54e22f265e87 ("batman-adv: fix TT sync flag inconsistencies")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9bcfdf4f8fa114fc6df4d280a768d70a43ada9e7
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Mar 16 23:30:58 2020 +0100

    batman-adv: Fix debugfs path for renamed softif
    
    commit 6da7be7d24b2921f8215473ba7552796dff05fe1 upstream.
    
    batman-adv is creating special debugfs directories in the init
    net_namespace for each created soft-interface (batadv net_device). But it
    is possible to rename a net_device to a completely different name then the
    original one.
    
    It can therefore happen that a user registers a new batadv net_device with
    the name "bat0". batman-adv is then also adding a new directory under
    $debugfs/batman-adv/ with the name "wlan0".
    
    The user then decides to rename this device to "bat1" and registers a
    different batadv device with the name "bat0". batman-adv will then try to
    create a directory with the name "bat0" under $debugfs/batman-adv/ again.
    But there already exists one with this name under this path and thus this
    fails. batman-adv will detect a problem and rollback the registering of
    this device.
    
    batman-adv must therefore take care of renaming the debugfs directories for
    soft-interfaces whenever it detects such a net_device rename.
    
    Fixes: c6c8fea29769 ("net: Add batman-adv meshing protocol")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f7e13c96077a46bc58d49869df7e3d77a66b957b
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Mar 16 23:30:57 2020 +0100

    batman-adv: Fix debugfs path for renamed hardif
    
    commit 36dc621ceca1be3ec885aeade5fdafbbcc452a6d upstream.
    
    batman-adv is creating special debugfs directories in the init
    net_namespace for each valid hard-interface (net_device). But it is
    possible to rename a net_device to a completely different name then the
    original one.
    
    It can therefore happen that a user registers a new net_device which gets
    the name "wlan0" assigned by default. batman-adv is also adding a new
    directory under $debugfs/batman-adv/ with the name "wlan0".
    
    The user then decides to rename this device to "wl_pri" and registers a
    different device. The kernel may now decide to use the name "wlan0" again
    for this new device. batman-adv will detect it as a valid net_device and
    tries to create a directory with the name "wlan0" under
    $debugfs/batman-adv/. But there already exists one with this name under
    this path and thus this fails. batman-adv will detect a problem and
    rollback the registering of this device.
    
    batman-adv must therefore take care of renaming the debugfs directories
    for hard-interfaces whenever it detects such a net_device rename.
    
    Fixes: 5bc7c1eb44f2 ("batman-adv: add debugfs structure for information per interface")
    Reported-by: John Soros <sorosj@gmail.com>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b81edc8818903c64c4d121bc51cd5825be8cc67
Author: Marek Lindner <mareklindner@neomailbox.ch>
Date:   Mon Mar 16 23:30:56 2020 +0100

    batman-adv: prevent TT request storms by not sending inconsistent TT TLVLs
    
    commit 16116dac23396e73c01eeee97b102e4833a4b205 upstream.
    
    A translation table TVLV changset sent with an OGM consists
    of a number of headers (one per VLAN) plus the changeset
    itself (addition and/or deletion of entries).
    
    The per-VLAN headers are used by OGM recipients for consistency
    checks. Said consistency check might determine that a full
    translation table request is needed to restore consistency. If
    the TT sender adds per-VLAN headers of empty VLANs into the OGM,
    recipients are led to believe to have reached an inconsistent
    state and thus request a full table update. The full table does
    not contain empty VLANs (due to missing entries) the cycle
    restarts when the next OGM is issued.
    
    Consequently, when the translation table TVLV headers are
    composed, empty VLANs are to be excluded.
    
    Fixes: 21a57f6e7a3b ("batman-adv: make the TT CRC logic VLAN specific")
    Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24443bf39b9bd553bbe3bc0063809421c1052f44
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Mon Mar 16 23:30:55 2020 +0100

    batman-adv: Fix TT sync flags for intermediate TT responses
    
    commit 7072337e52b3e9d5460500d8dc9cbc1ba2db084c upstream.
    
    The previous TT sync fix so far only fixed TT responses issued by the
    target node directly. So far, TT responses issued by intermediate nodes
    still lead to the wrong flags being added, leading to CRC mismatches.
    
    This behaviour was observed at Freifunk Hannover in a 800 nodes setup
    where a considerable amount of nodes were still infected with 'WI'
    TT flags even with (most) nodes having the previous TT sync fix applied.
    
    I was able to reproduce the issue with intermediate TT responses in a
    four node test setup and this patch fixes this issue by ensuring to
    use the per originator instead of the summarized, OR'd ones.
    
    Fixes: e9c00136a475 ("batman-adv: fix tt_global_entries flags update")
    Reported-by: Leonardo Mörlein <me@irrelefant.net>
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4d59337e0b89fc9867472bf3b7429b2de31b848
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Mar 16 23:30:54 2020 +0100

    batman-adv: Avoid race in TT TVLV allocator helper
    
    commit 8ba0f9bd3bdea1058c2b2676bec7905724418e40 upstream.
    
    The functions batadv_tt_prepare_tvlv_local_data and
    batadv_tt_prepare_tvlv_global_data are responsible for preparing a buffer
    which can be used to store the TVLV container for TT and add the VLAN
    information to it.
    
    This will be done in three phases:
    
    1. count the number of VLANs and their entries
    2. allocate the buffer using the counters from the previous step and limits
       from the caller (parameter tt_len)
    3. insert the VLAN information to the buffer
    
    The step 1 and 3 operate on a list which contains the VLANs. The access to
    these lists must be protected with an appropriate lock or otherwise they
    might operate on on different entries. This could for example happen when
    another context is adding VLAN entries to this list.
    
    This could lead to a buffer overflow in these functions when enough entries
    were added between step 1 and 3 to the VLAN lists that the buffer room for
    the entries (*tt_change) is smaller then the now required extra buffer for
    new VLAN entries.
    
    Fixes: 7ea7b4a14275 ("batman-adv: make the TT CRC logic VLAN specific")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Acked-by: Antonio Quartulli <a@unstable.cc>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8142ea6bab530c50300ff103e1398b8e2a83e3cc
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Mar 16 23:30:53 2020 +0100

    batman-adv: Fix internal interface indices types
    
    commit f22e08932c2960f29b5e828e745c9f3fb7c1bb86 upstream.
    
    batman-adv uses internal indices for each enabled and active interface.
    It is currently used by the B.A.T.M.A.N. IV algorithm to identifify the
    correct position in the ogm_cnt bitmaps.
    
    The type for the number of enabled interfaces (which defines the next
    interface index) was set to char. This type can be (depending on the
    architecture) either signed (limiting batman-adv to 127 active slave
    interfaces) or unsigned (limiting batman-adv to 255 active slave
    interfaces).
    
    This limit was not correctly checked when an interface was enabled and thus
    an overflow happened. This was only catched on systems with the signed char
    type when the B.A.T.M.A.N. IV code tried to resize its counter arrays with
    a negative size.
    
    The if_num interface index was only a s16 and therefore significantly
    smaller than the ifindex (int) used by the code net code.
    
    Both &batadv_hard_iface->if_num and &batadv_priv->num_ifaces must be
    (unsigned) int to support the same number of slave interfaces as the net
    core code. And the interface activation code must check the number of
    active slave interfaces to avoid integer overflows.
    
    Fixes: c6c8fea29769 ("net: Add batman-adv meshing protocol")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 13e6a853099e054909aa5baa1364b834052efe96
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Mar 16 23:30:52 2020 +0100

    batman-adv: Fix lock for ogm cnt access in batadv_iv_ogm_calc_tq
    
    commit 5ba7dcfe77037b67016263ea597a8b431692ecab upstream.
    
    The originator node object orig_neigh_node is used to when accessing the
    bcast_own(_sum) and real_packet_count information. The access to them has
    to be protected with the spinlock in orig_neigh_node.
    
    But the function uses the lock in orig_node instead. This is incorrect
    because they could be two different originator node objects.
    
    Fixes: 0ede9f41b217 ("batman-adv: protect bit operations to count OGMs with spinlock")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c69c09f5ede7b40f0d5bc1c12d4880bdc30d9d9
Author: Sven Eckelmann <sven.eckelmann@openmesh.com>
Date:   Mon Mar 16 23:30:51 2020 +0100

    batman-adv: Fix check of retrieved orig_gw in batadv_v_gw_is_eligible
    
    commit 198a62ddffa4a4ffaeb741f642b7b52f2d91ae9b upstream.
    
    The batadv_v_gw_is_eligible function already assumes that orig_node is not
    NULL. But batadv_gw_node_get may have failed to find the originator. It
    must therefore be checked whether the batadv_gw_node_get failed and not
    whether orig_node is NULL to detect this error.
    
    Fixes: 50164d8f500f ("batman-adv: B.A.T.M.A.N. V - implement GW selection logic")
    Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
    Acked-by: Antonio Quartulli <a@unstable.cc>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea40bc532c52ae43a7eaed389f04551a5d318ad4
Author: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Date:   Mon Mar 16 23:30:50 2020 +0100

    batman-adv: Always initialize fragment header priority
    
    commit fe77d8257c4d838c5976557ddb87bd789f312412 upstream.
    
    The batman-adv unuicast fragment header contains 3 bits for the priority of
    the packet. These bits will be initialized when the skb->priority contains
    a value between 256 and 263. But otherwise, the uninitialized bits from the
    stack will be used.
    
    Fixes: c0f25c802b33 ("batman-adv: Include frame priority in fragment header")
    Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0478b59311abcae3393b2e8fc22d191b94438a75
Author: Sven Eckelmann <sven.eckelmann@openmesh.com>
Date:   Mon Mar 16 23:30:49 2020 +0100

    batman-adv: Avoid spurious warnings from bat_v neigh_cmp implementation
    
    commit 6a4bc44b012cbc29c9d824be2c7ab9eac8ee6b6f upstream.
    
    The neighbor compare API implementation for B.A.T.M.A.N. V checks whether
    the neigh_ifinfo for this neighbor on a specific interface exists. A
    warning is printed when it isn't found.
    
    But it is not called inside a lock which would prevent that this
    information is lost right before batadv_neigh_ifinfo_get. It must therefore
    be expected that batadv_v_neigh_(cmp|is_sob) might not be able to get the
    requested neigh_ifinfo.
    
    A WARN_ON for such a situation seems not to be appropriate because this
    will only flood the kernel logs. The warnings must therefore be removed.
    
    Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 805596e6a8076b9a22aa80780536ed430e38f655
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Mon Mar 16 23:30:48 2020 +0100

    batman-adv: fix TT sync flag inconsistencies
    
    commit 54e22f265e872ae140755b3318521d400a094605 upstream.
    
    This patch fixes an issue in the translation table code potentially
    leading to a TT Request + Response storm. The issue may occur for nodes
    involving BLA and an inconsistent configuration of the batman-adv AP
    isolation feature. However, since the new multicast optimizations, a
    single, malformed packet may lead to a mesh-wide, persistent
    Denial-of-Service, too.
    
    The issue occurs because nodes are currently OR-ing the TT sync flags of
    all originators announcing a specific MAC address via the
    translation table. When an intermediate node now receives a TT Request
    and wants to answer this on behalf of the destination node, then this
    intermediate node now responds with an altered flag field and broken
    CRC. The next OGM of the real destination will lead to a CRC mismatch
    and triggering a TT Request and Response again.
    
    Furthermore, the OR-ing is currently never undone as long as at least
    one originator announcing the according MAC address remains, leading to
    the potential persistency of this issue.
    
    This patch fixes this issue by storing the flags used in the CRC
    calculation on a a per TT orig entry basis to be able to respond with
    the correct, original flags in an intermediate TT Response for one
    thing. And to be able to correctly unset sync flags once all nodes
    announcing a sync flag vanish for another.
    
    Fixes: e9c00136a475 ("batman-adv: fix tt_global_entries flags update")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Acked-by: Antonio Quartulli <a@unstable.cc>
    [sw: typo in commit message]
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f357813e20ff64c1cab9441387aafeebcf41aaa8
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Mar 16 23:30:47 2020 +0100

    batman-adv: Accept only filled wifi station info
    
    commit d62890885efbc48acea46964ea3af69b61c8c5eb upstream.
    
    The wifi driver can decide to not provide parts of the station info. For
    example, the expected throughput of the station can be omitted when the
    used rate control doesn't provide this kind of information.
    
    The B.A.T.M.A.N. V implementation must therefore check the filled bitfield
    before it tries to access the expected_throughput of the returned
    station_info.
    
    Reported-by: Alvaro Antelo <alvaro.antelo@gmail.com>
    Fixes: c833484e5f38 ("batman-adv: ELP - compute the metric based on the estimated throughput")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Reviewed-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c5a456ac64aae0c85ecc5dda4fa0b99df95099d
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Mar 16 23:30:46 2020 +0100

    batman-adv: Use default throughput value on cfg80211 error
    
    commit 3f3f87325dcb3c201076c81490f4da91ad4c09fc upstream.
    
    A wifi interface should never be handled like an ethernet devices. The
    parser of the cfg80211 output must therefore skip the ethtool code when
    cfg80211_get_station returned an error.
    
    Fixes: f44a3ae9a281 ("batman-adv: refactor wifi interface detection")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Reviewed-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65927b335012b2f998028c2030c412ce906425b3
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Mar 16 23:30:45 2020 +0100

    batman-adv: Fix rx packet/bytes stats on local ARP reply
    
    commit 36d4d68cd658d914ef73ac845705c4a89e7d9e2f upstream.
    
    The stats are generated by batadv_interface_stats and must not be stored
    directly in the net_device stats member variable. The batadv_priv
    bat_counters information is assembled when ndo_get_stats is called. The
    stats previously stored in net_device::stats is then overwritten.
    
    The batman-adv counters must therefore be increased when an ARP packet is
    answered locally via the distributed arp table.
    
    Fixes: c384ea3ec930 ("batman-adv: Distributed ARP Table - add snooping functions for ARP messages")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ae2c0625ecb1ca8cc48e012eb3832e5066b3c7e
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Mar 16 23:30:44 2020 +0100

    batman-adv: Initialize gw sel_class via batadv_algo
    
    commit 1a9070ec91b37234fe915849b767c61584c64a44 upstream.
    
    The gateway selection class variable is shared between different algorithm
    versions. But the interpretation of the content is algorithm specific. The
    initialization is therefore also algorithm specific.
    
    But this was implemented incorrectly and the initialization for BATMAN_V
    always overwrote the value previously written for BATMAN_IV. This could
    only be avoided when BATMAN_V was disabled during compile time.
    
    Using a special batadv_algo hook for this initialization avoids this
    problem.
    
    Fixes: 50164d8f500f ("batman-adv: B.A.T.M.A.N. V - implement GW selection logic")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1244b876d77d0b571f294c14dcbf3095e72c394
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Mon Mar 16 23:30:43 2020 +0100

    batman-adv: Fix transmission of final, 16th fragment
    
    commit 51c6b429c0c95e67edd1cb0b548c5cf6a6604763 upstream.
    
    Trying to split and transmit a unicast packet in 16 parts will fail for
    the final fragment: After having sent the 15th one with a frag_packet.no
    index of 14, we will increase the the index to 15 - and return with an
    error code immediately, even though one more fragment is due for
    transmission and allowed.
    
    Fixing this issue by moving the check before incrementing the index.
    
    While at it, adding an unlikely(), because the check is actually more of
    an assertion.
    
    Fixes: ee75ed88879a ("batman-adv: Fragment and send skbs larger than mtu")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 351f7cbfff97b07e13c7ab5ad7d1fdad3bee9723
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Mar 16 23:30:42 2020 +0100

    batman-adv: Fix double free during fragment merge error
    
    commit 248e23b50e2da0753f3b5faa068939cbe9f8a75a upstream.
    
    The function batadv_frag_skb_buffer was supposed not to consume the skbuff
    on errors. This was followed in the helper function
    batadv_frag_insert_packet when the skb would potentially be inserted in the
    fragment queue. But it could happen that the next helper function
    batadv_frag_merge_packets would try to merge the fragments and fail. This
    results in a kfree_skb of all the enqueued fragments (including the just
    inserted one). batadv_recv_frag_packet would detect the error in
    batadv_frag_skb_buffer and try to free the skb again.
    
    The behavior of batadv_frag_skb_buffer (and its helper
    batadv_frag_insert_packet) must therefore be changed to always consume the
    skbuff to have a common behavior and avoid the double kfree_skb.
    
    Fixes: 610bfc6bc99b ("batman-adv: Receive fragmented packets and merge")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af83aa2e1f27e9f7f0583a3862217e51c4ebfefd
Author: Vladis Dronov <vdronov@redhat.com>
Date:   Sun Mar 8 09:08:55 2020 +0100

    efi: Add a sanity check to efivar_store_raw()
    
    commit d6c066fda90d578aacdf19771a027ed484a79825 upstream.
    
    Add a sanity check to efivar_store_raw() the same way
    efivar_{attr,size,data}_read() and efivar_show_raw() have it.
    
    Signed-off-by: Vladis Dronov <vdronov@redhat.com>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200305084041.24053-3-vdronov@redhat.com
    Link: https://lore.kernel.org/r/20200308080859.21568-25-ardb@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 11ac2ba035f415880423372f9bfa972d925f77f9
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Feb 25 11:52:29 2020 -0800

    ipv6: restrict IPV6_ADDRFORM operation
    
    commit b6f6118901d1e867ac9177bbff3b00b185bd4fdc upstream.
    
    IPV6_ADDRFORM is able to transform IPv6 socket to IPv4 one.
    While this operation sounds illogical, we have to support it.
    
    One of the things it does for TCP socket is to switch sk->sk_prot
    to tcp_prot.
    
    We now have other layers playing with sk->sk_prot, so we should make
    sure to not interfere with them.
    
    This patch makes sure sk_prot is the default pointer for TCP IPv6 socket.
    
    syzbot reported :
    BUG: kernel NULL pointer dereference, address: 0000000000000000
    PGD a0113067 P4D a0113067 PUD a8771067 PMD 0
    Oops: 0010 [#1] PREEMPT SMP KASAN
    CPU: 0 PID: 10686 Comm: syz-executor.0 Not tainted 5.6.0-rc2-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:0x0
    Code: Bad RIP value.
    RSP: 0018:ffffc9000281fce0 EFLAGS: 00010246
    RAX: 1ffffffff15f48ac RBX: ffffffff8afa4560 RCX: dffffc0000000000
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff8880a69a8f40
    RBP: ffffc9000281fd10 R08: ffffffff86ed9b0c R09: ffffed1014d351f5
    R10: ffffed1014d351f5 R11: 0000000000000000 R12: ffff8880920d3098
    R13: 1ffff1101241a613 R14: ffff8880a69a8f40 R15: 0000000000000000
    FS:  00007f2ae75db700(0000) GS:ffff8880aea00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffffffffffffffd6 CR3: 00000000a3b85000 CR4: 00000000001406f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     inet_release+0x165/0x1c0 net/ipv4/af_inet.c:427
     __sock_release net/socket.c:605 [inline]
     sock_close+0xe1/0x260 net/socket.c:1283
     __fput+0x2e4/0x740 fs/file_table.c:280
     ____fput+0x15/0x20 fs/file_table.c:313
     task_work_run+0x176/0x1b0 kernel/task_work.c:113
     tracehook_notify_resume include/linux/tracehook.h:188 [inline]
     exit_to_usermode_loop arch/x86/entry/common.c:164 [inline]
     prepare_exit_to_usermode+0x480/0x5b0 arch/x86/entry/common.c:195
     syscall_return_slowpath+0x113/0x4a0 arch/x86/entry/common.c:278
     do_syscall_64+0x11f/0x1c0 arch/x86/entry/common.c:304
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x45c429
    Code: ad b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 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 7b b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007f2ae75dac78 EFLAGS: 00000246 ORIG_RAX: 0000000000000036
    RAX: 0000000000000000 RBX: 00007f2ae75db6d4 RCX: 000000000045c429
    RDX: 0000000000000001 RSI: 000000000000011a RDI: 0000000000000004
    RBP: 000000000076bf20 R08: 0000000000000038 R09: 0000000000000000
    R10: 0000000020000180 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 0000000000000a9d R14: 00000000004ccfb4 R15: 000000000076bf2c
    Modules linked in:
    CR2: 0000000000000000
    ---[ end trace 82567b5207e87bae ]---
    RIP: 0010:0x0
    Code: Bad RIP value.
    RSP: 0018:ffffc9000281fce0 EFLAGS: 00010246
    RAX: 1ffffffff15f48ac RBX: ffffffff8afa4560 RCX: dffffc0000000000
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff8880a69a8f40
    RBP: ffffc9000281fd10 R08: ffffffff86ed9b0c R09: ffffed1014d351f5
    R10: ffffed1014d351f5 R11: 0000000000000000 R12: ffff8880920d3098
    R13: 1ffff1101241a613 R14: ffff8880a69a8f40 R15: 0000000000000000
    FS:  00007f2ae75db700(0000) GS:ffff8880aea00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffffffffffffffd6 CR3: 00000000a3b85000 CR4: 00000000001406f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    
    Fixes: 604326b41a6f ("bpf, sockmap: convert to generic sk_msg interface")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot+1938db17e275e85dc328@syzkaller.appspotmail.com
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 159ba99817a89bc58fba53d6b7ec7daf775f985d
Author: Daniel Drake <drake@endlessm.com>
Date:   Thu Mar 12 14:09:55 2020 +0800

    iommu/vt-d: Ignore devices with out-of-spec domain number
    
    commit da72a379b2ec0bad3eb265787f7008bead0b040c upstream.
    
    VMD subdevices are created with a PCI domain ID of 0x10000 or
    higher.
    
    These subdevices are also handled like all other PCI devices by
    dmar_pci_bus_notifier().
    
    However, when dmar_alloc_pci_notify_info() take records of such devices,
    it will truncate the domain ID to a u16 value (in info->seg).
    The device at (e.g.) 10000:00:02.0 is then treated by the DMAR code as if
    it is 0000:00:02.0.
    
    In the unlucky event that a real device also exists at 0000:00:02.0 and
    also has a device-specific entry in the DMAR table,
    dmar_insert_dev_scope() will crash on:
       BUG_ON(i >= devices_cnt);
    
    That's basically a sanity check that only one PCI device matches a
    single DMAR entry; in this case we seem to have two matching devices.
    
    Fix this by ignoring devices that have a domain number higher than
    what can be looked up in the DMAR table.
    
    This problem was carefully diagnosed by Jian-Hong Pan.
    
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Daniel Drake <drake@endlessm.com>
    Fixes: 59ce0515cdaf3 ("iommu/vt-d: Update DRHD/RMRR/ATSR device scope caches when PCI hotplug happens")
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d66a5502febb75a3fc168c8f3a2ad92ec34a72b
Author: Zhenzhong Duan <zhenzhong.duan@gmail.com>
Date:   Thu Mar 12 14:09:54 2020 +0800

    iommu/vt-d: Fix the wrong printing in RHSA parsing
    
    commit b0bb0c22c4db623f2e7b1a471596fbf1c22c6dc5 upstream.
    
    When base address in RHSA structure doesn't match base address in
    each DRHD structure, the base address in last DRHD is printed out.
    
    This doesn't make sense when there are multiple DRHD units, fix it
    by printing the buggy RHSA's base address.
    
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Zhenzhong Duan <zhenzhong.duan@gmail.com>
    Fixes: fd0c8894893cb ("intel-iommu: Set a more specific taint flag for invalid BIOS DMAR tables")
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb87b895f1468df7a163a6c665bf106a4d26f8c1
Author: qize wang <wangqize888888888@gmail.com>
Date:   Fri Nov 29 18:10:54 2019 +0800

    mwifiex: Fix heap overflow in mmwifiex_process_tdls_action_frame()
    
    commit 1e58252e334dc3f3756f424a157d1b7484464c40 upstream.
    
    mwifiex_process_tdls_action_frame() without checking
    the incoming tdls infomation element's vality before use it,
    this may cause multi heap buffer overflows.
    
    Fix them by putting vality check before use it.
    
    IE is TLV struct, but ht_cap and  ht_oper aren’t TLV struct.
    the origin marvell driver code is wrong:
    
    memcpy(&sta_ptr->tdls_cap.ht_oper, pos,....
    memcpy((u8 *)&sta_ptr->tdls_cap.ht_capb, pos,...
    
    Fix the bug by changing pos(the address of IE) to
    pos+2 ( the address of IE value ).
    
    Signed-off-by: qize wang <wangqize888888888@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Matthias Maennich <maennich@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a2ecb2d17b707058755a9a8c4677c2a724e24535
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Mon Mar 2 21:08:31 2020 -0800

    netfilter: cthelper: add missing attribute validation for cthelper
    
    commit c049b3450072b8e3998053490e025839fecfef31 upstream.
    
    Add missing attribute validation for cthelper
    to the netlink policy.
    
    Fixes: 12f7a505331e ("netfilter: add user-space connection tracking helper infrastructure")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85a7e73aacdaaca222839aba845ea054fd6ff804
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Mon Mar 2 21:10:58 2020 -0800

    nl80211: add missing attribute validation for channel switch
    
    commit 5cde05c61cbe13cbb3fa66d52b9ae84f7975e5e6 upstream.
    
    Add missing attribute validation for NL80211_ATTR_OPER_CLASS
    to the netlink policy.
    
    Fixes: 1057d35ede5d ("cfg80211: introduce TDLS channel switch commands")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Link: https://lore.kernel.org/r/20200303051058.4089398-4-kuba@kernel.org
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0a626cd0438cd868e8f00e6c17225f41bc0c0485
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Mon Mar 2 21:10:57 2020 -0800

    nl80211: add missing attribute validation for beacon report scanning
    
    commit 056e9375e1f3c4bf2fd49b70258c7daf788ecd9d upstream.
    
    Add missing attribute validation for beacon report scanning
    to the netlink policy.
    
    Fixes: 1d76250bd34a ("nl80211: support beacon report scanning")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Link: https://lore.kernel.org/r/20200303051058.4089398-3-kuba@kernel.org
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d4ffeafda7248f2791ebbfe872889162901e64c4
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Mon Mar 2 21:10:56 2020 -0800

    nl80211: add missing attribute validation for critical protocol indication
    
    commit 0e1a1d853ecedc99da9d27f9f5c376935547a0e2 upstream.
    
    Add missing attribute validation for critical protocol fields
    to the netlink policy.
    
    Fixes: 5de17984898c ("cfg80211: introduce critical protocol indication from user-space")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Link: https://lore.kernel.org/r/20200303051058.4089398-2-kuba@kernel.org
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 045bf09783747d43b35255e9669c78348e8a5313
Author: Yonghyun Hwang <yonghyun@google.com>
Date:   Wed Feb 26 12:30:06 2020 -0800

    iommu/vt-d: Fix a bug in intel_iommu_iova_to_phys() for huge page
    
    commit 77a1bce84bba01f3f143d77127b72e872b573795 upstream.
    
    intel_iommu_iova_to_phys() has a bug when it translates an IOVA for a huge
    page onto its corresponding physical address. This commit fixes the bug by
    accomodating the level of page entry for the IOVA and adds IOVA's lower
    address to the physical address.
    
    Cc: <stable@vger.kernel.org>
    Acked-by: Lu Baolu <baolu.lu@linux.intel.com>
    Reviewed-by: Moritz Fischer <mdf@kernel.org>
    Signed-off-by: Yonghyun Hwang <yonghyun@google.com>
    Fixes: 3871794642579 ("VT-d: Changes to support KVM")
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5145afc851adb202fb74f48d5c88fb45a5f78712
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Mar 9 15:01:37 2020 +0100

    iommu/vt-d: dmar: replace WARN_TAINT with pr_warn + add_taint
    
    commit 59833696442c674acbbd297772ba89e7ad8c753d upstream.
    
    Quoting from the comment describing the WARN functions in
    include/asm-generic/bug.h:
    
     * WARN(), WARN_ON(), WARN_ON_ONCE, and so on can be used to report
     * significant kernel issues that need prompt attention if they should ever
     * appear at runtime.
     *
     * Do not use these macros when checking for invalid external inputs
    
    The (buggy) firmware tables which the dmar code was calling WARN_TAINT
    for really are invalid external inputs. They are not under the kernel's
    control and the issues in them cannot be fixed by a kernel update.
    So logging a backtrace, which invites bug reports to be filed about this,
    is not helpful.
    
    Some distros, e.g. Fedora, have tools watching for the kernel backtraces
    logged by the WARN macros and offer the user an option to file a bug for
    this when these are encountered. The WARN_TAINT in warn_invalid_dmar()
    + another iommu WARN_TAINT, addressed in another patch, have lead to over
    a 100 bugs being filed this way.
    
    This commit replaces the WARN_TAINT("...") calls, with
    pr_warn(FW_BUG "...") + add_taint(TAINT_FIRMWARE_WORKAROUND, ...) calls
    avoiding the backtrace and thus also avoiding bug-reports being filed
    about this against the kernel.
    
    Fixes: fd0c8894893c ("intel-iommu: Set a more specific taint flag for invalid BIOS DMAR tables")
    Fixes: e625b4a95d50 ("iommu/vt-d: Parse ANDD records")
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Acked-by: Lu Baolu <baolu.lu@linux.intel.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20200309140138.3753-2-hdegoede@redhat.com
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1564895
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16d8f5dec5a6e73634ec035b2ae94fc807e314c6
Author: Vladis Dronov <vdronov@redhat.com>
Date:   Sun Mar 8 09:08:54 2020 +0100

    efi: Fix a race and a buffer overflow while reading efivars via sysfs
    
    commit 286d3250c9d6437340203fb64938bea344729a0e upstream.
    
    There is a race and a buffer overflow corrupting a kernel memory while
    reading an EFI variable with a size more than 1024 bytes via the older
    sysfs method. This happens because accessing struct efi_variable in
    efivar_{attr,size,data}_read() and friends is not protected from
    a concurrent access leading to a kernel memory corruption and, at best,
    to a crash. The race scenario is the following:
    
    CPU0:                                CPU1:
    efivar_attr_read()
      var->DataSize = 1024;
      efivar_entry_get(... &var->DataSize)
        down_interruptible(&efivars_lock)
                                         efivar_attr_read() // same EFI var
                                           var->DataSize = 1024;
                                           efivar_entry_get(... &var->DataSize)
                                             down_interruptible(&efivars_lock)
        virt_efi_get_variable()
        // returns EFI_BUFFER_TOO_SMALL but
        // var->DataSize is set to a real
        // var size more than 1024 bytes
        up(&efivars_lock)
                                             virt_efi_get_variable()
                                             // called with var->DataSize set
                                             // to a real var size, returns
                                             // successfully and overwrites
                                             // a 1024-bytes kernel buffer
                                             up(&efivars_lock)
    
    This can be reproduced by concurrent reading of an EFI variable which size
    is more than 1024 bytes:
    
      ts# for cpu in $(seq 0 $(nproc --ignore=1)); do ( taskset -c $cpu \
      cat /sys/firmware/efi/vars/KEKDefault*/size & ) ; done
    
    Fix this by using a local variable for a var's data buffer size so it
    does not get overwritten.
    
    Fixes: e14ab23dde12b80d ("efivars: efivar_entry API")
    Reported-by: Bob Sanders <bob.sanders@hpe.com> and the LTP testsuite
    Signed-off-by: Vladis Dronov <vdronov@redhat.com>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200305084041.24053-2-vdronov@redhat.com
    Link: https://lore.kernel.org/r/20200308080859.21568-24-ardb@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b5badebc9e3c8c74f2cbfeeafd9fe9050a3cb325
Author: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Date:   Wed Mar 11 19:26:43 2020 +0300

    ARC: define __ALIGN_STR and __ALIGN symbols for ARC
    
    commit 8d92e992a785f35d23f845206cf8c6cafbc264e0 upstream.
    
    The default defintions use fill pattern 0x90 for padding which for ARC
    generates unintended "ldh_s r12,[r0,0x20]" corresponding to opcode 0x9090
    
    So use ".align 4" which insert a "nop_s" instruction instead.
    
    Cc: stable@vger.kernel.org
    Acked-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3a91d55c921d9fc1b4aee30fe10b83ebc265b3a1
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Tue Mar 3 15:33:15 2020 +0100

    KVM: x86: clear stale x86_emulate_ctxt->intercept value
    
    commit 342993f96ab24d5864ab1216f46c0b199c2baf8e upstream.
    
    After commit 07721feee46b ("KVM: nVMX: Don't emulate instructions in guest
    mode") Hyper-V guests on KVM stopped booting with:
    
     kvm_nested_vmexit:    rip fffff802987d6169 reason EPT_VIOLATION info1 181
        info2 0 int_info 0 int_info_err 0
     kvm_page_fault:       address febd0000 error_code 181
     kvm_emulate_insn:     0:fffff802987d6169: f3 a5
     kvm_emulate_insn:     0:fffff802987d6169: f3 a5 FAIL
     kvm_inj_exception:    #UD (0x0)
    
    "f3 a5" is a "rep movsw" instruction, which should not be intercepted
    at all.  Commit c44b4c6ab80e ("KVM: emulate: clean up initializations in
    init_decode_cache") reduced the number of fields cleared by
    init_decode_cache() claiming that they are being cleared elsewhere,
    'intercept', however, is left uncleared if the instruction does not have
    any of the "slow path" flags (NotImpl, Stack, Op3264, Sse, Mmx, CheckPerm,
    NearBranch, No16 and of course Intercept itself).
    
    Fixes: c44b4c6ab80e ("KVM: emulate: clean up initializations in init_decode_cache")
    Fixes: 07721feee46b ("KVM: nVMX: Don't emulate instructions in guest mode")
    Cc: stable@vger.kernel.org
    Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Reviewed-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c919b9a148295a8fbae25f328027c0d9a0c61465
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Tue Mar 10 09:31:41 2020 -0400

    gfs2_atomic_open(): fix O_EXCL|O_CREAT handling on cold dcache
    
    commit 21039132650281de06a169cbe8a0f7e5c578fd8b upstream.
    
    with the way fs/namei.c:do_last() had been done, ->atomic_open()
    instances needed to recognize the case when existing file got
    found with O_EXCL|O_CREAT, either by falling back to finish_no_open()
    or failing themselves.  gfs2 one didn't.
    
    Fixes: 6d4ade986f9c (GFS2: Add atomic_open support)
    Cc: stable@kernel.org # v3.11
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ca9a513b01100a557f99fe69abcd3d664ff88b40
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Mar 12 18:25:20 2020 -0400

    cifs_atomic_open(): fix double-put on late allocation failure
    
    commit d9a9f4849fe0c9d560851ab22a85a666cddfdd24 upstream.
    
    several iterations of ->atomic_open() calling conventions ago, we
    used to need fput() if ->atomic_open() failed at some point after
    successful finish_open().  Now (since 2016) it's not needed -
    struct file carries enough state to make fput() work regardless
    of the point in struct file lifecycle and discarding it on
    failure exits in open() got unified.  Unfortunately, I'd missed
    the fact that we had an instance of ->atomic_open() (cifs one)
    that used to need that fput(), as well as the stale comment in
    finish_open() demanding such late failure handling.  Trivially
    fixed...
    
    Fixes: fe9ec8291fca "do_last(): take fput() on error after opening to out:"
    Cc: stable@kernel.org # v4.7+
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 346ff2f614e5b9f00b648b9dad72d88aa9c46dc8
Author: Colin Ian King <colin.king@canonical.com>
Date:   Fri Nov 8 14:45:27 2019 +0000

    drm/amd/display: remove duplicated assignment to grph_obj_type
    
    commit d785476c608c621b345dd9396e8b21e90375cb0e upstream.
    
    Variable grph_obj_type is being assigned twice, one of these is
    redundant so remove it.
    
    Addresses-Coverity: ("Evaluation order violation")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: <nobuhiro1.iwamatsu@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3772b93dc3bc12da7c2f52d06f53bd02e034a3b2
Author: Hillf Danton <hdanton@sina.com>
Date:   Fri Jan 24 20:14:45 2020 -0500

    workqueue: don't use wq_select_unbound_cpu() for bound works
    
    commit aa202f1f56960c60e7befaa0f49c72b8fa11b0a8 upstream.
    
    wq_select_unbound_cpu() is designed for unbound workqueues only, but
    it's wrongly called when using a bound workqueue too.
    
    Fixing this ensures work queued to a bound workqueue with
    cpu=WORK_CPU_UNBOUND always runs on the local CPU.
    
    Before, that would happen only if wq_unbound_cpumask happened to include
    it (likely almost always the case), or was empty, or we got lucky with
    forced round-robin placement.  So restricting
    /sys/devices/virtual/workqueue/cpumask to a small subset of a machine's
    CPUs would cause some bound work items to run unexpectedly there.
    
    Fixes: ef557180447f ("workqueue: schedule WORK_CPU_UNBOUND work on wq_unbound_cpumask CPUs")
    Cc: stable@vger.kernel.org # v4.5+
    Signed-off-by: Hillf Danton <hdanton@sina.com>
    [dj: massage changelog]
    Signed-off-by: Daniel Jordan <daniel.m.jordan@oracle.com>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Lai Jiangshan <jiangshanlai@gmail.com>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 412c17e2ddd76c86df6089b35df4ae5b63d616a7
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Mar 9 19:25:10 2020 +0100

    iommu/vt-d: quirk_ioat_snb_local_iommu: replace WARN_TAINT with pr_warn + add_taint
    
    commit 81ee85d0462410de8eeeec1b9761941fd6ed8c7b upstream.
    
    Quoting from the comment describing the WARN functions in
    include/asm-generic/bug.h:
    
     * WARN(), WARN_ON(), WARN_ON_ONCE, and so on can be used to report
     * significant kernel issues that need prompt attention if they should ever
     * appear at runtime.
     *
     * Do not use these macros when checking for invalid external inputs
    
    The (buggy) firmware tables which the dmar code was calling WARN_TAINT
    for really are invalid external inputs. They are not under the kernel's
    control and the issues in them cannot be fixed by a kernel update.
    So logging a backtrace, which invites bug reports to be filed about this,
    is not helpful.
    
    Fixes: 556ab45f9a77 ("ioat2: catch and recover from broken vtd configurations v6")
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Lu Baolu <baolu.lu@linux.intel.com>
    Link: https://lore.kernel.org/r/20200309182510.373875-1-hdegoede@redhat.com
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=701847
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64007a74ac017eb0886270be339b86b9f2d123e8
Author: Halil Pasic <pasic@linux.ibm.com>
Date:   Thu Feb 13 13:37:27 2020 +0100

    virtio-blk: fix hw_queue stopped on arbitrary error
    
    commit f5f6b95c72f7f8bb46eace8c5306c752d0133daa upstream.
    
    Since nobody else is going to restart our hw_queue for us, the
    blk_mq_start_stopped_hw_queues() is in virtblk_done() is not sufficient
    necessarily sufficient to ensure that the queue will get started again.
    In case of global resource outage (-ENOMEM because mapping failure,
    because of swiotlb full) our virtqueue may be empty and we can get
    stuck with a stopped hw_queue.
    
    Let us not stop the queue on arbitrary errors, but only on -EONSPC which
    indicates a full virtqueue, where the hw_queue is guaranteed to get
    started by virtblk_done() before when it makes sense to carry on
    submitting requests. Let us also remove a stale comment.
    
    Signed-off-by: Halil Pasic <pasic@linux.ibm.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Fixes: f7728002c1c7 ("virtio_ring: fix return code on DMA mapping fails")
    Link: https://lore.kernel.org/r/20200213123728.61216-2-pasic@linux.ibm.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9ed467f390d24a15722387bfd5e8a3dea3972a9
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Thu Mar 12 22:25:20 2020 +0100

    net: phy: fix MDIO bus PM PHY resuming
    
    [ Upstream commit 611d779af7cad2b87487ff58e4931a90c20b113c ]
    
    So far we have the unfortunate situation that mdio_bus_phy_may_suspend()
    is called in suspend AND resume path, assuming that function result is
    the same. After the original change this is no longer the case,
    resulting in broken resume as reported by Geert.
    
    To fix this call mdio_bus_phy_may_suspend() in the suspend path only,
    and let the phy_device store the info whether it was suspended by
    MDIO bus PM.
    
    Fixes: 503ba7c69610 ("net: phy: Avoid multiple suspends")
    Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Tested-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 529f4b7ad397398b44f95a2eb278cd7e7f251f86
Author: Shakeel Butt <shakeelb@google.com>
Date:   Mon Mar 9 22:16:05 2020 -0700

    cgroup: memcg: net: do not associate sock with unrelated cgroup
    
    [ Upstream commit e876ecc67db80dfdb8e237f71e5b43bb88ae549c ]
    
    We are testing network memory accounting in our setup and noticed
    inconsistent network memory usage and often unrelated cgroups network
    usage correlates with testing workload. On further inspection, it
    seems like mem_cgroup_sk_alloc() and cgroup_sk_alloc() are broken in
    irq context specially for cgroup v1.
    
    mem_cgroup_sk_alloc() and cgroup_sk_alloc() can be called in irq context
    and kind of assumes that this can only happen from sk_clone_lock()
    and the source sock object has already associated cgroup. However in
    cgroup v1, where network memory accounting is opt-in, the source sock
    can be unassociated with any cgroup and the new cloned sock can get
    associated with unrelated interrupted cgroup.
    
    Cgroup v2 can also suffer if the source sock object was created by
    process in the root cgroup or if sk_alloc() is called in irq context.
    The fix is to just do nothing in interrupt.
    
    WARNING: Please note that about half of the TCP sockets are allocated
    from the IRQ context, so, memory used by such sockets will not be
    accouted by the memcg.
    
    The stack trace of mem_cgroup_sk_alloc() from IRQ-context:
    
    CPU: 70 PID: 12720 Comm: ssh Tainted:  5.6.0-smp-DEV #1
    Hardware name: ...
    Call Trace:
     <IRQ>
     dump_stack+0x57/0x75
     mem_cgroup_sk_alloc+0xe9/0xf0
     sk_clone_lock+0x2a7/0x420
     inet_csk_clone_lock+0x1b/0x110
     tcp_create_openreq_child+0x23/0x3b0
     tcp_v6_syn_recv_sock+0x88/0x730
     tcp_check_req+0x429/0x560
     tcp_v6_rcv+0x72d/0xa40
     ip6_protocol_deliver_rcu+0xc9/0x400
     ip6_input+0x44/0xd0
     ? ip6_protocol_deliver_rcu+0x400/0x400
     ip6_rcv_finish+0x71/0x80
     ipv6_rcv+0x5b/0xe0
     ? ip6_sublist_rcv+0x2e0/0x2e0
     process_backlog+0x108/0x1e0
     net_rx_action+0x26b/0x460
     __do_softirq+0x104/0x2a6
     do_softirq_own_stack+0x2a/0x40
     </IRQ>
     do_softirq.part.19+0x40/0x50
     __local_bh_enable_ip+0x51/0x60
     ip6_finish_output2+0x23d/0x520
     ? ip6table_mangle_hook+0x55/0x160
     __ip6_finish_output+0xa1/0x100
     ip6_finish_output+0x30/0xd0
     ip6_output+0x73/0x120
     ? __ip6_finish_output+0x100/0x100
     ip6_xmit+0x2e3/0x600
     ? ipv6_anycast_cleanup+0x50/0x50
     ? inet6_csk_route_socket+0x136/0x1e0
     ? skb_free_head+0x1e/0x30
     inet6_csk_xmit+0x95/0xf0
     __tcp_transmit_skb+0x5b4/0xb20
     __tcp_send_ack.part.60+0xa3/0x110
     tcp_send_ack+0x1d/0x20
     tcp_rcv_state_process+0xe64/0xe80
     ? tcp_v6_connect+0x5d1/0x5f0
     tcp_v6_do_rcv+0x1b1/0x3f0
     ? tcp_v6_do_rcv+0x1b1/0x3f0
     __release_sock+0x7f/0xd0
     release_sock+0x30/0xa0
     __inet_stream_connect+0x1c3/0x3b0
     ? prepare_to_wait+0xb0/0xb0
     inet_stream_connect+0x3b/0x60
     __sys_connect+0x101/0x120
     ? __sys_getsockopt+0x11b/0x140
     __x64_sys_connect+0x1a/0x20
     do_syscall_64+0x51/0x200
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    The stack trace of mem_cgroup_sk_alloc() from IRQ-context:
    Fixes: 2d7580738345 ("mm: memcontrol: consolidate cgroup socket tracking")
    Fixes: d979a39d7242 ("cgroup: duplicate cgroup reference when cloning sockets")
    Signed-off-by: Shakeel Butt <shakeelb@google.com>
    Reviewed-by: Roman Gushchin <guro@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9fc9ba073f67612f670fed59d49067e19b7d3677
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Mar 4 09:32:16 2020 -0800

    bonding/alb: make sure arp header is pulled before accessing it
    
    commit b7469e83d2add567e4e0b063963db185f3167cea upstream.
    
    Similar to commit 38f88c454042 ("bonding/alb: properly access headers
    in bond_alb_xmit()"), we need to make sure arp header was pulled
    in skb->head before blindly accessing it in rlb_arp_xmit().
    
    Remove arp_pkt() private helper, since it is more readable/obvious
    to have the following construct back to back :
    
            if (!pskb_network_may_pull(skb, sizeof(*arp)))
                    return NULL;
            arp = (struct arp_pkt *)skb_network_header(skb);
    
    syzbot reported :
    
    BUG: KMSAN: uninit-value in bond_slave_has_mac_rx include/net/bonding.h:704 [inline]
    BUG: KMSAN: uninit-value in rlb_arp_xmit drivers/net/bonding/bond_alb.c:662 [inline]
    BUG: KMSAN: uninit-value in bond_alb_xmit+0x575/0x25e0 drivers/net/bonding/bond_alb.c:1477
    CPU: 0 PID: 12743 Comm: syz-executor.4 Not tainted 5.6.0-rc2-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+0x1c9/0x220 lib/dump_stack.c:118
     kmsan_report+0xf7/0x1e0 mm/kmsan/kmsan_report.c:118
     __msan_warning+0x58/0xa0 mm/kmsan/kmsan_instr.c:215
     bond_slave_has_mac_rx include/net/bonding.h:704 [inline]
     rlb_arp_xmit drivers/net/bonding/bond_alb.c:662 [inline]
     bond_alb_xmit+0x575/0x25e0 drivers/net/bonding/bond_alb.c:1477
     __bond_start_xmit drivers/net/bonding/bond_main.c:4257 [inline]
     bond_start_xmit+0x85d/0x2f70 drivers/net/bonding/bond_main.c:4282
     __netdev_start_xmit include/linux/netdevice.h:4524 [inline]
     netdev_start_xmit include/linux/netdevice.h:4538 [inline]
     xmit_one net/core/dev.c:3470 [inline]
     dev_hard_start_xmit+0x531/0xab0 net/core/dev.c:3486
     __dev_queue_xmit+0x37de/0x4220 net/core/dev.c:4063
     dev_queue_xmit+0x4b/0x60 net/core/dev.c:4096
     packet_snd net/packet/af_packet.c:2967 [inline]
     packet_sendmsg+0x8347/0x93b0 net/packet/af_packet.c:2992
     sock_sendmsg_nosec net/socket.c:652 [inline]
     sock_sendmsg net/socket.c:672 [inline]
     __sys_sendto+0xc1b/0xc50 net/socket.c:1998
     __do_sys_sendto net/socket.c:2010 [inline]
     __se_sys_sendto+0x107/0x130 net/socket.c:2006
     __x64_sys_sendto+0x6e/0x90 net/socket.c:2006
     do_syscall_64+0xb8/0x160 arch/x86/entry/common.c:296
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    RIP: 0033:0x45c479
    Code: ad b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 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 7b b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007fc77ffbbc78 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 00007fc77ffbc6d4 RCX: 000000000045c479
    RDX: 000000000000000e RSI: 00000000200004c0 RDI: 0000000000000003
    RBP: 000000000076bf20 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 0000000000000a04 R14: 00000000004cc7b0 R15: 000000000076bf2c
    
    Uninit was created at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:144 [inline]
     kmsan_internal_poison_shadow+0x66/0xd0 mm/kmsan/kmsan.c:127
     kmsan_slab_alloc+0x8a/0xe0 mm/kmsan/kmsan_hooks.c:82
     slab_alloc_node mm/slub.c:2793 [inline]
     __kmalloc_node_track_caller+0xb40/0x1200 mm/slub.c:4401
     __kmalloc_reserve net/core/skbuff.c:142 [inline]
     __alloc_skb+0x2fd/0xac0 net/core/skbuff.c:210
     alloc_skb include/linux/skbuff.h:1051 [inline]
     alloc_skb_with_frags+0x18c/0xa70 net/core/skbuff.c:5766
     sock_alloc_send_pskb+0xada/0xc60 net/core/sock.c:2242
     packet_alloc_skb net/packet/af_packet.c:2815 [inline]
     packet_snd net/packet/af_packet.c:2910 [inline]
     packet_sendmsg+0x66a0/0x93b0 net/packet/af_packet.c:2992
     sock_sendmsg_nosec net/socket.c:652 [inline]
     sock_sendmsg net/socket.c:672 [inline]
     __sys_sendto+0xc1b/0xc50 net/socket.c:1998
     __do_sys_sendto net/socket.c:2010 [inline]
     __se_sys_sendto+0x107/0x130 net/socket.c:2006
     __x64_sys_sendto+0x6e/0x90 net/socket.c:2006
     do_syscall_64+0xb8/0x160 arch/x86/entry/common.c:296
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Jay Vosburgh <j.vosburgh@gmail.com>
    Cc: Veaceslav Falico <vfalico@gmail.com>
    Cc: Andy Gospodarek <andy@greyhouse.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a7c8ba5828325fe003cf6a7417a21e77beea06a
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Mar 4 15:51:43 2020 -0800

    slip: make slhc_compress() more robust against malicious packets
    
    [ Upstream commit 110a40dfb708fe940a3f3704d470e431c368d256 ]
    
    Before accessing various fields in IPV4 network header
    and TCP header, make sure the packet :
    
    - Has IP version 4 (ip->version == 4)
    - Has not a silly network length (ip->ihl >= 5)
    - Is big enough to hold network and transport headers
    - Has not a silly TCP header size (th->doff >= sizeof(struct tcphdr) / 4)
    
    syzbot reported :
    
    BUG: KMSAN: uninit-value in slhc_compress+0x5b9/0x2e60 drivers/net/slip/slhc.c:270
    CPU: 0 PID: 11728 Comm: syz-executor231 Not tainted 5.6.0-rc2-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+0x1c9/0x220 lib/dump_stack.c:118
     kmsan_report+0xf7/0x1e0 mm/kmsan/kmsan_report.c:118
     __msan_warning+0x58/0xa0 mm/kmsan/kmsan_instr.c:215
     slhc_compress+0x5b9/0x2e60 drivers/net/slip/slhc.c:270
     ppp_send_frame drivers/net/ppp/ppp_generic.c:1637 [inline]
     __ppp_xmit_process+0x1902/0x2970 drivers/net/ppp/ppp_generic.c:1495
     ppp_xmit_process+0x147/0x2f0 drivers/net/ppp/ppp_generic.c:1516
     ppp_write+0x6bb/0x790 drivers/net/ppp/ppp_generic.c:512
     do_loop_readv_writev fs/read_write.c:717 [inline]
     do_iter_write+0x812/0xdc0 fs/read_write.c:1000
     compat_writev+0x2df/0x5a0 fs/read_write.c:1351
     do_compat_pwritev64 fs/read_write.c:1400 [inline]
     __do_compat_sys_pwritev fs/read_write.c:1420 [inline]
     __se_compat_sys_pwritev fs/read_write.c:1414 [inline]
     __ia32_compat_sys_pwritev+0x349/0x3f0 fs/read_write.c:1414
     do_syscall_32_irqs_on arch/x86/entry/common.c:339 [inline]
     do_fast_syscall_32+0x3c7/0x6e0 arch/x86/entry/common.c:410
     entry_SYSENTER_compat+0x68/0x77 arch/x86/entry/entry_64_compat.S:139
    RIP: 0023:0xf7f7cd99
    Code: 90 e8 0b 00 00 00 f3 90 0f ae e8 eb f9 8d 74 26 00 89 3c 24 c3 90 90 90 90 90 90 90 90 90 90 90 90 51 52 55 89 e5 0f 34 cd 80 <5d> 5a 59 c3 90 90 90 90 eb 0d 90 90 90 90 90 90 90 90 90 90 90 90
    RSP: 002b:00000000ffdb84ac EFLAGS: 00000217 ORIG_RAX: 000000000000014e
    RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00000000200001c0
    RDX: 0000000000000001 RSI: 0000000000000000 RDI: 0000000000000003
    RBP: 0000000040047459 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
    R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    
    Uninit was created at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:144 [inline]
     kmsan_internal_poison_shadow+0x66/0xd0 mm/kmsan/kmsan.c:127
     kmsan_slab_alloc+0x8a/0xe0 mm/kmsan/kmsan_hooks.c:82
     slab_alloc_node mm/slub.c:2793 [inline]
     __kmalloc_node_track_caller+0xb40/0x1200 mm/slub.c:4401
     __kmalloc_reserve net/core/skbuff.c:142 [inline]
     __alloc_skb+0x2fd/0xac0 net/core/skbuff.c:210
     alloc_skb include/linux/skbuff.h:1051 [inline]
     ppp_write+0x115/0x790 drivers/net/ppp/ppp_generic.c:500
     do_loop_readv_writev fs/read_write.c:717 [inline]
     do_iter_write+0x812/0xdc0 fs/read_write.c:1000
     compat_writev+0x2df/0x5a0 fs/read_write.c:1351
     do_compat_pwritev64 fs/read_write.c:1400 [inline]
     __do_compat_sys_pwritev fs/read_write.c:1420 [inline]
     __se_compat_sys_pwritev fs/read_write.c:1414 [inline]
     __ia32_compat_sys_pwritev+0x349/0x3f0 fs/read_write.c:1414
     do_syscall_32_irqs_on arch/x86/entry/common.c:339 [inline]
     do_fast_syscall_32+0x3c7/0x6e0 arch/x86/entry/common.c:410
     entry_SYSENTER_compat+0x68/0x77 arch/x86/entry/entry_64_compat.S:139
    
    Fixes: b5451d783ade ("slip: Move the SLIP drivers")
    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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a01b5e507c9945d29301c0fec918bef0313c86f5
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Tue Mar 10 20:36:16 2020 -0700

    net: fec: validate the new settings in fec_enet_set_coalesce()
    
    [ Upstream commit ab14961d10d02d20767612c78ce148f6eb85bd58 ]
    
    fec_enet_set_coalesce() validates the previously set params
    and if they are within range proceeds to apply the new ones.
    The new ones, however, are not validated. This seems backwards,
    probably a copy-paste error?
    
    Compile tested only.
    
    Fixes: d851b47b22fc ("net: fec: add interrupt coalescence feature support")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Acked-by: Fugang Duan <fugang.duan@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3bd2095b8058579317623f0ec2003d6cb650c844
Author: Mahesh Bandewar <maheshb@google.com>
Date:   Mon Mar 9 15:57:07 2020 -0700

    macvlan: add cond_resched() during multicast processing
    
    [ Upstream commit ce9a4186f9ac475c415ffd20348176a4ea366670 ]
    
    The Rx bound multicast packets are deferred to a workqueue and
    macvlan can also suffer from the same attack that was discovered
    by Syzbot for IPvlan. This solution is not as effective as in
    IPvlan. IPvlan defers all (Tx and Rx) multicast packet processing
    to a workqueue while macvlan does this way only for the Rx. This
    fix should address the Rx codition to certain extent.
    
    Tx is still suseptible. Tx multicast processing happens when
    .ndo_start_xmit is called, hence we cannot add cond_resched().
    However, it's not that severe since the user which is generating
     / flooding will be affected the most.
    
    Fixes: 412ca1550cbe ("macvlan: Move broadcasts into a work queue")
    Signed-off-by: Mahesh Bandewar <maheshb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ad8246c4dbe850ee1acdb9cec162281f49ecec3
Author: Mahesh Bandewar <maheshb@google.com>
Date:   Mon Mar 9 15:56:56 2020 -0700

    ipvlan: don't deref eth hdr before checking it's set
    
    [ Upstream commit ad8192767c9f9cf97da57b9ffcea70fb100febef ]
    
    IPvlan in L3 mode discards outbound multicast packets but performs
    the check before ensuring the ether-header is set or not. This is
    an error that Eric found through code browsing.
    
    Fixes: 2ad7bf363841 (“ipvlan: Initial check-in of the IPVLAN driver.”)
    Signed-off-by: Mahesh Bandewar <maheshb@google.com>
    Reported-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 8621153cb6c8b712cfad03c0fbbbf408c1ebc6e0
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Mar 9 18:22:58 2020 -0700

    ipvlan: do not use cond_resched_rcu() in ipvlan_process_multicast()
    
    [ Upstream commit afe207d80a61e4d6e7cfa0611a4af46d0ba95628 ]
    
    Commit e18b353f102e ("ipvlan: add cond_resched_rcu() while
    processing muticast backlog") added a cond_resched_rcu() in a loop
    using rcu protection to iterate over slaves.
    
    This is breaking rcu rules, so lets instead use cond_resched()
    at a point we can reschedule
    
    Fixes: e18b353f102e ("ipvlan: add cond_resched_rcu() while processing muticast backlog")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Mahesh Bandewar <maheshb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 276a875f7124b24c735e67e40a52a4f64047a501
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Wed Feb 28 11:43:27 2018 +0100

    ipvlan: egress mcast packets are not exceptional
    
    commit cccc200fcaf04cff4342036a72e51d6adf6c98c1 upstream.
    
    Currently, if IPv6 is enabled on top of an ipvlan device in l3
    mode, the following warning message:
    
     Dropped {multi|broad}cast of type= [86dd]
    
    is emitted every time that a RS is generated and dmseg is soon
    filled with irrelevant messages. Replace pr_warn with pr_debug,
    to preserve debuggability, without scaring the sysadmin.
    
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 96ce4520f3952f899fc43408434f4fa501545e66
Author: Jiri Wiesner <jwiesner@suse.com>
Date:   Sat Mar 7 13:31:57 2020 +0100

    ipvlan: do not add hardware address of master to its unicast filter list
    
    [ Upstream commit 63aae7b17344d4b08a7d05cb07044de4c0f9dcc6 ]
    
    There is a problem when ipvlan slaves are created on a master device that
    is a vmxnet3 device (ipvlan in VMware guests). The vmxnet3 driver does not
    support unicast address filtering. When an ipvlan device is brought up in
    ipvlan_open(), the ipvlan driver calls dev_uc_add() to add the hardware
    address of the vmxnet3 master device to the unicast address list of the
    master device, phy_dev->uc. This inevitably leads to the vmxnet3 master
    device being forced into promiscuous mode by __dev_set_rx_mode().
    
    Promiscuous mode is switched on the master despite the fact that there is
    still only one hardware address that the master device should use for
    filtering in order for the ipvlan device to be able to receive packets.
    The comment above struct net_device describes the uc_promisc member as a
    "counter, that indicates, that promiscuous mode has been enabled due to
    the need to listen to additional unicast addresses in a device that does
    not implement ndo_set_rx_mode()". Moreover, the design of ipvlan
    guarantees that only the hardware address of a master device,
    phy_dev->dev_addr, will be used to transmit and receive all packets from
    its ipvlan slaves. Thus, the unicast address list of the master device
    should not be modified by ipvlan_open() and ipvlan_stop() in order to make
    ipvlan a workable option on masters that do not support unicast address
    filtering.
    
    Fixes: 2ad7bf3638411 ("ipvlan: Initial check-in of the IPVLAN driver")
    Reported-by: Per Sundstrom <per.sundstrom@redqube.se>
    Signed-off-by: Jiri Wiesner <jwiesner@suse.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Mahesh Bandewar <maheshb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8079db5d729a6ca4de911124f68df61e0e09b040
Author: Mahesh Bandewar <maheshb@google.com>
Date:   Mon Mar 9 15:57:02 2020 -0700

    ipvlan: add cond_resched_rcu() while processing muticast backlog
    
    [ Upstream commit e18b353f102e371580f3f01dd47567a25acc3c1d ]
    
    If there are substantial number of slaves created as simulated by
    Syzbot, the backlog processing could take much longer and result
    into the issue found in the Syzbot report.
    
    INFO: rcu_sched detected stalls on CPUs/tasks:
            (detected by 1, t=10502 jiffies, g=5049, c=5048, q=752)
    All QSes seen, last rcu_sched kthread activity 10502 (4294965563-4294955061), jiffies_till_next_fqs=1, root ->qsmask 0x0
    syz-executor.1  R  running task on cpu   1  10984 11210   3866 0x30020008 179034491270
    Call Trace:
     <IRQ>
     [<ffffffff81497163>] _sched_show_task kernel/sched/core.c:8063 [inline]
     [<ffffffff81497163>] _sched_show_task.cold+0x2fd/0x392 kernel/sched/core.c:8030
     [<ffffffff8146a91b>] sched_show_task+0xb/0x10 kernel/sched/core.c:8073
     [<ffffffff815c931b>] print_other_cpu_stall kernel/rcu/tree.c:1577 [inline]
     [<ffffffff815c931b>] check_cpu_stall kernel/rcu/tree.c:1695 [inline]
     [<ffffffff815c931b>] __rcu_pending kernel/rcu/tree.c:3478 [inline]
     [<ffffffff815c931b>] rcu_pending kernel/rcu/tree.c:3540 [inline]
     [<ffffffff815c931b>] rcu_check_callbacks.cold+0xbb4/0xc29 kernel/rcu/tree.c:2876
     [<ffffffff815e3962>] update_process_times+0x32/0x80 kernel/time/timer.c:1635
     [<ffffffff816164f0>] tick_sched_handle+0xa0/0x180 kernel/time/tick-sched.c:161
     [<ffffffff81616ae4>] tick_sched_timer+0x44/0x130 kernel/time/tick-sched.c:1193
     [<ffffffff815e75f7>] __run_hrtimer kernel/time/hrtimer.c:1393 [inline]
     [<ffffffff815e75f7>] __hrtimer_run_queues+0x307/0xd90 kernel/time/hrtimer.c:1455
     [<ffffffff815e90ea>] hrtimer_interrupt+0x2ea/0x730 kernel/time/hrtimer.c:1513
     [<ffffffff844050f4>] local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1031 [inline]
     [<ffffffff844050f4>] smp_apic_timer_interrupt+0x144/0x5e0 arch/x86/kernel/apic/apic.c:1056
     [<ffffffff84401cbe>] apic_timer_interrupt+0x8e/0xa0 arch/x86/entry/entry_64.S:778
    RIP: 0010:do_raw_read_lock+0x22/0x80 kernel/locking/spinlock_debug.c:153
    RSP: 0018:ffff8801dad07ab8 EFLAGS: 00000a02 ORIG_RAX: ffffffffffffff12
    RAX: 0000000000000000 RBX: ffff8801c4135680 RCX: 0000000000000000
    RDX: 1ffff10038826afe RSI: ffff88019d816bb8 RDI: ffff8801c41357f0
    RBP: ffff8801dad07ac0 R08: 0000000000004b15 R09: 0000000000310273
    R10: ffff88019d816bb8 R11: 0000000000000001 R12: ffff8801c41357e8
    R13: 0000000000000000 R14: ffff8801cfb19850 R15: ffff8801cfb198b0
     [<ffffffff8101460e>] __raw_read_lock_bh include/linux/rwlock_api_smp.h:177 [inline]
     [<ffffffff8101460e>] _raw_read_lock_bh+0x3e/0x50 kernel/locking/spinlock.c:240
     [<ffffffff840d78ca>] ipv6_chk_mcast_addr+0x11a/0x6f0 net/ipv6/mcast.c:1006
     [<ffffffff84023439>] ip6_mc_input+0x319/0x8e0 net/ipv6/ip6_input.c:482
     [<ffffffff840211c8>] dst_input include/net/dst.h:449 [inline]
     [<ffffffff840211c8>] ip6_rcv_finish+0x408/0x610 net/ipv6/ip6_input.c:78
     [<ffffffff840214de>] NF_HOOK include/linux/netfilter.h:292 [inline]
     [<ffffffff840214de>] NF_HOOK include/linux/netfilter.h:286 [inline]
     [<ffffffff840214de>] ipv6_rcv+0x10e/0x420 net/ipv6/ip6_input.c:278
     [<ffffffff83a29efa>] __netif_receive_skb_one_core+0x12a/0x1f0 net/core/dev.c:5303
     [<ffffffff83a2a15c>] __netif_receive_skb+0x2c/0x1b0 net/core/dev.c:5417
     [<ffffffff83a2f536>] process_backlog+0x216/0x6c0 net/core/dev.c:6243
     [<ffffffff83a30d1b>] napi_poll net/core/dev.c:6680 [inline]
     [<ffffffff83a30d1b>] net_rx_action+0x47b/0xfb0 net/core/dev.c:6748
     [<ffffffff846002c8>] __do_softirq+0x2c8/0x99a kernel/softirq.c:317
     [<ffffffff813e656a>] invoke_softirq kernel/softirq.c:399 [inline]
     [<ffffffff813e656a>] irq_exit+0x16a/0x1a0 kernel/softirq.c:439
     [<ffffffff84405115>] exiting_irq arch/x86/include/asm/apic.h:561 [inline]
     [<ffffffff84405115>] smp_apic_timer_interrupt+0x165/0x5e0 arch/x86/kernel/apic/apic.c:1058
     [<ffffffff84401cbe>] apic_timer_interrupt+0x8e/0xa0 arch/x86/entry/entry_64.S:778
     </IRQ>
    RIP: 0010:__sanitizer_cov_trace_pc+0x26/0x50 kernel/kcov.c:102
    RSP: 0018:ffff880196033bd8 EFLAGS: 00000246 ORIG_RAX: ffffffffffffff12
    RAX: ffff88019d8161c0 RBX: 00000000ffffffff RCX: ffffc90003501000
    RDX: 0000000000000002 RSI: ffffffff816236d1 RDI: 0000000000000005
    RBP: ffff880196033bd8 R08: ffff88019d8161c0 R09: 0000000000000000
    R10: 1ffff10032c067f0 R11: 0000000000000000 R12: 0000000000000000
    R13: 0000000000000080 R14: 0000000000000000 R15: 0000000000000000
     [<ffffffff816236d1>] do_futex+0x151/0x1d50 kernel/futex.c:3548
     [<ffffffff816260f0>] C_SYSC_futex kernel/futex_compat.c:201 [inline]
     [<ffffffff816260f0>] compat_SyS_futex+0x270/0x3b0 kernel/futex_compat.c:175
     [<ffffffff8101da17>] do_syscall_32_irqs_on arch/x86/entry/common.c:353 [inline]
     [<ffffffff8101da17>] do_fast_syscall_32+0x357/0xe1c arch/x86/entry/common.c:415
     [<ffffffff84401a9b>] entry_SYSENTER_compat+0x8b/0x9d arch/x86/entry/entry_64_compat.S:139
    RIP: 0023:0xf7f23c69
    RSP: 002b:00000000f5d1f12c EFLAGS: 00000282 ORIG_RAX: 00000000000000f0
    RAX: ffffffffffffffda RBX: 000000000816af88 RCX: 0000000000000080
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 000000000816af8c
    RBP: 00000000f5d1f228 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
    R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    rcu_sched kthread starved for 10502 jiffies! g5049 c5048 f0x2 RCU_GP_WAIT_FQS(3) ->state=0x0 ->cpu=1
    rcu_sched       R  running task on cpu   1  13048     8      2 0x90000000 179099587640
    Call Trace:
     [<ffffffff8147321f>] context_switch+0x60f/0xa60 kernel/sched/core.c:3209
     [<ffffffff8100095a>] __schedule+0x5aa/0x1da0 kernel/sched/core.c:3934
     [<ffffffff810021df>] schedule+0x8f/0x1b0 kernel/sched/core.c:4011
     [<ffffffff8101116d>] schedule_timeout+0x50d/0xee0 kernel/time/timer.c:1803
     [<ffffffff815c13f1>] rcu_gp_kthread+0xda1/0x3b50 kernel/rcu/tree.c:2327
     [<ffffffff8144b318>] kthread+0x348/0x420 kernel/kthread.c:246
     [<ffffffff84400266>] ret_from_fork+0x56/0x70 arch/x86/entry/entry_64.S:393
    
    Fixes: ba35f8588f47 (“ipvlan: Defer multicast / broadcast processing to a work-queue”)
    Signed-off-by: Mahesh Bandewar <maheshb@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65ff45dfdc63b53f89db87fa062a94a1d993afe5
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Mon Mar 2 21:05:26 2020 -0800

    nfc: add missing attribute validation for vendor subcommand
    
    [ Upstream commit 6ba3da446551f2150fadbf8c7788edcb977683d3 ]
    
    Add missing attribute validation for vendor subcommand attributes
    to the netlink policy.
    
    Fixes: 9e58095f9660 ("NFC: netlink: Implement vendor command support")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ba5c3ddb59cc6550c6f190b58b65d4b92f804c8
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Mon Mar 2 21:05:24 2020 -0800

    nfc: add missing attribute validation for SE API
    
    [ Upstream commit 361d23e41ca6e504033f7e66a03b95788377caae ]
    
    Add missing attribute validation for NFC_ATTR_SE_INDEX
    to the netlink policy.
    
    Fixes: 5ce3f32b5264 ("NFC: netlink: SE API implementation")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 26623ec1fcd69717e03c92e6af5918480f2f24a6
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Mon Mar 2 21:05:22 2020 -0800

    team: add missing attribute validation for array index
    
    [ Upstream commit 669fcd7795900cd1880237cbbb57a7db66cb9ac8 ]
    
    Add missing attribute validation for TEAM_ATTR_OPTION_ARRAY_INDEX
    to the netlink policy.
    
    Fixes: b13033262d24 ("team: introduce array options")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Reviewed-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8571e0c2b68f486bcb273af884135b353e5e70f
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Mon Mar 2 21:05:21 2020 -0800

    team: add missing attribute validation for port ifindex
    
    [ Upstream commit dd25cb272ccce4db67dc8509278229099e4f5e99 ]
    
    Add missing attribute validation for TEAM_ATTR_OPTION_PORT_IFINDEX
    to the netlink policy.
    
    Fixes: 80f7c6683fe0 ("team: add support for per-port options")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Reviewed-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65c9a7a213e43a35dd80152a81fb5aa7c50bf534
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Mon Mar 2 21:05:19 2020 -0800

    net: fq: add missing attribute validation for orphan mask
    
    [ Upstream commit 7e6dc03eeb023e18427a373522f1d247b916a641 ]
    
    Add missing attribute validation for TCA_FQ_ORPHAN_MASK
    to the netlink policy.
    
    Fixes: 06eb395fa985 ("pkt_sched: fq: better control of DDOS traffic")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1abae2c50c6799628776f02a03e25a14cd782d86
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Mon Mar 2 21:05:17 2020 -0800

    macsec: add missing attribute validation for port
    
    [ Upstream commit 31d9a1c524964bac77b7f9d0a1ac140dc6b57461 ]
    
    Add missing attribute validation for IFLA_MACSEC_PORT
    to the netlink policy.
    
    Fixes: c09440f7dcb3 ("macsec: introduce IEEE 802.1AE driver")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 76de44ee4d7b6423517ccd5b63fdce27eadcd409
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Mon Mar 2 21:05:15 2020 -0800

    nl802154: add missing attribute validation for dev_type
    
    [ Upstream commit b60673c4c418bef7550d02faf53c34fbfeb366bf ]
    
    Add missing attribute type validation for IEEE802154_ATTR_DEV_TYPE
    to the netlink policy.
    
    Fixes: 90c049b2c6ae ("ieee802154: interface type to be added")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Acked-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5869a748587a7c05a6b4739d2d3637e54e2d8950
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Mon Mar 2 21:05:14 2020 -0800

    nl802154: add missing attribute validation
    
    [ Upstream commit 9322cd7c4af2ccc7fe7c5f01adb53f4f77949e92 ]
    
    Add missing attribute validation for several u8 types.
    
    Fixes: 2c21d11518b6 ("net: add NL802154 interface for configuration of 802.15.4 devices")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Acked-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b21c9cbf647a8f1b4d9d45d6b30dfd47c8a5731
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Mon Mar 2 21:05:13 2020 -0800

    fib: add missing attribute validation for tun_id
    
    [ Upstream commit 4c16d64ea04056f1b1b324ab6916019f6a064114 ]
    
    Add missing netlink policy entry for FRA_TUN_ID.
    
    Fixes: e7030878fc84 ("fib: Add fib rule match on tunnel id")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Reviewed-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 285112d5a481ce5d58deb75b12c0ac13a65d7416
Author: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
Date:   Sun Mar 1 22:07:17 2020 -0500

    bnxt_en: reinitialize IRQs when MTU is modified
    
    [ Upstream commit a9b952d267e59a3b405e644930f46d252cea7122 ]
    
    MTU changes may affect the number of IRQs so we must call
    bnxt_close_nic()/bnxt_open_nic() with the irq_re_init parameter
    set to true.  The reason is that a larger MTU may require
    aggregation rings not needed with smaller MTU.  We may not be
    able to allocate the required number of aggregation rings and
    so we reduce the number of channels which will change the number
    of IRQs.  Without this patch, it may crash eventually in
    pci_disable_msix() when the IRQs are not properly unwound.
    
    Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.")
    Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f120a4000223555ef1cb0215d4afdf309ab9b2aa
Author: You-Sheng Yang <vicamo.yang@canonical.com>
Date:   Wed Feb 26 23:37:10 2020 +0800

    r8152: check disconnect status after long sleep
    
    [ Upstream commit d64c7a08034b32c285e576208ae44fc3ba3fa7df ]
    
    Dell USB Type C docking WD19/WD19DC attaches additional peripherals as:
    
      /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
          |__ Port 1: Dev 11, If 0, Class=Hub, Driver=hub/4p, 5000M
              |__ Port 3: Dev 12, If 0, Class=Hub, Driver=hub/4p, 5000M
              |__ Port 4: Dev 13, If 0, Class=Vendor Specific Class,
                  Driver=r8152, 5000M
    
    where usb 2-1-3 is a hub connecting all USB Type-A/C ports on the dock.
    
    When hotplugging such dock with additional usb devices already attached on
    it, the probing process may reset usb 2.1 port, therefore r8152 ethernet
    device is also reset. However, during r8152 device init there are several
    for-loops that, when it's unable to retrieve hardware registers due to
    being disconnected from USB, may take up to 14 seconds each in practice,
    and that has to be completed before USB may re-enumerate devices on the
    bus. As a result, devices attached to the dock will only be available
    after nearly 1 minute after the dock was plugged in:
    
      [ 216.388290] [250] r8152 2-1.4:1.0: usb_probe_interface
      [ 216.388292] [250] r8152 2-1.4:1.0: usb_probe_interface - got id
      [ 258.830410] r8152 2-1.4:1.0 (unnamed net_device) (uninitialized): PHY not ready
      [ 258.830460] r8152 2-1.4:1.0 (unnamed net_device) (uninitialized): Invalid header when reading pass-thru MAC addr
      [ 258.830464] r8152 2-1.4:1.0 (unnamed net_device) (uninitialized): Get ether addr fail
    
    This happens in, for example, r8153_init:
    
      static int generic_ocp_read(struct r8152 *tp, u16 index, u16 size,
                                void *data, u16 type)
      {
        if (test_bit(RTL8152_UNPLUG, &tp->flags))
          return -ENODEV;
        ...
      }
    
      static u16 ocp_read_word(struct r8152 *tp, u16 type, u16 index)
      {
        u32 data;
        ...
        generic_ocp_read(tp, index, sizeof(tmp), &tmp, type | byen);
    
        data = __le32_to_cpu(tmp);
        ...
        return (u16)data;
      }
    
      static void r8153_init(struct r8152 *tp)
      {
        ...
        if (test_bit(RTL8152_UNPLUG, &tp->flags))
          return;
    
        for (i = 0; i < 500; i++) {
          if (ocp_read_word(tp, MCU_TYPE_PLA, PLA_BOOT_CTRL) &
              AUTOLOAD_DONE)
            break;
          msleep(20);
        }
        ...
      }
    
    Since ocp_read_word() doesn't check the return status of
    generic_ocp_read(), and the only exit condition for the loop is to have
    a match in the returned value, such loops will only ends after exceeding
    its maximum runs when the device has been marked as disconnected, which
    takes 500 * 20ms = 10 seconds in theory, 14 in practice.
    
    To solve this long latency another test to RTL8152_UNPLUG flag should be
    added after those 20ms sleep to skip unnecessary loops, so that the device
    probe can complete early and proceed to parent port reset/reprobe process.
    
    This can be reproduced on all kernel versions up to latest v5.6-rc2, but
    after v5.5-rc7 the reproduce rate is dramatically lowered to 1/30 or less
    while it was around 1/2.
    
    Signed-off-by: You-Sheng Yang <vicamo.yang@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e5660ee1a35ba155cb2bee53c441fed07aa8de67
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Mar 4 17:24:31 2020 +0300

    net: nfc: fix bounds checking bugs on "pipe"
    
    [ Upstream commit a3aefbfe45751bf7b338c181b97608e276b5bb73 ]
    
    This is similar to commit 674d9de02aa7 ("NFC: Fix possible memory
    corruption when handling SHDLC I-Frame commands") and commit d7ee81ad09f0
    ("NFC: nci: Add some bounds checking in nci_hci_cmd_received()") which
    added range checks on "pipe".
    
    The "pipe" variable comes skb->data[0] in nfc_hci_msg_rx_work().
    It's in the 0-255 range.  We're using it as the array index into the
    hdev->pipes[] array which has NFC_HCI_MAX_PIPES (128) members.
    
    Fixes: 118278f20aa8 ("NFC: hci: Add pipes table to reference them with a tuple {gate, host}")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc094dab7eb915dc46ecb10bdd2e667a4dd4b8e9
Author: Dmitry Bogdanov <dbogdanov@marvell.com>
Date:   Tue Mar 10 18:22:24 2020 +0300

    net: macsec: update SCI upon MAC address change.
    
    [ Upstream commit 6fc498bc82929ee23aa2f35a828c6178dfd3f823 ]
    
    SCI should be updated, because it contains MAC in its first 6 octets.
    
    Fixes: c09440f7dcb3 ("macsec: introduce IEEE 802.1AE driver")
    Signed-off-by: Dmitry Bogdanov <dbogdanov@marvell.com>
    Signed-off-by: Mark Starovoytov <mstarovoitov@marvell.com>
    Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d80c781790e49cd8ebaffc1eb15dd1bc64b4d77
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Tue Mar 10 15:27:37 2020 +0800

    ipv6/addrconf: call ipv6_mc_up() for non-Ethernet interface
    
    [ Upstream commit 60380488e4e0b95e9e82aa68aa9705baa86de84c ]
    
    Rafał found an issue that for non-Ethernet interface, if we down and up
    frequently, the memory will be consumed slowly.
    
    The reason is we add allnodes/allrouters addressed in multicast list in
    ipv6_add_dev(). When link down, we call ipv6_mc_down(), store all multicast
    addresses via mld_add_delrec(). But when link up, we don't call ipv6_mc_up()
    for non-Ethernet interface to remove the addresses. This makes idev->mc_tomb
    getting bigger and bigger. The call stack looks like:
    
    addrconf_notify(NETDEV_REGISTER)
            ipv6_add_dev
                    ipv6_dev_mc_inc(ff01::1)
                    ipv6_dev_mc_inc(ff02::1)
                    ipv6_dev_mc_inc(ff02::2)
    
    addrconf_notify(NETDEV_UP)
            addrconf_dev_config
                    /* Alas, we support only Ethernet autoconfiguration. */
                    return;
    
    addrconf_notify(NETDEV_DOWN)
            addrconf_ifdown
                    ipv6_mc_down
                            igmp6_group_dropped(ff02::2)
                                    mld_add_delrec(ff02::2)
                            igmp6_group_dropped(ff02::1)
                            igmp6_group_dropped(ff01::1)
    
    After investigating, I can't found a rule to disable multicast on
    non-Ethernet interface. In RFC2460, the link could be Ethernet, PPP, ATM,
    tunnels, etc. In IPv4, it doesn't check the dev type when calls ip_mc_up()
    in inetdev_event(). Even for IPv6, we don't check the dev type and call
    ipv6_add_dev(), ipv6_dev_mc_inc() after register device.
    
    So I think it's OK to fix this memory consumer by calling ipv6_mc_up() for
    non-Ethernet interface.
    
    v2: Also check IFF_MULTICAST flag to make sure the interface supports
        multicast
    
    Reported-by: Rafał Miłecki <zajec5@gmail.com>
    Tested-by: Rafał Miłecki <zajec5@gmail.com>
    Fixes: 74235a25c673 ("[IPV6] addrconf: Fix IPv6 on tuntap tunnels")
    Fixes: 1666d49e1d41 ("mld: do not remove mld souce list info when set link down")
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f1aea70c1f8419853001536d2ccbaeb61106b9c
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Mar 7 22:05:14 2020 -0800

    gre: fix uninit-value in __iptunnel_pull_header
    
    [ Upstream commit 17c25cafd4d3e74c83dce56b158843b19c40b414 ]
    
    syzbot found an interesting case of the kernel reading
    an uninit-value [1]
    
    Problem is in the handling of ETH_P_WCCP in gre_parse_header()
    
    We look at the byte following GRE options to eventually decide
    if the options are four bytes longer.
    
    Use skb_header_pointer() to not pull bytes if we found
    that no more bytes were needed.
    
    All callers of gre_parse_header() are properly using pskb_may_pull()
    anyway before proceeding to next header.
    
    [1]
    BUG: KMSAN: uninit-value in pskb_may_pull include/linux/skbuff.h:2303 [inline]
    BUG: KMSAN: uninit-value in __iptunnel_pull_header+0x30c/0xbd0 net/ipv4/ip_tunnel_core.c:94
    CPU: 1 PID: 11784 Comm: syz-executor940 Not tainted 5.6.0-rc2-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+0x1c9/0x220 lib/dump_stack.c:118
     kmsan_report+0xf7/0x1e0 mm/kmsan/kmsan_report.c:118
     __msan_warning+0x58/0xa0 mm/kmsan/kmsan_instr.c:215
     pskb_may_pull include/linux/skbuff.h:2303 [inline]
     __iptunnel_pull_header+0x30c/0xbd0 net/ipv4/ip_tunnel_core.c:94
     iptunnel_pull_header include/net/ip_tunnels.h:411 [inline]
     gre_rcv+0x15e/0x19c0 net/ipv6/ip6_gre.c:606
     ip6_protocol_deliver_rcu+0x181b/0x22c0 net/ipv6/ip6_input.c:432
     ip6_input_finish net/ipv6/ip6_input.c:473 [inline]
     NF_HOOK include/linux/netfilter.h:307 [inline]
     ip6_input net/ipv6/ip6_input.c:482 [inline]
     ip6_mc_input+0xdf2/0x1460 net/ipv6/ip6_input.c:576
     dst_input include/net/dst.h:442 [inline]
     ip6_rcv_finish net/ipv6/ip6_input.c:76 [inline]
     NF_HOOK include/linux/netfilter.h:307 [inline]
     ipv6_rcv+0x683/0x710 net/ipv6/ip6_input.c:306
     __netif_receive_skb_one_core net/core/dev.c:5198 [inline]
     __netif_receive_skb net/core/dev.c:5312 [inline]
     netif_receive_skb_internal net/core/dev.c:5402 [inline]
     netif_receive_skb+0x66b/0xf20 net/core/dev.c:5461
     tun_rx_batched include/linux/skbuff.h:4321 [inline]
     tun_get_user+0x6aef/0x6f60 drivers/net/tun.c:1997
     tun_chr_write_iter+0x1f2/0x360 drivers/net/tun.c:2026
     call_write_iter include/linux/fs.h:1901 [inline]
     new_sync_write fs/read_write.c:483 [inline]
     __vfs_write+0xa5a/0xca0 fs/read_write.c:496
     vfs_write+0x44a/0x8f0 fs/read_write.c:558
     ksys_write+0x267/0x450 fs/read_write.c:611
     __do_sys_write fs/read_write.c:623 [inline]
     __se_sys_write fs/read_write.c:620 [inline]
     __ia32_sys_write+0xdb/0x120 fs/read_write.c:620
     do_syscall_32_irqs_on arch/x86/entry/common.c:339 [inline]
     do_fast_syscall_32+0x3c7/0x6e0 arch/x86/entry/common.c:410
     entry_SYSENTER_compat+0x68/0x77 arch/x86/entry/entry_64_compat.S:139
    RIP: 0023:0xf7f62d99
    Code: 90 e8 0b 00 00 00 f3 90 0f ae e8 eb f9 8d 74 26 00 89 3c 24 c3 90 90 90 90 90 90 90 90 90 90 90 90 51 52 55 89 e5 0f 34 cd 80 <5d> 5a 59 c3 90 90 90 90 eb 0d 90 90 90 90 90 90 90 90 90 90 90 90
    RSP: 002b:00000000fffedb2c EFLAGS: 00000217 ORIG_RAX: 0000000000000004
    RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 0000000020002580
    RDX: 0000000000000fca RSI: 0000000000000036 RDI: 0000000000000004
    RBP: 0000000000008914 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
    R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    
    Uninit was created at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:144 [inline]
     kmsan_internal_poison_shadow+0x66/0xd0 mm/kmsan/kmsan.c:127
     kmsan_slab_alloc+0x8a/0xe0 mm/kmsan/kmsan_hooks.c:82
     slab_alloc_node mm/slub.c:2793 [inline]
     __kmalloc_node_track_caller+0xb40/0x1200 mm/slub.c:4401
     __kmalloc_reserve net/core/skbuff.c:142 [inline]
     __alloc_skb+0x2fd/0xac0 net/core/skbuff.c:210
     alloc_skb include/linux/skbuff.h:1051 [inline]
     alloc_skb_with_frags+0x18c/0xa70 net/core/skbuff.c:5766
     sock_alloc_send_pskb+0xada/0xc60 net/core/sock.c:2242
     tun_alloc_skb drivers/net/tun.c:1529 [inline]
     tun_get_user+0x10ae/0x6f60 drivers/net/tun.c:1843
     tun_chr_write_iter+0x1f2/0x360 drivers/net/tun.c:2026
     call_write_iter include/linux/fs.h:1901 [inline]
     new_sync_write fs/read_write.c:483 [inline]
     __vfs_write+0xa5a/0xca0 fs/read_write.c:496
     vfs_write+0x44a/0x8f0 fs/read_write.c:558
     ksys_write+0x267/0x450 fs/read_write.c:611
     __do_sys_write fs/read_write.c:623 [inline]
     __se_sys_write fs/read_write.c:620 [inline]
     __ia32_sys_write+0xdb/0x120 fs/read_write.c:620
     do_syscall_32_irqs_on arch/x86/entry/common.c:339 [inline]
     do_fast_syscall_32+0x3c7/0x6e0 arch/x86/entry/common.c:410
     entry_SYSENTER_compat+0x68/0x77 arch/x86/entry/entry_64_compat.S:139
    
    Fixes: 95f5c64c3c13 ("gre: Move utility functions to common headers")
    Fixes: c54419321455 ("GRE: Refactor GRE tunneling code.")
    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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78604444fb87c15fb05a5049da8dfe8710217ab7
Author: Dmitry Yakunin <zeil@yandex-team.ru>
Date:   Thu Mar 5 17:45:57 2020 +0300

    cgroup, netclassid: periodically release file_lock on classid updating
    
    [ Upstream commit 018d26fcd12a75fb9b5fe233762aa3f2f0854b88 ]
    
    In our production environment we have faced with problem that updating
    classid in cgroup with heavy tasks cause long freeze of the file tables
    in this tasks. By heavy tasks we understand tasks with many threads and
    opened sockets (e.g. balancers). This freeze leads to an increase number
    of client timeouts.
    
    This patch implements following logic to fix this issue:
    аfter iterating 1000 file descriptors file table lock will be released
    thus providing a time gap for socket creation/deletion.
    
    Now update is non atomic and socket may be skipped using calls:
    
    dup2(oldfd, newfd);
    close(oldfd);
    
    But this case is not typical. Moreover before this patch skip is possible
    too by hiding socket fd in unix socket buffer.
    
    New sockets will be allocated with updated classid because cgroup state
    is updated before start of the file descriptors iteration.
    
    So in common cases this patch has no side effects.
    
    Signed-off-by: Dmitry Yakunin <zeil@yandex-team.ru>
    Reviewed-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da933d989ff530de8325b0c24134728492e94bb3
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu Feb 20 15:34:53 2020 -0800

    net: phy: Avoid multiple suspends
    
    commit 503ba7c6961034ff0047707685644cad9287c226 upstream.
    
    It is currently possible for a PHY device to be suspended as part of a
    network device driver's suspend call while it is still being attached to
    that net_device, either via phy_suspend() or implicitly via phy_stop().
    
    Later on, when the MDIO bus controller get suspended, we would attempt
    to suspend again the PHY because it is still attached to a network
    device.
    
    This is both a waste of time and creates an opportunity for improper
    clock/power management bugs to creep in.
    
    Fixes: 803dd9c77ac3 ("net: phy: avoid suspending twice a PHY")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ffa65aa2bc5db1be0348391d44458bffdba8786
Author: David S. Miller <davem@davemloft.net>
Date:   Tue Dec 4 08:47:44 2018 -0800

    phy: Revert toggling reset changes.
    
    commit 7b566f70e1bf65b189b66eb3de6f431c30f7dff2 upstream.
    
    This reverts:
    
    ef1b5bf506b1 ("net: phy: Fix not to call phy_resume() if PHY is not attached")
    8c85f4b81296 ("net: phy: micrel: add toggling phy reset if PHY is not  attached")
    
    Andrew Lunn informs me that there are alternative efforts
    underway to fix this more properly.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [just take the ef1b5bf506b1 revert - gregkh]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dbfc9e9878561da92cdcda41f321137c16966587
Author: Petr Malat <oss@malat.biz>
Date:   Fri Mar 13 21:24:43 2020 +0100

    NFS: Remove superfluous kmap in nfs_readdir_xdr_to_array
    
    Array is mapped by nfs_readdir_get_array(), the further kmap is a result
    of a bad merge and should be removed.
    
    This resource leakage can be exploited for DoS by receptively reading
    a content of a directory on NFS (e.g. by running ls).
    
    Fixes: 67a56e9743171 ("NFS: Fix memory leaks and corruption in readdir")
    Signed-off-by: Petr Malat <oss@malat.biz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>