tree 8f03cbb6e5ebf35976499354f38c395f724bbac1
parent 6d6ee22a89b70926058b5c999f2be267be25b401
author Meena Shanmugam <meenashanmugam@google.com> 1634168286 +0000
committer Meena Shanmugam <meenashanmugam@google.com> 1634339933 +0000

merge-upstream/v5.10.73 from branch/tag: upstream/v5.10.73 into branch: cos-5.10

Conflicts:
 drivers/net/ethernet/google/gve/gve_main.c

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

Alexandre Ghiti (1):
      riscv: Flush current cpu icache before other cpus

Alexey Kardashevskiy (1):
      powerpc/iommu: Report the correct most efficient DMA mask for PCI devices

Andy Shevchenko (1):
      ptp_pch: Load module automatically if ID matches

Antonio Martorana (1):
      soc: qcom: socinfo: Fixed argument passed to platform_set_data()

Arnd Bergmann (1):
      ath5k: fix building with LEDS=m

Ben Hutchings (1):
      Partially revert "usb: Kconfig: using select for USB_COMMON dependency"

Ben Skeggs (1):
      drm/nouveau/kms/tu102-: delay enabling cursor until after assign_windows

Catherine Sullivan (1):
      gve: Correct available tx qpl check

Claudiu Beznea (3):
      mmc: sdhci-of-at91: wait for calibration done before proceed
      mmc: sdhci-of-at91: replace while loop with read_poll_timeout
      ARM: at91: pm: do not panic if ram controllers are not enabled

David Heidelberg (1):
      ARM: dts: qcom: apq8064: use compatible which contains chipid

Dmitry Baryshkov (1):
      arm64: dts: qcom: pm8150: use qcom,pm8998-pon binding

Eric Dumazet (8):
      net_sched: fix NULL deref in fifo_set_limit()
      net: bridge: use nla_total_size_64bit() in br_get_linkxstats_size()
      net: bridge: fix under estimation in br_get_linkxstats_size()
      net/sched: sch_taprio: properly cancel timer from taprio_destroy()
      netlink: annotate data races around nlk->bound
      rtnetlink: fix if_nlmsg_stats_size() under estimation
      gve: fix gve_get_stats()
      gve: report 64bit tx_bytes counter from gve_handle_report_stats()

Fabio Estevam (2):
      usb: chipidea: ci_hdrc_imx: Also search for 'phys' phandle
      ARM: dts: imx6qdl-pico: Fix Ethernet support

Geert Uytterhoeven (1):
      dt-bindings: drm/bridge: ti-sn65dsi86: Fix reg value

Greg Kroah-Hartman (1):
      Linux 5.10.73

J. Bruce Fields (1):
      SUNRPC: fix sign error causing rpcsec_gss drops

Jamie Iles (1):
      i2c: acpi: fix resource leak in reconfiguration device addition

Jan Beulich (1):
      xen/privcmd: fix error handling in mmap-resource processing

Jeremy Cline (1):
      drm/nouveau: avoid a use-after-free when BO init fails

Jernej Skrabec (1):
      drm/sun4i: dw-hdmi: Fix HDMI PHY clock setup

Jiri Benc (1):
      i40e: fix endless loop under rtnl

Johan Almbladh (1):
      bpf, arm: Fix register clobbering in div/mod implementation

Johan Hovold (2):
      USB: cdc-acm: fix racy tty buffer accesses
      USB: cdc-acm: fix break reporting

John Garry (1):
      perf jevents: Tidy error handling

Juergen Gross (1):
      xen/balloon: fix cancelled balloon action

Kewei Xu (1):
      i2c: mediatek: Add OFFSET_EXT_CONF setting back

Long Li (1):
      PCI: hv: Fix sleep while in non-sleep context when removing child devices from the bus

Lukas Bulwahn (3):
      x86/platform/olpc: Correct ifdef symbol to intended CONFIG_OLPC_XO15_SCI
      x86/Kconfig: Correct reference to MWINCHIP3D
      x86/entry: Correct reference to intended CONFIG_64_BIT

Mahesh Salgaonkar (1):
      pseries/eeh: Fix the kdump kernel crash during eeh_pseries_init

Marek Vasut (2):
      ARM: dts: imx: Add missing pinctrl-names for panel on M53Menlo
      ARM: dts: imx: Fix USB host power regulator polarity on M53Menlo

Marijn Suijten (1):
      ARM: dts: qcom: apq8064: Use 27MHz PXO clock as DSI PLL reference

