tree 11a9c831efa982e4b509851cb10af4e58c8a9872
parent 176d630f50f00d872de4fbfebe704ffea6338824
parent 5d087e3578cf9cbd850a6f0a5c8b8169f22b5272
author COS Kernel Merge Bot <cloud-image-merge-automation@prod.google.com> 1601197029 -0700
committer COS Kernel Merge Bot <cloud-image-merge-automation@prod.google.com> 1601197029 -0700

merge-upstream/v5.4.68 from branch/tag: upstream/v5.4.68 into branch: cos-5.4

Changelog:
-------------------------------------------------------------

Cong Wang (1):
      act_ife: load meta modules before tcf_idr_check_alloc()

Dan Carpenter (1):
      hdlc_ppp: add range checks in ppp_cp_parse_cr()

David Ahern (2):
      ipv4: Initialize flowi4_multipath_hash in data path
      ipv4: Update exception handling for multipath routes via same device

Edwin Peer (1):
      bnxt_en: return proper error codes in bnxt_show_temp

Eric Dumazet (3):
      ipv6: avoid lockdep issue in fib6_del()
      net: qrtr: check skb_put_padto() return value
      net: add __must_check to skb_put_padto()

Florian Fainelli (2):
      net: phy: Avoid NPD upon phy_detach() when driver is unbound
      net: phy: Do not warn in phy_stop() on PHY_DOWN

Ganji Aravind (1):
      cxgb4: Fix offset when clearing filter byte counters

Greg Kroah-Hartman (1):
      Linux 5.4.68

Hauke Mehrtens (4):
      net: lantiq: Wake TX queue again
      net: lantiq: use netif_tx_napi_add() for TX NAPI
      net: lantiq: Use napi_complete_done()
      net: lantiq: Disable IRQs only if NAPI gets scheduled

Henry Ptasinski (1):
      net: sctp: Fix IPv6 ancestor_size calc in sctp_copy_descendant

Ido Schimmel (1):
      net: Fix bridge enslavement failure

Jakub Kicinski (2):
      ibmvnic: add missing parenthesis in do_reset()
      nfp: use correct define to return NONE fec

Linus Walleij (1):
      net: dsa: rtl8366: Properly clear member config

Maor Dickman (1):
      net/mlx5e: Enable adding peer miss rules only if merged eswitch is supported

Maor Gottlieb (1):
      net/mlx5: Fix FTE cleanup

Mark Gray (1):
      geneve: add transport ports in route lookup for geneve

Mark Salyzyn (1):
      af_key: pfkey_dump needs parameter validation

Michael Chan (1):
      bnxt_en: Protect bnxt_set_eee() and bnxt_set_pauseparam() with mutex.

Mingming Cao (1):
      ibmvnic fix NULL tx_pools and rx_tools issue at do_reset

Muchun Song (1):
      kprobes: fix kill kprobe which has been marked as gone

Necip Fazil Yildiran (1):
      net: ipv6: fix kconfig dependency warning for IPV6_SEG6_HMAC

Peilin Ye (1):
      tipc: Fix memory leak in tipc_group_create_member()

Petr Machata (1):
      net: DCB: Validate DCB_ATTR_DCB_BUFFER argument

Raju Rangoju (1):
      cxgb4: fix memory leak during module unload

Ralph Campbell (1):
      mm/thp: fix __split_huge_pmd_locked() for migration PMD

Suravee Suthikulpanit (1):
      iommu/amd: Use cmpxchg_double() when updating 128-bit IRTE

Tariq Toukan (1):
      net/mlx5e: TLS, Do not expose FPGA TLS counter if not supported

Tetsuo Handa (1):
      tipc: fix shutdown() of connection oriented socket

Vasundhara Volam (2):
      bnxt_en: Avoid sending firmware messages when AER error is detected.
      bnxt_en: Fix NULL ptr dereference crash in bnxt_fw_reset_task()

Vinicius Costa Gomes (1):
      taprio: Fix allowing too small intervals

Vladimir Oltean (1):
      net: bridge: br_vlan_get_pvid_rcu() should dereference the VLAN group under RCU

Wei Wang (1):
      ip: fix tos reflection in ack and reset packets

Xin Long (1):
      tipc: use skb_unshare() instead in tipc_buf_append()

Xunlei Pang (1):
      mm: memcg: fix memcg reclaim soft lockup

Yunsheng Lin (1):
      net: sch_generic: aviod concurrent reset and enqueue op for lockless qdisc

BUG=b/169503032
TEST=tryjob, validation and K8s e2e
RELEASE_NOTE=Updated the Linux kernel to upstream/v5.4.68.

Signed-off-by: COS Kernel Merge Bot <cloud-image-merge-automation@prod.google.com>
Change-Id: I55ffedd714fef8cfc824efca51403d51b77b1276