Mark Brown (1):
      video: fbdev: gbefb: Only instantiate device when built for IP32

Max Filippov (1):
      xtensa: call irqchip_init only when CONFIG_USE_OF is selected

Michael Walle (1):
      arm64: dts: ls1028a: add missing CAN nodes

Michal Vokáč (1):
      ARM: dts: imx6dl-yapp4: Fix lp5562 LED driver probe

Mike Manning (1):
      net: prefer socket bound to interface when not in VRF

Miklos Szeredi (1):
      ovl: fix IOCB_DIRECT if underlying fs doesn't support direct IO

Moshe Shemesh (1):
      net/mlx5: E-Switch, Fix double allocation of acl flow counter

Nathan Chancellor (1):
      bus: ti-sysc: Add break in switch statement in sysc_init_soc()

Naveen N. Rao (1):
      powerpc/bpf: Fix BPF_SUB when imm == 0x80000000

Neil Armstrong (1):
      mmc: meson-gx: do not use memcpy_to/fromio for dram-access-quirk

Nicholas Piggin (1):
      powerpc/64s: fix program check interrupt emergency stack path

Oleksij Rempel (1):
      ARM: imx6: disable the GIC CPU interface before calling stby-poweroff sequence

Pali Rohár (1):
      powerpc/fsl/dts: Fix phy-connection-type for fm1mac3

Palmer Dabbelt (1):
      RISC-V: Include clone3() on rv32

Patrick Ho (1):
      nfsd: fix error handling of register_pernet_subsys() in init_nfsd()

Pavel Skripkin (1):
      phy: mdio: fix memory leak

Raed Salem (1):
      net/mlx5e: IPSEC RX, enable checksum complete

Randy Dunlap (1):
      xtensa: use CONFIG_USE_OF instead of CONFIG_OF

Roger Quadros (1):
      ARM: dts: omap3430-sdp: Fix NAND device node

Sean Anderson (1):
      net: sfp: Fix typo in state machine debug string

Shawn Guo (1):
      soc: qcom: mdt_loader: Drop PT_LOAD check on hash segment

Sylwester Dziedziuch (1):
      i40e: Fix freeing of uninitialized misc IRQ vector

Tao Liu (1):
      gve: Avoid freeing NULL pointer

Tatsuhiko Yasumatsu (1):
      bpf: Fix integer overflow in prealloc_elems_and_freelist()

Thomas Gleixner (1):
      x86/hpet: Use another crystalball to evaluate HPET usability

Tiezhu Yang (1):
      bpf, s390: Fix potential memory leak about jit_data

Tom Lendacky (1):
      x86/sev: Return an error on a returned non-zero SW_EXITINFO1[31:0]

Tong Tiangen (1):
      riscv/vdso: make arch_setup_additional_pages wait for mmap_sem for write killable

Tony Lindgren (2):
      soc: ti: omap-prm: Fix external abort for am335x pruss
      bus: ti-sysc: Use CLKDM_NOAUTO for dra7 dcan1 for errata i893

Trond Myklebust (1):
      nfsd4: Handle the NFSv4 READDIR 'dircount' hint being zero

Vegard Nossum (1):
      x86/entry: Clear X86_FEATURE_SMAP when CONFIG_X86_SMAP=n

Vladimir Zapolskiy (1):
      iwlwifi: pcie: add configuration of a Wi-Fi adapter on Dell XPS 15

Xu Yang (1):
      usb: typec: tcpm: handle SRC_STARTUP state if cc changes

Yang Yingliang (2):
      drm/nouveau/kms/nv50-: fix file release memory leak
      drm/nouveau/debugfs: fix file release memory leak

Zheng Liang (1):
      ovl: fix missing negative dentry check in ovl_rename()

BUG=b/202923642
TEST=tryjob, validation and K8s e2e
RELEASE_NOTE=Updated the Linux kernel to v5.10.73.

Signed-off-by: Meena Shanmugam <meenashanmugam@google.com>
Change-Id: I14811e2ae6e516c47b65218ad3f160767ad23150
(cherry picked from commit 6032fe514e5488ca2fac43277f5021ebb8f64659)
Reviewed-on: https://cos-review.googlesource.com/c/third_party/kernel/+/24010
Main-Branch-Verified: Cusky Presubmit Bot <presubmit@cos-infra-prod.iam.gserviceaccount.com>
Reviewed-by: Roy Yang <royyang@google.com>
