From f5181acc01b32feb0821b9707d41e4b17447ca83 Mon Sep 17 00:00:00 2001 From: jzinferno Date: Sat, 3 Dec 2022 10:29:12 +0000 Subject: [PATCH 01/74] ANYKERNEL: Import [PATCH: 1/2] --- init/Makefile | 13 +- .../META-INF/com/google/android/update-binary | 112 ++++++++++++++++++ .../com/google/android/updater-script | 1 + scripts/anykernel/bin/magiskboot | Bin 0 -> 631848 bytes scripts/anykernel/files/build_date | 0 scripts/anykernel/files/device | 0 scripts/mkcompile_h | 4 + 7 files changed, 129 insertions(+), 1 deletion(-) create mode 100755 scripts/anykernel/META-INF/com/google/android/update-binary create mode 100644 scripts/anykernel/META-INF/com/google/android/updater-script create mode 100755 scripts/anykernel/bin/magiskboot create mode 100644 scripts/anykernel/files/build_date create mode 100644 scripts/anykernel/files/device diff --git a/init/Makefile b/init/Makefile index e74dc8a4bce6..f58ce022aad1 100644 --- a/init/Makefile +++ b/init/Makefile @@ -30,8 +30,19 @@ $(obj)/version.o: include/generated/compile.h chk_compile.h = : quiet_chk_compile.h = echo ' CHK $@' silent_chk_compile.h = : -include/generated/compile.h: FORCE +include/generated/compile.h: anykernel FORCE @$($(quiet)chk_compile.h) $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkcompile_h $@ \ "$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" \ "$(CC) $(KBUILD_CFLAGS)" "$(LD)" + +boot = $(objtree)/arch/arm64/boot +anykernel: + @mkdir -p $(boot) + @rm -rf $(boot)/bin $(boot)/files $(boot)/META-INF + @cp -r $(srctree)/scripts/anykernel/* $(boot) +ifeq ($(CONFIG_PRODUCT_JD2019),y) + @echo jd2019 > $(boot)/files/device +else + @echo kunlun2 > $(boot)/files/device +endif diff --git a/scripts/anykernel/META-INF/com/google/android/update-binary b/scripts/anykernel/META-INF/com/google/android/update-binary new file mode 100755 index 000000000000..1edb6c0a8845 --- /dev/null +++ b/scripts/anykernel/META-INF/com/google/android/update-binary @@ -0,0 +1,112 @@ +#!/sbin/sh + +OUTFD=/proc/self/fd/$2; +JHOME=/tmp/jzhome; +BLOCK=/dev/block/bootdevice/by-name; + +ui_print() { + echo -e "ui_print $1 + ui_print" >> $OUTFD; +} + +mount -o remount,rw /; +setenforce 0; + +rm -rf $JHOME; +mkdir -p $JHOME; +unzip "$3" -d $JHOME; +cd $JHOME; + +device="$(getprop ro.product.device)"; +DEVICE="$(cat $JHOME/files/device)"; + +if [ "$DEVICE" = "jd2019" ]; then + if [ ! "$device" = "jd2019" ]; then + exit 1; + fi; +elif [ "$DEVICE" = "kunlun2" ]; then + if ! { [ "$device" = "kunlun2" ] || [ "$device" = "kunlun2_row" ]; } then + exit 1; + fi; +else + exit 1; +fi; + +s='\\''\\'; +ui_print "=================================================="; +ui_print " __ ___ "; +ui_print " /\ \ _ /\_ \ "; +ui_print " \ \ \/ \ ___ _ __ ___ ___\//\ \ "; +ui_print " \ \ / / __ \/\ __\/ _ \ / __ $s \ \ "; +ui_print " \ \ \— _/\ __/\ \ \/ /\ \/\ \/\ __/ \_\ \_ "; +ui_print " \ \_\-\_\ \____$s \_\ \ \_\ \_\ \____\/\____\ "; +ui_print " \/_/\/_/\/____/ \/_/ \/_/\/_/\/____/\/____/ "; +ui_print " "; +ui_print " by jzinferno "; +ui_print "=================================================="; +ui_print " Build date : $(cat $JHOME/files/build_date)"; +if [ "$device" = "jd2019" ]; then + ui_print " Device : Lenovo Z5s (jd2019)"; +elif [ "$device" = "kunlun2" ]; then + ui_print " Device : Lenovo Z6 Lite (kunlun2)"; +elif [ "$device" = "kunlun2_row" ]; then + ui_print " Device : Lenovo K10 Note (kunlun2_row)"; +fi; +ui_print "=================================================="; + +for i in Image Image-dtb Image.gz Image.gz-dtb Image.lz4 Image.lz4-dtb; do + if [ -f $i ]; then + kernel=$i; + break; + fi; +done; + +if [ ! $kernel ]; then + exit 1; +fi; + +BOOTIMG="$(realpath $BLOCK/boot)"; +DTBOIMG="$(realpath $BLOCK/dtbo)"; + +ui_print " - Boot image: $BOOTIMG"; +dd if=$BOOTIMG of=$JHOME/old.img; + +ui_print " - Unpacking boot image"; +$JHOME/bin/magiskboot unpack $JHOME/old.img; +if ! [ $? -eq 0 ]; then + exit 1; +fi; + +ui_print " - Splitting $kernel"; +rm -rf kernel kernel_dtb; +$JHOME/bin/magiskboot split $kernel; +if ! [ $? -eq 0 ]; then + exit 1; +fi; + +if [ -f $JHOME/ramdisk.cpio ]; then + ui_print " - Patching kernel for Magisk"; + $JHOME/bin/magiskboot hexpatch kernel 736B69705F696E697472616D667300 77616E745F696E697472616D667300; +fi; + +ui_print " - Repacking boot image"; +$JHOME/bin/magiskboot repack $JHOME/old.img $JHOME/boot.img; +if ! [ $? -eq 0 ]; then + exit 1; +fi; + +if [ -f $JHOME/boot.img ]; then + ui_print " - Flashing new boot image"; + dd if=$JHOME/boot.img of=$BOOTIMG; +fi; + +if [ -f $JHOME/dtbo.img ]; then + ui_print " - Flashing new dtbo image"; + dd if=$JHOME/dtbo.img of=$DTBOIMG; +fi; + +ui_print " - Cleanup"; +rm -rf $JHOME; + +ui_print " - Done"; +exit 0; diff --git a/scripts/anykernel/META-INF/com/google/android/updater-script b/scripts/anykernel/META-INF/com/google/android/updater-script new file mode 100644 index 000000000000..03f218b1ab30 --- /dev/null +++ b/scripts/anykernel/META-INF/com/google/android/updater-script @@ -0,0 +1 @@ +# jzinferno diff --git a/scripts/anykernel/bin/magiskboot b/scripts/anykernel/bin/magiskboot new file mode 100755 index 0000000000000000000000000000000000000000..aaba5a7709808a5d1abf0cd9cd8cf81ea7f13e7d GIT binary patch literal 631848 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%0AhHp7nr5WE3@ZFbhp_>=>0M^2}*9E0F44A) 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 z%0A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 literal 0 HcmV?d00001 diff --git a/scripts/anykernel/files/build_date b/scripts/anykernel/files/build_date new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/scripts/anykernel/files/device b/scripts/anykernel/files/device new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/scripts/mkcompile_h b/scripts/mkcompile_h index ec3416aaaba9..9660d8f01e67 100755 --- a/scripts/mkcompile_h +++ b/scripts/mkcompile_h @@ -56,6 +56,10 @@ UTS_VERSION="$(echo $UTS_VERSION $CONFIG_FLAGS $TIMESTAMP | cut -b -$UTS_LEN)" printf '#define LINUX_COMPILER "%s"\n' "$CC_VERSION, $LD_VERSION" ) > .tmpcompile +if [ -f arch/arm64/boot/files/build_date ]; then + echo $TIMESTAMP > arch/arm64/boot/files/build_date +fi + # Only replace the real compile.h if the new one is different, # in order to preserve the timestamp and avoid unnecessary # recompilations. From 6b58ff4d45a067182681863ee2f70949e34626ad Mon Sep 17 00:00:00 2001 From: Sultan Alsawaf Date: Sat, 26 Dec 2020 19:58:22 -0800 Subject: [PATCH 02/74] lto: Add Link Time Optimization support for GCC This requires a modern version of GCC and various other patches in order to work. LTO results in a smaller kernel binary with better performance. Based off of work from Andi Kleen . Signed-off-by: Sultan Alsawaf --- Makefile | 20 ++++++++++++++++++-- init/Kconfig | 3 +++ scripts/Makefile.lib | 2 +- scripts/link-vmlinux.sh | 4 ++-- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index eca2e9419ea8..f4ae3d8b6525 100644 --- a/Makefile +++ b/Makefile @@ -364,8 +364,8 @@ STRIP = llvm-strip else CC = $(CROSS_COMPILE)gcc LD = $(CROSS_COMPILE)ld -AR = $(CROSS_COMPILE)ar -NM = $(CROSS_COMPILE)nm +AR ?= $(CROSS_COMPILE)ar +NM ?= $(CROSS_COMPILE)nm OBJCOPY = $(CROSS_COMPILE)objcopy OBJDUMP = $(CROSS_COMPILE)objdump READELF = $(CROSS_COMPILE)readelf @@ -683,6 +683,22 @@ export LLVM_AR LLVM_DIS KBUILD_LDFLAGS += --plugin-opt=O3 endif +ifdef CONFIG_LTO_GCC +LTO_CFLAGS := -flto -flto=jobserver -fno-fat-lto-objects \ + -fuse-linker-plugin -fwhole-program +KBUILD_CFLAGS += $(LTO_CFLAGS) +LTO_LDFLAGS := $(LTO_CFLAGS) -Wno-lto-type-mismatch -Wno-psabi \ + -Wno-stringop-overflow -flinker-output=nolto-rel +LDFINAL := $(CONFIG_SHELL) $(srctree)/scripts/gcc-ld $(LTO_LDFLAGS) +AR := $(CROSS_COMPILE)gcc-ar +NM := $(CROSS_COMPILE)gcc-nm +DISABLE_LTO := -fno-lto +export DISABLE_LTO LDFINAL +else +LDFINAL := $(LD) +export LDFINAL +endif + # The arch Makefile can set ARCH_{CPP,A,C}FLAGS to override the default # values of the respective KBUILD_* variables ARCH_CPPFLAGS := diff --git a/init/Kconfig b/init/Kconfig index 371648f1769b..8f8f07843733 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -1554,6 +1554,9 @@ config CC_OPTIMIZE_FOR_SIZE endchoice +config LTO_GCC + bool "Enable Link Time Optimization for GCC" + config SYSCTL bool diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 8e1e0ab17c07..59b0a157fbe0 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -259,7 +259,7 @@ $(obj)/%: $(src)/%_shipped # --------------------------------------------------------------------------- quiet_cmd_ld = LD $@ -cmd_ld = $(LD) $(KBUILD_LDFLAGS) $(ldflags-y) $(LDFLAGS_$(@F)) \ +cmd_ld = $(LDFINAL) $(KBUILD_LDFLAGS) $(ldflags-y) $(LDFLAGS_$(@F)) \ $(filter-out FORCE,$^) -o $@ # Objcopy diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh index 67ece461fb45..7861c5c7452e 100644 --- a/scripts/link-vmlinux.sh +++ b/scripts/link-vmlinux.sh @@ -108,7 +108,7 @@ modpost_link() info LD vmlinux.o fi - ${LD} ${KBUILD_LDFLAGS} -r -o ${1} $(modversions) ${objects} + ${LDFINAL} ${KBUILD_LDFLAGS} -r -o ${1} $(modversions) ${objects} } # If CONFIG_LTO_CLANG is selected, we postpone running recordmcount until @@ -133,7 +133,7 @@ vmlinux_link() local objects if [ "${SRCARCH}" != "um" ]; then - local ld=${LD} + local ld=${LDFINAL} local ldflags="${KBUILD_LDFLAGS} ${LDFLAGS_vmlinux}" if [ -n "${LDFINAL_vmlinux}" ]; then From d5fb1b83656880c69e6cf758a2d6867177d4b86e Mon Sep 17 00:00:00 2001 From: Sultan Alsawaf Date: Tue, 12 May 2020 12:00:08 -0700 Subject: [PATCH 03/74] kbuild: Increase GCC automatic inline instruction limit to 1000 for LTO GCC 10 updated its interprocedural optimizer's logic to have it make more conservative inlining decisions, resulting in worse syscall and hackbench performance compared to GCC 9. Although the max-inline-insns- auto parameter's value was not altered, increasing it from the -O3 default of 30 to 1000 instructions yields improved performance with LTO, surpassing GCC 9. Do this only for LTO though because for non-LTO builds, this causes GCC to produce mountains of spurious -Wmaybe-used-uninitialized warnings. Signed-off-by: Sultan Alsawaf --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index f4ae3d8b6525..edaeffc9c96f 100644 --- a/Makefile +++ b/Makefile @@ -686,7 +686,7 @@ endif ifdef CONFIG_LTO_GCC LTO_CFLAGS := -flto -flto=jobserver -fno-fat-lto-objects \ -fuse-linker-plugin -fwhole-program -KBUILD_CFLAGS += $(LTO_CFLAGS) +KBUILD_CFLAGS += $(LTO_CFLAGS) --param=max-inline-insns-auto=1000 LTO_LDFLAGS := $(LTO_CFLAGS) -Wno-lto-type-mismatch -Wno-psabi \ -Wno-stringop-overflow -flinker-output=nolto-rel LDFINAL := $(CONFIG_SHELL) $(srctree)/scripts/gcc-ld $(LTO_LDFLAGS) From ea2103dcc9a3e437c5503089140d7f37bc431434 Mon Sep 17 00:00:00 2001 From: Vaisakh Murali Date: Sat, 26 Jun 2021 11:58:37 +0000 Subject: [PATCH 04/74] Makefile: Enable intraprocedural pointer analysis for LTO * GCC contains several intraprocedural optimisations and pointer analysis is one such optimisation. Enabling this flag performs intraprocedural pointer analysis, modification and reference analysis. This analyzes individual functions one by one, hence increasing the overall build time, but potentially producing a better binary, especially when built with LTO [1]. [1]: https://github.com/InBetweenNames/gentooLTO/blob/master/sys-config/ltoize/files/make.conf.lto.defines#L35 Signed-off-by: Vaisakh Murali Signed-off-by: Jebaitedneko --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index edaeffc9c96f..e8cc33a12229 100644 --- a/Makefile +++ b/Makefile @@ -684,7 +684,7 @@ KBUILD_LDFLAGS += --plugin-opt=O3 endif ifdef CONFIG_LTO_GCC -LTO_CFLAGS := -flto -flto=jobserver -fno-fat-lto-objects \ +LTO_CFLAGS := -flto -flto=jobserver -fipa-pta -fno-fat-lto-objects \ -fuse-linker-plugin -fwhole-program KBUILD_CFLAGS += $(LTO_CFLAGS) --param=max-inline-insns-auto=1000 LTO_LDFLAGS := $(LTO_CFLAGS) -Wno-lto-type-mismatch -Wno-psabi \ From 8ba3b66b2cea1c0df67c1ad68d5f648e48776f94 Mon Sep 17 00:00:00 2001 From: jzinferno Date: Sun, 4 Dec 2022 08:15:26 +0000 Subject: [PATCH 05/74] Revert "arm64: vdso: Cleanup Makefiles" This reverts commit b13b4f2a9d9a1ae6dc9e82b8c87364abfe47bcd9. --- arch/arm64/kernel/vdso/Makefile | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/arch/arm64/kernel/vdso/Makefile b/arch/arm64/kernel/vdso/Makefile index fec41e764d11..faf17aaf4fdd 100644 --- a/arch/arm64/kernel/vdso/Makefile +++ b/arch/arm64/kernel/vdso/Makefile @@ -5,11 +5,14 @@ # Heavily based on the vDSO Makefiles for other archs. # -obj-vdso := note.o sigreturn.o vgettimeofday.o +obj-vdso-s := note.o sigreturn.o +obj-vdso-c := vgettimeofday.o # Build rules -targets := $(obj-vdso) vdso.so vdso.so.dbg -obj-vdso := $(addprefix $(obj)/, $(obj-vdso)) +targets := $(obj-vdso-s) $(obj-vdso-c) vdso.so vdso.so.dbg +obj-vdso-s := $(addprefix $(obj)/, $(obj-vdso-s)) +obj-vdso-c := $(addprefix $(obj)/, $(obj-vdso-c)) +obj-vdso := $(obj-vdso-c) $(obj-vdso-s) ldflags-y := -shared -soname=linux-vdso.so.1 --hash-style=sysv \ -Bsymbolic --build-id=sha1 -n -T @@ -21,7 +24,10 @@ ccflags-y += $(DISABLE_LTO) $(DISABLE_SCS) # Force -O2 to avoid libgcc dependencies CFLAGS_REMOVE_vgettimeofday.o = -pg -Os -CFLAGS_vgettimeofday.o = -O2 -fPIC -mcmodel=tiny +CFLAGS_vgettimeofday.o = -O2 -fPIC +ifneq ($(cc-name),clang) +CFLAGS_vgettimeofday.o += -mcmodel=tiny +endif # Disable gcov profiling for VDSO code GCOV_PROFILE := n @@ -53,6 +59,19 @@ quiet_cmd_vdsosym = VDSOSYM $@ include/generated/vdso-offsets.h: $(obj)/vdso.so.dbg FORCE $(call if_changed,vdsosym) +# Assembly rules for the .S files +$(obj-vdso-s): %.o: %.S FORCE + $(call if_changed_dep,vdsoas) + +$(obj-vdso-c): %.o: %.c FORCE + $(call if_changed_dep,vdsocc) + +# Actual build commands +quiet_cmd_vdsocc = VDSOC $@ + cmd_vdsocc = ${CC} $(c_flags) -c -o $@ $< +quiet_cmd_vdsoas = VDSOA $@ + cmd_vdsoas = $(CC) $(a_flags) -c -o $@ $< + # Install commands for the unstripped file quiet_cmd_vdso_install = INSTALL $@ cmd_vdso_install = cp $(obj)/$@.dbg $(MODLIB)/vdso/$@ From 9c15d45a61f293cf39ab0bca5db7925f434026e3 Mon Sep 17 00:00:00 2001 From: Sultan Alsawaf Date: Fri, 9 Jul 2021 22:24:35 -0700 Subject: [PATCH 06/74] arm64: Only disable LTO for vDSO when Clang is used GCC LTO works fine on the vDSO. Signed-off-by: Sultan Alsawaf --- arch/arm64/kernel/vdso/Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kernel/vdso/Makefile b/arch/arm64/kernel/vdso/Makefile index faf17aaf4fdd..a9f51af8d12e 100644 --- a/arch/arm64/kernel/vdso/Makefile +++ b/arch/arm64/kernel/vdso/Makefile @@ -20,13 +20,15 @@ ldflags-y := -shared -soname=linux-vdso.so.1 --hash-style=sysv \ ccflags-y += $(call cc-option, -fno-whole-program) ccflags-y := -fno-common -fno-builtin -fno-stack-protector ccflags-y += -DDISABLE_BRANCH_PROFILING -ffixed-x18 -ccflags-y += $(DISABLE_LTO) $(DISABLE_SCS) +ccflags-y += $(DISABLE_SCS) # Force -O2 to avoid libgcc dependencies CFLAGS_REMOVE_vgettimeofday.o = -pg -Os CFLAGS_vgettimeofday.o = -O2 -fPIC ifneq ($(cc-name),clang) CFLAGS_vgettimeofday.o += -mcmodel=tiny +else +ccflags-y += $(DISABLE_LTO) endif # Disable gcov profiling for VDSO code From cf678108467d2a1333b3c683f67c3fd21b74a3bd Mon Sep 17 00:00:00 2001 From: jzinferno Date: Sun, 4 Dec 2022 12:20:31 +0000 Subject: [PATCH 07/74] Makefile: Fix GCC_LTO warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit lto1: warning: switch ‘-mcpu=cortex-a75.cortex-a55’ conflicts with ‘-march=armv8-a’ switch --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index e8cc33a12229..2292bf722cfd 100644 --- a/Makefile +++ b/Makefile @@ -796,8 +796,10 @@ endif ifeq ($(cc-name),clang) KBUILD_CFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 else +ifndef CONFIG_LTO_GCC KBUILD_CFLAGS += -mcpu=cortex-a75.cortex-a55 -mtune=cortex-a75.cortex-a55 endif +endif ifdef CONFIG_CC_WERROR KBUILD_CFLAGS += -Werror From 995e4b2ed0c12136e2cd6c3158dcafb12e87656a Mon Sep 17 00:00:00 2001 From: Jprimero15 Date: Sun, 4 Dec 2022 14:48:54 +0000 Subject: [PATCH 08/74] Makefile: Ignore warning from aosp clang 16 Signed-off-by: Jprimero15 --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 2292bf722cfd..283668216ba8 100644 --- a/Makefile +++ b/Makefile @@ -418,7 +418,7 @@ KBUILD_AFLAGS := -D__ASSEMBLY__ KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ -fno-strict-aliasing -fno-common -fshort-wchar \ -Werror-implicit-function-declaration \ - -Wno-format-security \ + -Wno-format-security -Wno-void-ptr-dereference \ -std=gnu11 KBUILD_CPPFLAGS := -D__KERNEL__ KBUILD_AFLAGS_KERNEL := From fa6d38a799f1ee6b5b5f31c74904e80333da1099 Mon Sep 17 00:00:00 2001 From: Jprimero15 Date: Fri, 2 Dec 2022 13:31:24 +0000 Subject: [PATCH 09/74] scripts: update mkdtboimg.py * to use python3 Signed-off-by: Jprimero15 --- scripts/Makefile.lib | 2 +- scripts/dtc/libfdt/mkdtboimg.py | 119 ++++++++++++++++++++++---------- 2 files changed, 85 insertions(+), 36 deletions(-) diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 59b0a157fbe0..7532fe2ad286 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -340,7 +340,7 @@ dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp) # mkdtimg #---------------------------------------------------------------------------- quiet_cmd_mkdtimg = DTBOIMG $@ -cmd_mkdtimg = python2 $(srctree)/scripts/dtc/libfdt/mkdtboimg.py create $@ --page_size=4096 $(filter-out FORCE,$^) +cmd_mkdtimg = $(PYTHON) $(srctree)/scripts/dtc/libfdt/mkdtboimg.py create $@ --page_size=4096 $(filter-out FORCE,$^) # cat # --------------------------------------------------------------------------- diff --git a/scripts/dtc/libfdt/mkdtboimg.py b/scripts/dtc/libfdt/mkdtboimg.py index 03f0fd1b727b..bc33e1ff7fc0 100644 --- a/scripts/dtc/libfdt/mkdtboimg.py +++ b/scripts/dtc/libfdt/mkdtboimg.py @@ -18,12 +18,13 @@ """Tool for packing multiple DTB/DTBO files into a single image""" import argparse +import fnmatch import os +import struct +import zlib from array import array from collections import namedtuple -import struct from sys import stdout -import zlib class CompressionFormat(object): """Enum representing DT compression format for a DT entry. @@ -36,14 +37,18 @@ class DtEntry(object): """Provides individual DT image file arguments to be added to a DTBO. Attributes: - _REQUIRED_KEYS: 'keys' needed to be present in the dictionary passed to instantiate - an object of this class. - _COMPRESSION_FORMAT_MASK: Mask to retrieve compression info for DT entry from flags field + REQUIRED_KEYS_V0: 'keys' needed to be present in the dictionary passed to instantiate + an object of this class when a DTBO header of version 0 is used. + REQUIRED_KEYS_V1: 'keys' needed to be present in the dictionary passed to instantiate + an object of this class when a DTBO header of version 1 is used. + COMPRESSION_FORMAT_MASK: Mask to retrieve compression info for DT entry from flags field when a DTBO header of version 1 is used. """ - _COMPRESSION_FORMAT_MASK = 0x0f - REQUIRED_KEYS = ('dt_file', 'dt_size', 'dt_offset', 'id', 'rev', 'flags', - 'custom0', 'custom1', 'custom2') + COMPRESSION_FORMAT_MASK = 0x0f + REQUIRED_KEYS_V0 = ('dt_file', 'dt_size', 'dt_offset', 'id', 'rev', + 'custom0', 'custom1', 'custom2', 'custom3') + REQUIRED_KEYS_V1 = ('dt_file', 'dt_size', 'dt_offset', 'id', 'rev', + 'flags', 'custom0', 'custom1', 'custom2') @staticmethod def __get_number_or_prop(arg): @@ -82,7 +87,14 @@ class members with. Expected keys in dictionary are from the tuple (_REQUIRED_KEYS) """ - missing_keys = set(self.REQUIRED_KEYS) - set(kwargs) + self.__version = kwargs['version'] + required_keys = None + if self.__version == 0: + required_keys = self.REQUIRED_KEYS_V0 + elif self.__version == 1: + required_keys = self.REQUIRED_KEYS_V1 + + missing_keys = set(required_keys) - set(kwargs) if missing_keys: raise ValueError('Missing keys in DtEntry constructor: %r' % sorted(missing_keys)) @@ -92,10 +104,13 @@ class members with. Expected keys in dictionary are from self.__dt_size = kwargs['dt_size'] self.__id = self.__get_number_or_prop(kwargs['id']) self.__rev = self.__get_number_or_prop(kwargs['rev']) - self.__flags = self.__get_number_or_prop(kwargs['flags']) + if self.__version == 1: + self.__flags = self.__get_number_or_prop(kwargs['flags']) self.__custom0 = self.__get_number_or_prop(kwargs['custom0']) self.__custom1 = self.__get_number_or_prop(kwargs['custom1']) self.__custom2 = self.__get_number_or_prop(kwargs['custom2']) + if self.__version == 0: + self.__custom3 = self.__get_number_or_prop(kwargs['custom3']) def __str__(self): sb = [] @@ -107,26 +122,30 @@ def __str__(self): value=self.__id)) sb.append('{key:>20} = {value:08x}'.format(key='rev', value=self.__rev)) + if self.__version == 1: + sb.append('{key:>20} = {value:08x}'.format(key='flags', + value=self.__flags)) sb.append('{key:>20} = {value:08x}'.format(key='custom[0]', - value=self.__flags)) - sb.append('{key:>20} = {value:08x}'.format(key='custom[1]', value=self.__custom0)) - sb.append('{key:>20} = {value:08x}'.format(key='custom[2]', + sb.append('{key:>20} = {value:08x}'.format(key='custom[1]', value=self.__custom1)) - sb.append('{key:>20} = {value:08x}'.format(key='custom[3]', + sb.append('{key:>20} = {value:08x}'.format(key='custom[2]', value=self.__custom2)) + if self.__version == 0: + sb.append('{key:>20} = {value:08x}'.format(key='custom[3]', + value=self.__custom3)) return '\n'.join(sb) - def compression_info(self, version): + def compression_info(self): """CompressionFormat: compression format for DT image file. Args: version: Version of DTBO header, compression is only supported from version 1. """ - if version is 0: + if self.__version == 0: return CompressionFormat.NO_COMPRESSION - return self.flags & self._COMPRESSION_FORMAT_MASK + return self.flags & self.COMPRESSION_FORMAT_MASK @property def dt_file(self): @@ -181,6 +200,10 @@ def custom2(self): """int: DT entry custom2 for this DT image.""" return self.__custom2 + @property + def custom3(self): + """int: DT entry custom3 for this DT image.""" + return self.__custom3 class Dtbo(object): """ @@ -232,10 +255,17 @@ def _update_dt_entry_header(self, dt_entry, metadata_offset): dtbo_offset: Offset where the DT image file for this dt_entry can be found in the resulting DTBO image. """ - struct.pack_into('>8I', self.__metadata, metadata_offset, dt_entry.size, - dt_entry.dt_offset, dt_entry.image_id, dt_entry.rev, - dt_entry.flags, dt_entry.custom0, dt_entry.custom1, - dt_entry.custom2) + if self.version == 0: + struct.pack_into('>8I', self.__metadata, metadata_offset, dt_entry.size, + dt_entry.dt_offset, dt_entry.image_id, dt_entry.rev, + dt_entry.custom0, dt_entry.custom1, dt_entry.custom2, + dt_entry.custom3) + elif self.version == 1: + struct.pack_into('>8I', self.__metadata, metadata_offset, dt_entry.size, + dt_entry.dt_offset, dt_entry.image_id, dt_entry.rev, + dt_entry.flags, dt_entry.custom0, dt_entry.custom1, + dt_entry.custom2) + def _update_metadata(self): """Updates the DTBO metadata. @@ -244,7 +274,7 @@ def _update_metadata(self): Tree table entries and update the DTBO header. """ - self.__metadata = array('c', ' ' * self.__metadata_size) + self.__metadata = array('b', b' ' * self.__metadata_size) metadata_offset = self.header_size for dt_entry in self.__dt_entries: self._update_dt_entry_header(dt_entry, metadata_offset) @@ -290,15 +320,21 @@ def _read_dt_entries_from_metadata(self): if self.__dt_entries: raise ValueError('DTBO DT entries can be added only once') - offset = self.dt_entries_offset / 4 + offset = self.dt_entries_offset // 4 params = {} + params['version'] = self.version params['dt_file'] = None for i in range(0, self.dt_entry_count): dt_table_entry = self.__metadata[offset:offset + self._DT_ENTRY_HEADER_INTS] params['dt_size'] = dt_table_entry[0] params['dt_offset'] = dt_table_entry[1] for j in range(2, self._DT_ENTRY_HEADER_INTS): - params[DtEntry.REQUIRED_KEYS[j + 1]] = str(dt_table_entry[j]) + required_keys = None + if self.version == 0: + required_keys = DtEntry.REQUIRED_KEYS_V0 + elif self.version == 1: + required_keys = DtEntry.REQUIRED_KEYS_V1 + params[required_keys[j + 1]] = str(dt_table_entry[j]) dt_entry = DtEntry(**params) self.__dt_entries.append(dt_entry) offset += self._DT_ENTRY_HEADER_INTS @@ -465,14 +501,13 @@ def add_dt_entries(self, dt_entries): dt_offset = (self.header_size + dt_entry_count * self.dt_entry_size) - dt_entry_buf = "" + dt_entry_buf = b"" for dt_entry in dt_entries: if not isinstance(dt_entry, DtEntry): raise ValueError('Adding invalid DT entry object to DTBO') entry = self._find_dt_entry_with_same_file(dt_entry) - dt_entry_compression_info = dt_entry.compression_info(self.version) - if entry and (entry.compression_info(self.version) - == dt_entry_compression_info): + dt_entry_compression_info = dt_entry.compression_info() + if entry and (entry.compression_info() == dt_entry_compression_info): dt_entry.dt_offset = entry.dt_offset dt_entry.size = entry.size else: @@ -510,7 +545,7 @@ def extract_dt_file(self, idx, fout, decompress): offset = self.dt_entries[idx].dt_offset self.__file.seek(offset, 0) fout.seek(0) - compression_format = self.dt_entries[idx].compression_info(self.version) + compression_format = self.dt_entries[idx].compression_info() if decompress and compression_format: if (compression_format == CompressionFormat.ZLIB_COMPRESSION or compression_format == CompressionFormat.GZIP_COMPRESSION): @@ -580,6 +615,9 @@ def parse_dt_entry(global_args, arglist): parser.add_argument('--custom2', type=str, dest='custom2', action='store', default=global_args.global_custom2) + parser.add_argument('--custom3', type=str, dest='custom3', + action='store', + default=global_args.global_custom3) return parser.parse_args(arglist) @@ -612,7 +650,7 @@ def parse_dt_entries(global_args, arg_list): raise ValueError('Input DT images must be provided') total_images = len(img_file_idx) - for idx in xrange(total_images): + for idx in range(total_images): start_idx = img_file_idx[idx] if idx == total_images - 1: argv = arg_list[start_idx:] @@ -621,6 +659,7 @@ def parse_dt_entries(global_args, arg_list): argv = arg_list[start_idx:end_idx] args = parse_dt_entry(global_args, argv) params = vars(args) + params['version'] = global_args.version params['dt_offset'] = 0 params['dt_size'] = os.fstat(params['dt_file'].fileno()).st_size dt_entries.append(DtEntry(**params)) @@ -753,6 +792,8 @@ def parse_create_args(arg_list): action='store', default='0') parser.add_argument('--custom2', type=str, dest='global_custom2', action='store', default='0') + parser.add_argument('--custom3', type=str, dest='global_custom3', + action='store', default='0') args = parser.parse_args(argv) return args, remainder @@ -769,7 +810,7 @@ def parse_dump_cmd_args(arglist): parser = argparse.ArgumentParser(prog='dump') parser.add_argument('--output', '-o', nargs='?', - type=argparse.FileType('wb'), + type=argparse.FileType('w'), dest='outfile', default=stdout) parser.add_argument('--dtb', '-b', nargs='?', type=str, @@ -789,7 +830,7 @@ def parse_config_create_cmd_args(arglist): """ parser = argparse.ArgumentParser(prog='cfg_create') parser.add_argument('conf_file', nargs='?', - type=argparse.FileType('rb'), + type=argparse.FileType('r'), default=None) cwd = os.getcwd() parser.add_argument('--dtb-dir', '-d', nargs='?', type=str, @@ -845,15 +886,22 @@ def create_dtbo_image_from_config(fout, argv): if not args.conf_file: raise ValueError('Configuration file must be provided') - _DT_KEYS = ('id', 'rev', 'flags', 'custom0', 'custom1', 'custom2') + _DT_KEYS = ('id', 'rev', 'flags', 'custom0', 'custom1', 'custom2', 'custom3') _GLOBAL_KEY_TYPES = {'dt_type': str, 'page_size': int, 'version': int} global_args, dt_args = parse_config_file(args.conf_file, _DT_KEYS, _GLOBAL_KEY_TYPES) + version = global_args['version'] + params = {} + params['version'] = version dt_entries = [] for dt_arg in dt_args: - filepath = args.dtbdir + os.sep + dt_arg['filename'] + filepath = dt_arg['filename'] + if not os.path.isabs(filepath): + for root, dirnames, filenames in os.walk(args.dtbdir): + for filename in fnmatch.filter(filenames, os.path.basename(filepath)): + filepath = os.path.join(root, filename) params['dt_file'] = open(filepath, 'rb') params['dt_offset'] = 0 params['dt_size'] = os.fstat(params['dt_file'].fileno()).st_size @@ -865,7 +913,7 @@ def create_dtbo_image_from_config(fout, argv): dt_entries.append(DtEntry(**params)) # Create and write DTBO file - dtbo = Dtbo(fout, global_args['dt_type'], global_args['page_size'], global_args['version']) + dtbo = Dtbo(fout, global_args['dt_type'], global_args['page_size'], version) dt_entry_buf = dtbo.add_dt_entries(dt_entries) dtbo.commit(dt_entry_buf) fout.close() @@ -916,6 +964,7 @@ def print_create_usage(progname): sb.append(' --custom0=') sb.append(' --custom1=') sb.append(' --custom2=\n') + sb.append(' --custom3=\n') sb.append(' The value could be a number or a DT node path.') sb.append(' could be a 32-bits digit or hex value, ex. 68000, 0x6800.') From 1273604f3f739447e7bbd1730d814a541625faba Mon Sep 17 00:00:00 2001 From: Jonas Jelonek Date: Fri, 14 Oct 2022 16:54:39 +0200 Subject: [PATCH 10/74] wifi: mac80211_hwsim: fix debugfs attribute ps with rc table support [ Upstream commit 69188df5f6e4cecc6b76b958979ba363cd5240e8 ] Fixes a warning that occurs when rc table support is enabled (IEEE80211_HW_SUPPORTS_RC_TABLE) in mac80211_hwsim and the PS mode is changed via the exported debugfs attribute. When the PS mode is changed, a packet is broadcasted via hwsim_send_nullfunc by creating and transmitting a plain skb with only header initialized. The ieee80211 rate array in the control buffer is zero-initialized. When ratetbl support is enabled, ieee80211_get_tx_rates is called for the skb with sta parameter set to NULL and thus no ratetbl can be used. The final rate array then looks like [-1,0; 0,0; 0,0; 0,0] which causes the warning in ieee80211_get_tx_rate. The issue is fixed by setting the count of the first rate with idx '0' to 1 and hence ieee80211_get_tx_rates won't overwrite it with idx '-1'. Signed-off-by: Jonas Jelonek Signed-off-by: Johannes Berg Signed-off-by: Sasha Levin --- drivers/net/wireless/mac80211_hwsim.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c index 70251c703c9e..53e0fec274a4 100644 --- a/drivers/net/wireless/mac80211_hwsim.c +++ b/drivers/net/wireless/mac80211_hwsim.c @@ -671,6 +671,7 @@ static void hwsim_send_nullfunc(struct mac80211_hwsim_data *data, u8 *mac, struct hwsim_vif_priv *vp = (void *)vif->drv_priv; struct sk_buff *skb; struct ieee80211_hdr *hdr; + struct ieee80211_tx_info *cb; if (!vp->assoc) return; @@ -691,6 +692,10 @@ static void hwsim_send_nullfunc(struct mac80211_hwsim_data *data, u8 *mac, memcpy(hdr->addr2, mac, ETH_ALEN); memcpy(hdr->addr3, vp->bssid, ETH_ALEN); + cb = IEEE80211_SKB_CB(skb); + cb->control.rates[0].count = 1; + cb->control.rates[1].idx = -1; + rcu_read_lock(); mac80211_hwsim_tx_frame(data->hw, skb, rcu_dereference(vif->chanctx_conf)->def.chan); From 725cf00e15495f31d4b477f92dab3772a4ea9bb3 Mon Sep 17 00:00:00 2001 From: Gaosheng Cui Date: Mon, 31 Oct 2022 10:10:21 +0800 Subject: [PATCH 11/74] audit: fix undefined behavior in bit shift for AUDIT_BIT [ Upstream commit 986d93f55bdeab1cac858d1e47b41fac10b2d7f6 ] Shifting signed 32-bit value by 31 bits is undefined, so changing significant bit to unsigned. The UBSAN warning calltrace like below: UBSAN: shift-out-of-bounds in kernel/auditfilter.c:179:23 left shift of 1 by 31 places cannot be represented in type 'int' Call Trace: dump_stack_lvl+0x7d/0xa5 dump_stack+0x15/0x1b ubsan_epilogue+0xe/0x4e __ubsan_handle_shift_out_of_bounds+0x1e7/0x20c audit_register_class+0x9d/0x137 audit_classes_init+0x4d/0xb8 do_one_initcall+0x76/0x430 kernel_init_freeable+0x3b3/0x422 kernel_init+0x24/0x1e0 ret_from_fork+0x1f/0x30 Signed-off-by: Gaosheng Cui [PM: remove bad 'Fixes' tag as issue predates git, added in v2.6.6-rc1] Signed-off-by: Paul Moore Signed-off-by: Sasha Levin --- include/uapi/linux/audit.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/uapi/linux/audit.h b/include/uapi/linux/audit.h index 208df7b44e90..d7ac6b9be18e 100644 --- a/include/uapi/linux/audit.h +++ b/include/uapi/linux/audit.h @@ -170,7 +170,7 @@ #define AUDIT_MAX_KEY_LEN 256 #define AUDIT_BITMASK_SIZE 64 #define AUDIT_WORD(nr) ((__u32)((nr)/32)) -#define AUDIT_BIT(nr) (1 << ((nr) - AUDIT_WORD(nr)*32)) +#define AUDIT_BIT(nr) (1U << ((nr) - AUDIT_WORD(nr)*32)) #define AUDIT_SYSCALL_CLASSES 16 #define AUDIT_CLASS_DIR_WRITE 0 From c7749bafbe16f49d68ff93237bdc81209b5758c5 Mon Sep 17 00:00:00 2001 From: Nicolas Cavallari Date: Thu, 27 Oct 2022 16:01:33 +0200 Subject: [PATCH 12/74] wifi: mac80211: Fix ack frame idr leak when mesh has no route [ Upstream commit 39e7b5de9853bd92ddbfa4b14165babacd7da0ba ] When trying to transmit an data frame with tx_status to a destination that have no route in the mesh, then it is dropped without recrediting the ack_status_frames idr. Once it is exhausted, wpa_supplicant starts failing to do SAE with NL80211_CMD_FRAME and logs "nl80211: Frame command failed". Use ieee80211_free_txskb() instead of kfree_skb() to fix it. Signed-off-by: Nicolas Cavallari Link: https://lore.kernel.org/r/20221027140133.1504-1-nicolas.cavallari@green-communications.fr Signed-off-by: Johannes Berg Signed-off-by: Sasha Levin --- net/mac80211/mesh_pathtbl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/mac80211/mesh_pathtbl.c b/net/mac80211/mesh_pathtbl.c index 30a95a2ff196..78945dc9dcd7 100644 --- a/net/mac80211/mesh_pathtbl.c +++ b/net/mac80211/mesh_pathtbl.c @@ -794,7 +794,7 @@ int mesh_path_send_to_gates(struct mesh_path *mpath) void mesh_path_discard_frame(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb) { - kfree_skb(skb); + ieee80211_free_txskb(&sdata->local->hw, skb); sdata->u.mesh.mshstats.dropped_frames_no_route++; } From fcc61540945e8167a6edd3261fca7c3341ae74a4 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Fri, 28 Oct 2022 15:23:44 +0200 Subject: [PATCH 13/74] MIPS: pic32: treat port as signed integer [ Upstream commit 648060902aa302331b5d6e4f26d8ee0761d239ab ] get_port_from_cmdline() returns an int, yet is assigned to a char, which is wrong in its own right, but also, with char becoming unsigned, this poses problems, because -1 is used as an error value. Further complicating things, fw_init_early_console() is only ever called with a -1 argument. Fix this up by removing the unused argument from fw_init_early_console() and treating port as a proper signed integer. Cc: Thomas Bogendoerfer Signed-off-by: Jason A. Donenfeld Signed-off-by: Thomas Bogendoerfer Signed-off-by: Sasha Levin --- arch/mips/include/asm/fw/fw.h | 2 +- arch/mips/pic32/pic32mzda/early_console.c | 13 ++++++------- arch/mips/pic32/pic32mzda/init.c | 2 +- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/arch/mips/include/asm/fw/fw.h b/arch/mips/include/asm/fw/fw.h index d0ef8b4892bb..d0494ce4b337 100644 --- a/arch/mips/include/asm/fw/fw.h +++ b/arch/mips/include/asm/fw/fw.h @@ -26,6 +26,6 @@ extern char *fw_getcmdline(void); extern void fw_meminit(void); extern char *fw_getenv(char *name); extern unsigned long fw_getenvl(char *name); -extern void fw_init_early_console(char port); +extern void fw_init_early_console(void); #endif /* __ASM_FW_H_ */ diff --git a/arch/mips/pic32/pic32mzda/early_console.c b/arch/mips/pic32/pic32mzda/early_console.c index d7b783463fac..4933c5337059 100644 --- a/arch/mips/pic32/pic32mzda/early_console.c +++ b/arch/mips/pic32/pic32mzda/early_console.c @@ -34,7 +34,7 @@ #define U_BRG(x) (UART_BASE(x) + 0x40) static void __iomem *uart_base; -static char console_port = -1; +static int console_port = -1; static int __init configure_uart_pins(int port) { @@ -54,7 +54,7 @@ static int __init configure_uart_pins(int port) return 0; } -static void __init configure_uart(char port, int baud) +static void __init configure_uart(int port, int baud) { u32 pbclk; @@ -67,7 +67,7 @@ static void __init configure_uart(char port, int baud) uart_base + PIC32_SET(U_STA(port))); } -static void __init setup_early_console(char port, int baud) +static void __init setup_early_console(int port, int baud) { if (configure_uart_pins(port)) return; @@ -137,16 +137,15 @@ static int __init get_baud_from_cmdline(char *arch_cmdline) return baud; } -void __init fw_init_early_console(char port) +void __init fw_init_early_console(void) { char *arch_cmdline = pic32_getcmdline(); - int baud = -1; + int baud, port; uart_base = ioremap_nocache(PIC32_BASE_UART, 0xc00); baud = get_baud_from_cmdline(arch_cmdline); - if (port == -1) - port = get_port_from_cmdline(arch_cmdline); + port = get_port_from_cmdline(arch_cmdline); if (port == -1) port = EARLY_CONSOLE_PORT; diff --git a/arch/mips/pic32/pic32mzda/init.c b/arch/mips/pic32/pic32mzda/init.c index 406c6c5cec29..cf2625551b45 100644 --- a/arch/mips/pic32/pic32mzda/init.c +++ b/arch/mips/pic32/pic32mzda/init.c @@ -68,7 +68,7 @@ void __init plat_mem_setup(void) strlcpy(arcs_cmdline, boot_command_line, COMMAND_LINE_SIZE); #ifdef CONFIG_EARLY_PRINTK - fw_init_early_console(-1); + fw_init_early_console(); #endif pic32_config_init(); } From 4625ee5acf3f8bb9d819f8d23c35a4bad1156b4f Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Tue, 25 Oct 2022 14:06:48 +0800 Subject: [PATCH 14/74] af_key: Fix send_acquire race with pfkey_register [ Upstream commit 7f57f8165cb6d2c206e2b9ada53b9e2d6d8af42f ] The function pfkey_send_acquire may race with pfkey_register (which could even be in a different name space). This may result in a buffer overrun. Allocating the maximum amount of memory that could be used prevents this. Reported-by: syzbot+1e9af9185d8850e2c2fa@syzkaller.appspotmail.com Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Herbert Xu Reviewed-by: Sabrina Dubroca Reviewed-by: Eric Dumazet Signed-off-by: Steffen Klassert Signed-off-by: Sasha Levin --- net/key/af_key.c | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/net/key/af_key.c b/net/key/af_key.c index 88d4a3a02ab7..2bd2ce8ceb80 100644 --- a/net/key/af_key.c +++ b/net/key/af_key.c @@ -2940,7 +2940,7 @@ static int count_ah_combs(const struct xfrm_tmpl *t) break; if (!aalg->pfkey_supported) continue; - if (aalg_tmpl_set(t, aalg) && aalg->available) + if (aalg_tmpl_set(t, aalg)) sz += sizeof(struct sadb_comb); } return sz + sizeof(struct sadb_prop); @@ -2958,7 +2958,7 @@ static int count_esp_combs(const struct xfrm_tmpl *t) if (!ealg->pfkey_supported) continue; - if (!(ealg_tmpl_set(t, ealg) && ealg->available)) + if (!(ealg_tmpl_set(t, ealg))) continue; for (k = 1; ; k++) { @@ -2969,16 +2969,17 @@ static int count_esp_combs(const struct xfrm_tmpl *t) if (!aalg->pfkey_supported) continue; - if (aalg_tmpl_set(t, aalg) && aalg->available) + if (aalg_tmpl_set(t, aalg)) sz += sizeof(struct sadb_comb); } } return sz + sizeof(struct sadb_prop); } -static void dump_ah_combs(struct sk_buff *skb, const struct xfrm_tmpl *t) +static int dump_ah_combs(struct sk_buff *skb, const struct xfrm_tmpl *t) { struct sadb_prop *p; + int sz = 0; int i; p = (struct sadb_prop*)skb_put(skb, sizeof(struct sadb_prop)); @@ -3007,13 +3008,17 @@ static void dump_ah_combs(struct sk_buff *skb, const struct xfrm_tmpl *t) c->sadb_comb_soft_addtime = 20*60*60; c->sadb_comb_hard_usetime = 8*60*60; c->sadb_comb_soft_usetime = 7*60*60; + sz += sizeof(*c); } } + + return sz + sizeof(*p); } -static void dump_esp_combs(struct sk_buff *skb, const struct xfrm_tmpl *t) +static int dump_esp_combs(struct sk_buff *skb, const struct xfrm_tmpl *t) { struct sadb_prop *p; + int sz = 0; int i, k; p = (struct sadb_prop*)skb_put(skb, sizeof(struct sadb_prop)); @@ -3055,8 +3060,11 @@ static void dump_esp_combs(struct sk_buff *skb, const struct xfrm_tmpl *t) c->sadb_comb_soft_addtime = 20*60*60; c->sadb_comb_hard_usetime = 8*60*60; c->sadb_comb_soft_usetime = 7*60*60; + sz += sizeof(*c); } } + + return sz + sizeof(*p); } static int key_notify_policy_expire(struct xfrm_policy *xp, const struct km_event *c) @@ -3186,6 +3194,7 @@ static int pfkey_send_acquire(struct xfrm_state *x, struct xfrm_tmpl *t, struct struct sadb_x_sec_ctx *sec_ctx; struct xfrm_sec_ctx *xfrm_ctx; int ctx_size = 0; + int alg_size = 0; sockaddr_size = pfkey_sockaddr_size(x->props.family); if (!sockaddr_size) @@ -3197,16 +3206,16 @@ static int pfkey_send_acquire(struct xfrm_state *x, struct xfrm_tmpl *t, struct sizeof(struct sadb_x_policy); if (x->id.proto == IPPROTO_AH) - size += count_ah_combs(t); + alg_size = count_ah_combs(t); else if (x->id.proto == IPPROTO_ESP) - size += count_esp_combs(t); + alg_size = count_esp_combs(t); if ((xfrm_ctx = x->security)) { ctx_size = PFKEY_ALIGN8(xfrm_ctx->ctx_len); size += sizeof(struct sadb_x_sec_ctx) + ctx_size; } - skb = alloc_skb(size + 16, GFP_ATOMIC); + skb = alloc_skb(size + alg_size + 16, GFP_ATOMIC); if (skb == NULL) return -ENOMEM; @@ -3262,10 +3271,13 @@ static int pfkey_send_acquire(struct xfrm_state *x, struct xfrm_tmpl *t, struct pol->sadb_x_policy_priority = xp->priority; /* Set sadb_comb's. */ + alg_size = 0; if (x->id.proto == IPPROTO_AH) - dump_ah_combs(skb, t); + alg_size = dump_ah_combs(skb, t); else if (x->id.proto == IPPROTO_ESP) - dump_esp_combs(skb, t); + alg_size = dump_esp_combs(skb, t); + + hdr->sadb_msg_len += alg_size / 8; /* security context */ if (xfrm_ctx) { From 888767c9eb73ad366e777d621480cdbdf2342470 Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Sun, 13 Nov 2022 19:57:48 -0600 Subject: [PATCH 15/74] bus: sunxi-rsb: Support atomic transfers [ Upstream commit 077686da0e2162c4ea5ae0df205849c2a7a84479 ] When communicating with a PMIC during system poweroff (pm_power_off()), IRQs are disabled and we are in a RCU read-side critical section, so we cannot use wait_for_completion_io_timeout(). Instead, poll the status register for transfer completion. Fixes: d787dcdb9c8f ("bus: sunxi-rsb: Add driver for Allwinner Reduced Serial Bus") Signed-off-by: Samuel Holland Reviewed-by: Jernej Skrabec Link: https://lore.kernel.org/r/20221114015749.28490-3-samuel@sholland.org Signed-off-by: Jernej Skrabec Signed-off-by: Sasha Levin --- drivers/bus/sunxi-rsb.c | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/drivers/bus/sunxi-rsb.c b/drivers/bus/sunxi-rsb.c index ce5b976a8856..bf323b540c03 100644 --- a/drivers/bus/sunxi-rsb.c +++ b/drivers/bus/sunxi-rsb.c @@ -268,6 +268,9 @@ EXPORT_SYMBOL_GPL(sunxi_rsb_driver_register); /* common code that starts a transfer */ static int _sunxi_rsb_run_xfer(struct sunxi_rsb *rsb) { + u32 int_mask, status; + bool timeout; + if (readl(rsb->regs + RSB_CTRL) & RSB_CTRL_START_TRANS) { dev_dbg(rsb->dev, "RSB transfer still in progress\n"); return -EBUSY; @@ -275,13 +278,23 @@ static int _sunxi_rsb_run_xfer(struct sunxi_rsb *rsb) reinit_completion(&rsb->complete); - writel(RSB_INTS_LOAD_BSY | RSB_INTS_TRANS_ERR | RSB_INTS_TRANS_OVER, - rsb->regs + RSB_INTE); + int_mask = RSB_INTS_LOAD_BSY | RSB_INTS_TRANS_ERR | RSB_INTS_TRANS_OVER; + writel(int_mask, rsb->regs + RSB_INTE); writel(RSB_CTRL_START_TRANS | RSB_CTRL_GLOBAL_INT_ENB, rsb->regs + RSB_CTRL); - if (!wait_for_completion_io_timeout(&rsb->complete, - msecs_to_jiffies(100))) { + if (irqs_disabled()) { + timeout = readl_poll_timeout_atomic(rsb->regs + RSB_INTS, + status, (status & int_mask), + 10, 100000); + writel(status, rsb->regs + RSB_INTS); + } else { + timeout = !wait_for_completion_io_timeout(&rsb->complete, + msecs_to_jiffies(100)); + status = rsb->status; + } + + if (timeout) { dev_dbg(rsb->dev, "RSB timeout\n"); /* abort the transfer */ @@ -293,18 +306,18 @@ static int _sunxi_rsb_run_xfer(struct sunxi_rsb *rsb) return -ETIMEDOUT; } - if (rsb->status & RSB_INTS_LOAD_BSY) { + if (status & RSB_INTS_LOAD_BSY) { dev_dbg(rsb->dev, "RSB busy\n"); return -EBUSY; } - if (rsb->status & RSB_INTS_TRANS_ERR) { - if (rsb->status & RSB_INTS_TRANS_ERR_ACK) { + if (status & RSB_INTS_TRANS_ERR) { + if (status & RSB_INTS_TRANS_ERR_ACK) { dev_dbg(rsb->dev, "RSB slave nack\n"); return -EINVAL; } - if (rsb->status & RSB_INTS_TRANS_ERR_DATA) { + if (status & RSB_INTS_TRANS_ERR_DATA) { dev_dbg(rsb->dev, "RSB transfer data error\n"); return -EIO; } From ca558d2b9a7de26dc546387479c3994699841e35 Mon Sep 17 00:00:00 2001 From: Michael Grzeschik Date: Mon, 14 Nov 2022 19:59:23 +0100 Subject: [PATCH 16/74] ARM: dts: at91: sam9g20ek: enable udc vbus gpio pinctrl [ Upstream commit 40a2226e8bfacb79dd154dea68febeead9d847e9 ] We set the PIOC to GPIO mode. This way the pin becomes an input signal will be usable by the controller. Without this change the udc on the 9g20ek does not work. Cc: nicolas.ferre@microchip.com Cc: ludovic.desroches@microchip.com Cc: alexandre.belloni@bootlin.com Cc: linux-arm-kernel@lists.infradead.org Cc: kernel@pengutronix.de Fixes: 5cb4e73575e3 ("ARM: at91: add at91sam9g20ek boards dt support") Signed-off-by: Michael Grzeschik Signed-off-by: Claudiu Beznea Link: https://lore.kernel.org/r/20221114185923.1023249-3-m.grzeschik@pengutronix.de Signed-off-by: Sasha Levin --- arch/arm/boot/dts/at91sam9g20ek_common.dtsi | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/arch/arm/boot/dts/at91sam9g20ek_common.dtsi b/arch/arm/boot/dts/at91sam9g20ek_common.dtsi index 27847a47c108..1b326a0a2c92 100644 --- a/arch/arm/boot/dts/at91sam9g20ek_common.dtsi +++ b/arch/arm/boot/dts/at91sam9g20ek_common.dtsi @@ -39,6 +39,13 @@ }; + usb1 { + pinctrl_usb1_vbus_gpio: usb1_vbus_gpio { + atmel,pins = + ; /* PC5 GPIO */ + }; + }; + mmc0_slot1 { pinctrl_board_mmc0_slot1: mmc0_slot1-board { atmel,pins = @@ -72,6 +79,8 @@ }; usb1: gadget@fffa4000 { + pinctrl-0 = <&pinctrl_usb1_vbus_gpio>; + pinctrl-names = "default"; atmel,vbus-gpio = <&pioC 5 GPIO_ACTIVE_HIGH>; status = "okay"; }; From 457c4be22e7ca2712476371fe0d3c25ae7618251 Mon Sep 17 00:00:00 2001 From: Lin Ma Date: Wed, 16 Nov 2022 21:02:49 +0800 Subject: [PATCH 17/74] nfc/nci: fix race with opening and closing [ Upstream commit 0ad6bded175e829c2ca261529c9dce39a32a042d ] Previously we leverage NCI_UNREG and the lock inside nci_close_device to prevent the race condition between opening a device and closing a device. However, it still has problem because a failed opening command will erase the NCI_UNREG flag and allow another opening command to bypass the status checking. This fix corrects that by making sure the NCI_UNREG is held. Reported-by: syzbot+43475bf3cfbd6e41f5b7@syzkaller.appspotmail.com Fixes: 48b71a9e66c2 ("NFC: add NCI_UNREG flag to eliminate the race") Signed-off-by: Lin Ma Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- net/nfc/nci/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/nfc/nci/core.c b/net/nfc/nci/core.c index df90872fcf90..e7701c36f36c 100644 --- a/net/nfc/nci/core.c +++ b/net/nfc/nci/core.c @@ -543,7 +543,7 @@ static int nci_open_device(struct nci_dev *ndev) skb_queue_purge(&ndev->tx_q); ndev->ops->close(ndev); - ndev->flags = 0; + ndev->flags &= BIT(NCI_UNREG); } done: From 361293d3b9f20941905f3eafedfc9911595b2423 Mon Sep 17 00:00:00 2001 From: Wang Hai Date: Thu, 17 Nov 2022 14:55:27 +0800 Subject: [PATCH 18/74] net: pch_gbe: fix potential memleak in pch_gbe_tx_queue() [ Upstream commit 2360f9b8c4e81d242d4cbf99d630a2fffa681fab ] In pch_gbe_xmit_frame(), NETDEV_TX_OK will be returned whether pch_gbe_tx_queue() sends data successfully or not, so pch_gbe_tx_queue() needs to free skb before returning. But pch_gbe_tx_queue() returns without freeing skb in case of dma_map_single() fails. Add dev_kfree_skb_any() to fix it. Fixes: 77555ee72282 ("net: Add Gigabit Ethernet driver of Topcliff PCH") Signed-off-by: Wang Hai Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c index cd59577a0c92..ca6c4e7254cd 100644 --- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c @@ -1221,6 +1221,7 @@ static void pch_gbe_tx_queue(struct pch_gbe_adapter *adapter, buffer_info->dma = 0; buffer_info->time_stamp = 0; tx_ring->next_to_use = ring_num; + dev_kfree_skb_any(skb); return; } buffer_info->mapped = true; From 2aedf0dd799d8c6a636f4b7c8df6d47954c6ea4a Mon Sep 17 00:00:00 2001 From: Zhengchao Shao Date: Thu, 10 Nov 2022 20:26:06 +0800 Subject: [PATCH 19/74] 9p/fd: fix issue of list_del corruption in p9_fd_cancel() [ Upstream commit 11c10956515b8ec44cf4f2a7b9d8bf8b9dc05ec4 ] Syz reported the following issue: kernel BUG at lib/list_debug.c:53! invalid opcode: 0000 [#1] PREEMPT SMP KASAN RIP: 0010:__list_del_entry_valid.cold+0x5c/0x72 Call Trace: p9_fd_cancel+0xb1/0x270 p9_client_rpc+0x8ea/0xba0 p9_client_create+0x9c0/0xed0 v9fs_session_init+0x1e0/0x1620 v9fs_mount+0xba/0xb80 legacy_get_tree+0x103/0x200 vfs_get_tree+0x89/0x2d0 path_mount+0x4c0/0x1ac0 __x64_sys_mount+0x33b/0x430 do_syscall_64+0x35/0x80 entry_SYSCALL_64_after_hwframe+0x46/0xb0 The process is as follows: Thread A: Thread B: p9_poll_workfn() p9_client_create() ... ... p9_conn_cancel() p9_fd_cancel() list_del() ... ... list_del() //list_del corruption There is no lock protection when deleting list in p9_conn_cancel(). After deleting list in Thread A, thread B will delete the same list again. It will cause issue of list_del corruption. Setting req->status to REQ_STATUS_ERROR under lock prevents other cleanup paths from trying to manipulate req_list. The other thread can safely check req->status because it still holds a reference to req at this point. Link: https://lkml.kernel.org/r/20221110122606.383352-1-shaozhengchao@huawei.com Fixes: 52f1c45dde91 ("9p: trans_fd/p9_conn_cancel: drop client lock earlier") Reported-by: syzbot+9b69b8d10ab4a7d88056@syzkaller.appspotmail.com Signed-off-by: Zhengchao Shao [Dominique: add description of the fix in commit message] Signed-off-by: Dominique Martinet Signed-off-by: Sasha Levin --- net/9p/trans_fd.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c index a7973bd56a40..e70e843ee48f 100644 --- a/net/9p/trans_fd.c +++ b/net/9p/trans_fd.c @@ -210,9 +210,11 @@ static void p9_conn_cancel(struct p9_conn *m, int err) list_for_each_entry_safe(req, rtmp, &m->req_list, req_list) { list_move(&req->req_list, &cancel_list); + req->status = REQ_STATUS_ERROR; } list_for_each_entry_safe(req, rtmp, &m->unsent_req_list, req_list) { list_move(&req->req_list, &cancel_list); + req->status = REQ_STATUS_ERROR; } spin_unlock(&m->client->lock); From e5c87ee95d96fbd1af60e7e5ac2a789524bbc95a Mon Sep 17 00:00:00 2001 From: Zheng Yongjun Date: Thu, 17 Nov 2022 06:20:11 +0000 Subject: [PATCH 20/74] ARM: mxs: fix memory leak in mxs_machine_init() [ Upstream commit f31e3c204d1844b8680a442a48868af5ac3d5481 ] If of_property_read_string() failed, 'soc_dev_attr' should be freed before return. Otherwise there is a memory leak. Fixes: 2046338dcbc6 ("ARM: mxs: Use soc bus infrastructure") Signed-off-by: Zheng Yongjun Reviewed-by: Marco Felsch Signed-off-by: Shawn Guo Signed-off-by: Sasha Levin --- arch/arm/mach-mxs/mach-mxs.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/arm/mach-mxs/mach-mxs.c b/arch/arm/mach-mxs/mach-mxs.c index e4f21086b42b..57cb97ff82bc 100644 --- a/arch/arm/mach-mxs/mach-mxs.c +++ b/arch/arm/mach-mxs/mach-mxs.c @@ -393,8 +393,10 @@ static void __init mxs_machine_init(void) root = of_find_node_by_path("/"); ret = of_property_read_string(root, "model", &soc_dev_attr->machine); - if (ret) + if (ret) { + kfree(soc_dev_attr); return; + } soc_dev_attr->family = "Freescale MXS Family"; soc_dev_attr->soc_id = mxs_get_soc_id(); From bfb211fe095b8ab1c1a088ff0063a717c6223174 Mon Sep 17 00:00:00 2001 From: Peter Kosyh Date: Thu, 17 Nov 2022 18:28:06 +0300 Subject: [PATCH 21/74] net/mlx4: Check retval of mlx4_bitmap_init [ Upstream commit 594c61ffc77de0a197934aa0f1df9285c68801c6 ] If mlx4_bitmap_init fails, mlx4_bitmap_alloc_range will dereference the NULL pointer (bitmap->table). Make sure, that mlx4_bitmap_alloc_range called in no error case. Found by Linux Verification Center (linuxtesting.org) with SVACE. Fixes: d57febe1a478 ("net/mlx4: Add A0 hybrid steering") Reviewed-by: Tariq Toukan Signed-off-by: Peter Kosyh Link: https://lore.kernel.org/r/20221117152806.278072-1-pkosyh@yandex.ru Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/net/ethernet/mellanox/mlx4/qp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/mellanox/mlx4/qp.c b/drivers/net/ethernet/mellanox/mlx4/qp.c index 71578d48efbc..54026043b5e2 100644 --- a/drivers/net/ethernet/mellanox/mlx4/qp.c +++ b/drivers/net/ethernet/mellanox/mlx4/qp.c @@ -696,7 +696,8 @@ static int mlx4_create_zones(struct mlx4_dev *dev, err = mlx4_bitmap_init(*bitmap + k, 1, MLX4_QP_TABLE_RAW_ETH_SIZE - 1, 0, 0); - mlx4_bitmap_alloc_range(*bitmap + k, 1, 1, 0); + if (!err) + mlx4_bitmap_alloc_range(*bitmap + k, 1, 1, 0); } if (err) From 1c68ba75c71584f7e1b59cf7c2c9813d043922d4 Mon Sep 17 00:00:00 2001 From: Zhang Changzhong Date: Thu, 17 Nov 2022 16:50:38 +0800 Subject: [PATCH 22/74] net/qla3xxx: fix potential memleak in ql3xxx_send() [ Upstream commit 62a7311fb96c61d281da9852dbee4712fc8c3277 ] The ql3xxx_send() returns NETDEV_TX_OK without freeing skb in error handling case, add dev_kfree_skb_any() to fix it. Fixes: bd36b0ac5d06 ("qla3xxx: Add support for Qlogic 4032 chip.") Signed-off-by: Zhang Changzhong Link: https://lore.kernel.org/r/1668675039-21138-1-git-send-email-zhangchangzhong@huawei.com Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/net/ethernet/qlogic/qla3xxx.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/ethernet/qlogic/qla3xxx.c b/drivers/net/ethernet/qlogic/qla3xxx.c index e62e3a9d5249..4ad4fb832a4a 100644 --- a/drivers/net/ethernet/qlogic/qla3xxx.c +++ b/drivers/net/ethernet/qlogic/qla3xxx.c @@ -2472,6 +2472,7 @@ static netdev_tx_t ql3xxx_send(struct sk_buff *skb, skb_shinfo(skb)->nr_frags); if (tx_cb->seg_count == -1) { netdev_err(ndev, "%s: invalid segment count!\n", __func__); + dev_kfree_skb_any(skb); return NETDEV_TX_OK; } From aaaebd6157e24bdfb42b69dcf943c78e6112dfe4 Mon Sep 17 00:00:00 2001 From: Chen Zhongjin Date: Thu, 3 Nov 2022 17:07:13 +0800 Subject: [PATCH 23/74] xfrm: Fix ignored return value in xfrm6_init() [ Upstream commit 40781bfb836eda57d19c0baa37c7e72590e05fdc ] When IPv6 module initializing in xfrm6_init(), register_pernet_subsys() is possible to fail but its return value is ignored. If IPv6 initialization fails later and xfrm6_fini() is called, removing uninitialized list in xfrm6_net_ops will cause null-ptr-deref: KASAN: null-ptr-deref in range [0x0000000000000008-0x000000000000000f] CPU: 1 PID: 330 Comm: insmod RIP: 0010:unregister_pernet_operations+0xc9/0x450 Call Trace: unregister_pernet_subsys+0x31/0x3e xfrm6_fini+0x16/0x30 [ipv6] ip6_route_init+0xcd/0x128 [ipv6] inet6_init+0x29c/0x602 [ipv6] ... Fix it by catching the error return value of register_pernet_subsys(). Fixes: 8d068875caca ("xfrm: make gc_thresh configurable in all namespaces") Signed-off-by: Chen Zhongjin Reviewed-by: Leon Romanovsky Signed-off-by: Steffen Klassert Signed-off-by: Sasha Levin --- net/ipv6/xfrm6_policy.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c index 0c7f27a1725f..6887922ea828 100644 --- a/net/ipv6/xfrm6_policy.c +++ b/net/ipv6/xfrm6_policy.c @@ -419,9 +419,13 @@ int __init xfrm6_init(void) if (ret) goto out_state; - register_pernet_subsys(&xfrm6_net_ops); + ret = register_pernet_subsys(&xfrm6_net_ops); + if (ret) + goto out_protocol; out: return ret; +out_protocol: + xfrm6_protocol_fini(); out_state: xfrm6_state_fini(); out_policy: From b4e4315cedf1ef02f665ecccc44f23c3594b8a13 Mon Sep 17 00:00:00 2001 From: Liu Shixin Date: Fri, 18 Nov 2022 16:24:19 +0800 Subject: [PATCH 24/74] NFC: nci: fix memory leak in nci_rx_data_packet() [ Upstream commit 53270fb0fd77fe786d8c07a0793981d797836b93 ] Syzbot reported a memory leak about skb: unreferenced object 0xffff88810e144e00 (size 240): comm "syz-executor284", pid 3701, jiffies 4294952403 (age 12.620s) hex dump (first 32 bytes): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ backtrace: [] __alloc_skb+0x1f9/0x270 net/core/skbuff.c:497 [] alloc_skb include/linux/skbuff.h:1267 [inline] [] virtual_ncidev_write+0x24/0xe0 drivers/nfc/virtual_ncidev.c:116 [] do_loop_readv_writev fs/read_write.c:759 [inline] [] do_loop_readv_writev fs/read_write.c:743 [inline] [] do_iter_write+0x253/0x300 fs/read_write.c:863 [] vfs_writev+0xdd/0x240 fs/read_write.c:934 [] do_writev+0xa6/0x1c0 fs/read_write.c:977 [] do_syscall_x64 arch/x86/entry/common.c:50 [inline] [] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 [] entry_SYSCALL_64_after_hwframe+0x63/0xcd In nci_rx_data_packet(), if we don't get a valid conn_info, we will return directly but forget to release the skb. Reported-by: syzbot+cdb9a427d1bc08815104@syzkaller.appspotmail.com Fixes: 4aeee6871e8c ("NFC: nci: Add dynamic logical connections support") Signed-off-by: Liu Shixin Link: https://lore.kernel.org/r/20221118082419.239475-1-liushixin2@huawei.com Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin --- net/nfc/nci/data.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/net/nfc/nci/data.c b/net/nfc/nci/data.c index b8a295dd15d8..45b654dca6f9 100644 --- a/net/nfc/nci/data.c +++ b/net/nfc/nci/data.c @@ -291,8 +291,10 @@ void nci_rx_data_packet(struct nci_dev *ndev, struct sk_buff *skb) nci_plen(skb->data)); conn_info = nci_get_conn_info_by_conn_id(ndev, nci_conn_id(skb->data)); - if (!conn_info) + if (!conn_info) { + kfree_skb(skb); return; + } /* strip the nci data header */ skb_pull(skb, NCI_DATA_HDR_SIZE); From 3c93a962b16e53771c1834bbe0b5221e3cb67c4f Mon Sep 17 00:00:00 2001 From: Martin Faltesek Date: Mon, 21 Nov 2022 18:42:44 -0600 Subject: [PATCH 25/74] nfc: st-nci: fix incorrect validating logic in EVT_TRANSACTION [ Upstream commit c60c152230828825c06e62a8f1ce956d4b659266 ] The first validation check for EVT_TRANSACTION has two different checks tied together with logical AND. One is a check for minimum packet length, and the other is for a valid aid_tag. If either condition is true (fails), then an error should be triggered. The fix is to change && to ||. Reported-by: Denis Efremov Reviewed-by: Guenter Roeck Fixes: 5d1ceb7f5e56 ("NFC: st21nfcb: Add HCI transaction event support") Signed-off-by: Martin Faltesek Reviewed-by: Krzysztof Kozlowski Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/nfc/st-nci/se.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/nfc/st-nci/se.c b/drivers/nfc/st-nci/se.c index 85df2e009310..e75929ff330e 100644 --- a/drivers/nfc/st-nci/se.c +++ b/drivers/nfc/st-nci/se.c @@ -338,7 +338,7 @@ static int st_nci_hci_connectivity_event_received(struct nci_dev *ndev, * AID 81 5 to 16 * PARAMETERS 82 0 to 255 */ - if (skb->len < NFC_MIN_AID_LENGTH + 2 && + if (skb->len < NFC_MIN_AID_LENGTH + 2 || skb->data[0] != NFC_EVT_TRANSACTION_AID_TAG) return -EPROTO; From 6f7cb84246e1e181ff6a606a1e38fb065a953202 Mon Sep 17 00:00:00 2001 From: Martin Faltesek Date: Mon, 21 Nov 2022 18:42:45 -0600 Subject: [PATCH 26/74] nfc: st-nci: fix memory leaks in EVT_TRANSACTION [ Upstream commit 440f2ae9c9f06e26f5dcea697a53717fc61a318c ] Error path does not free previously allocated memory. Add devm_kfree() to the failure path. Reported-by: Denis Efremov Reviewed-by: Guenter Roeck Fixes: 5d1ceb7f5e56 ("NFC: st21nfcb: Add HCI transaction event support") Signed-off-by: Martin Faltesek Reviewed-by: Krzysztof Kozlowski Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/nfc/st-nci/se.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/nfc/st-nci/se.c b/drivers/nfc/st-nci/se.c index e75929ff330e..b1d23b35aac4 100644 --- a/drivers/nfc/st-nci/se.c +++ b/drivers/nfc/st-nci/se.c @@ -352,8 +352,10 @@ static int st_nci_hci_connectivity_event_received(struct nci_dev *ndev, /* Check next byte is PARAMETERS tag (82) */ if (skb->data[transaction->aid_len + 2] != - NFC_EVT_TRANSACTION_PARAMS_TAG) + NFC_EVT_TRANSACTION_PARAMS_TAG) { + devm_kfree(dev, transaction); return -EPROTO; + } transaction->params_len = skb->data[transaction->aid_len + 3]; memcpy(transaction->params, skb->data + From 3c2cfa88db48d9fcb7dd447611ba9d96e18cdf06 Mon Sep 17 00:00:00 2001 From: Yu Liao Date: Wed, 23 Nov 2022 16:22:36 +0800 Subject: [PATCH 27/74] net: thunderx: Fix the ACPI memory leak [ Upstream commit 661e5ebbafd26d9d2e3c749f5cf591e55c7364f5 ] The ACPI buffer memory (string.pointer) should be freed as the buffer is not used after returning from bgx_acpi_match_id(), free it to prevent memory leak. Fixes: 46b903a01c05 ("net, thunder, bgx: Add support to get MAC address from ACPI.") Signed-off-by: Yu Liao Link: https://lore.kernel.org/r/20221123082237.1220521-1-liaoyu15@huawei.com Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin --- drivers/net/ethernet/cavium/thunder/thunder_bgx.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/cavium/thunder/thunder_bgx.c b/drivers/net/ethernet/cavium/thunder/thunder_bgx.c index e858b1af788d..0a58e55f8613 100644 --- a/drivers/net/ethernet/cavium/thunder/thunder_bgx.c +++ b/drivers/net/ethernet/cavium/thunder/thunder_bgx.c @@ -1183,8 +1183,10 @@ static acpi_status bgx_acpi_match_id(acpi_handle handle, u32 lvl, return AE_OK; } - if (strncmp(string.pointer, bgx_sel, 4)) + if (strncmp(string.pointer, bgx_sel, 4)) { + kfree(string.pointer); return AE_OK; + } acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, 1, bgx_acpi_register_phy, NULL, bgx, NULL); From d67a9fba12e441b700f656891b48a783f85ade71 Mon Sep 17 00:00:00 2001 From: Heiko Carstens Date: Fri, 18 Nov 2022 13:05:39 +0100 Subject: [PATCH 28/74] s390/crashdump: fix TOD programmable field size MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit f44e07a8afdd713ddc1a8832c39372fe5dd86895 ] The size of the TOD programmable field was incorrectly increased from four to eight bytes with commit 1a2c5840acf9 ("s390/dump: cleanup CPU save area handling"). This leads to an elf notes section NT_S390_TODPREG which has a size of eight instead of four bytes in case of kdump, however even worse is that the contents is incorrect: it is supposed to contain only the contents of the TOD programmable field, but in fact contains a mix of the TOD programmable field (32 bit upper bits) and parts of the CPU timer register (lower 32 bits). Fix this by simply changing the size of the todpreg field within the save area structure. This will implicitly also fix the size of the corresponding elf notes sections. This also gets rid of this compile time warning: in function ‘fortify_memcpy_chk’, inlined from ‘save_area_add_regs’ at arch/s390/kernel/crash_dump.c:99:2: ./include/linux/fortify-string.h:413:25: error: call to ‘__read_overflow2_field’ declared with attribute warning: detected read beyond size of field (2nd parameter); maybe use struct_group()? [-Werror=attribute-warning] 413 | __read_overflow2_field(q_size_field, size); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Fixes: 1a2c5840acf9 ("s390/dump: cleanup CPU save area handling") Reviewed-by: Christian Borntraeger Signed-off-by: Heiko Carstens Signed-off-by: Alexander Gordeev Signed-off-by: Sasha Levin --- arch/s390/kernel/crash_dump.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/s390/kernel/crash_dump.c b/arch/s390/kernel/crash_dump.c index 167135294ca5..d246cb23e341 100644 --- a/arch/s390/kernel/crash_dump.c +++ b/arch/s390/kernel/crash_dump.c @@ -42,7 +42,7 @@ struct save_area { u64 fprs[16]; u32 fpc; u32 prefix; - u64 todpreg; + u32 todpreg; u64 timer; u64 todcmp; u64 vxrs_low[16]; From e347d5b993bc41425631d5d5eae6d236626b4457 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Concepci=C3=B3n=20Rodr=C3=ADguez?= Date: Sun, 6 Nov 2022 01:56:51 +0000 Subject: [PATCH 29/74] iio: light: apds9960: fix wrong register for gesture gain commit 0aa60ff5d996d4ecdd4a62699c01f6d00f798d59 upstream. Gesture Gain Control is in REG_GCONF_2 (0xa3), not in REG_CONFIG_2 (0x90). Fixes: aff268cd532e ("iio: light: add APDS9960 ALS + promixity driver") Signed-off-by: Alejandro Concepcion-Rodriguez Acked-by: Matt Ranostay Cc: Link: https://lore.kernel.org/r/EaT-NKC-H4DNX5z4Lg9B6IWPD5TrTrYBr5DYB784wfDKQkTmzPXkoYqyUOrOgJH-xvTsEkFLcVkeAPZRUODEFI5dGziaWXwjpfBNLeNGfNc=@acoro.eu Signed-off-by: Jonathan Cameron Signed-off-by: Greg Kroah-Hartman --- drivers/iio/light/apds9960.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/iio/light/apds9960.c b/drivers/iio/light/apds9960.c index a4304edc3e0f..bf2946c6371a 100644 --- a/drivers/iio/light/apds9960.c +++ b/drivers/iio/light/apds9960.c @@ -63,9 +63,6 @@ #define APDS9960_REG_CONTROL_PGAIN_MASK_SHIFT 2 #define APDS9960_REG_CONFIG_2 0x90 -#define APDS9960_REG_CONFIG_2_GGAIN_MASK 0x60 -#define APDS9960_REG_CONFIG_2_GGAIN_MASK_SHIFT 5 - #define APDS9960_REG_ID 0x92 #define APDS9960_REG_STATUS 0x93 @@ -86,6 +83,9 @@ #define APDS9960_REG_GCONF_1_GFIFO_THRES_MASK_SHIFT 6 #define APDS9960_REG_GCONF_2 0xa3 +#define APDS9960_REG_GCONF_2_GGAIN_MASK 0x60 +#define APDS9960_REG_GCONF_2_GGAIN_MASK_SHIFT 5 + #define APDS9960_REG_GOFFSET_U 0xa4 #define APDS9960_REG_GOFFSET_D 0xa5 #define APDS9960_REG_GPULSE 0xa6 @@ -404,9 +404,9 @@ static int apds9960_set_pxs_gain(struct apds9960_data *data, int val) } ret = regmap_update_bits(data->regmap, - APDS9960_REG_CONFIG_2, - APDS9960_REG_CONFIG_2_GGAIN_MASK, - idx << APDS9960_REG_CONFIG_2_GGAIN_MASK_SHIFT); + APDS9960_REG_GCONF_2, + APDS9960_REG_GCONF_2_GGAIN_MASK, + idx << APDS9960_REG_GCONF_2_GGAIN_MASK_SHIFT); if (!ret) data->pxs_gain = idx; mutex_unlock(&data->lock); From aa800ea7aa524ed2fabca1ad00f23697b27b7ddf Mon Sep 17 00:00:00 2001 From: Chen Zhongjin Date: Tue, 8 Nov 2022 11:28:02 +0800 Subject: [PATCH 30/74] iio: core: Fix entry not deleted when iio_register_sw_trigger_type() fails commit 4ad09d956f8eacff61e67e5b13ba8ebec3232f76 upstream. In iio_register_sw_trigger_type(), configfs_register_default_group() is possible to fail, but the entry add to iio_trigger_types_list is not deleted. This leaves wild in iio_trigger_types_list, which can cause page fault when module is loading again. So fix this by list_del(&t->list) in error path. BUG: unable to handle page fault for address: fffffbfff81d7400 Call Trace: iio_register_sw_trigger_type do_one_initcall do_init_module load_module ... Fixes: b662f809d410 ("iio: core: Introduce IIO software triggers") Signed-off-by: Chen Zhongjin Link: https://lore.kernel.org/r/20221108032802.168623-1-chenzhongjin@huawei.com Cc: Signed-off-by: Jonathan Cameron Signed-off-by: Greg Kroah-Hartman --- drivers/iio/industrialio-sw-trigger.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/iio/industrialio-sw-trigger.c b/drivers/iio/industrialio-sw-trigger.c index 8d24fb159cc9..bae2d7734343 100644 --- a/drivers/iio/industrialio-sw-trigger.c +++ b/drivers/iio/industrialio-sw-trigger.c @@ -61,8 +61,12 @@ int iio_register_sw_trigger_type(struct iio_sw_trigger_type *t) t->group = configfs_register_default_group(iio_triggers_group, t->name, &iio_trigger_type_group_type); - if (IS_ERR(t->group)) + if (IS_ERR(t->group)) { + mutex_lock(&iio_trigger_types_lock); + list_del(&t->list); + mutex_unlock(&iio_trigger_types_lock); ret = PTR_ERR(t->group); + } return ret; } From 2685d525a8eae521948f954d9f0e7561b5189347 Mon Sep 17 00:00:00 2001 From: Masahiro Yamada Date: Sat, 16 Dec 2017 00:28:42 +0900 Subject: [PATCH 31/74] kconfig: display recursive dependency resolution hint just once MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit e3b03bf29d6b99fab7001fb20c33fe54928c157a upstream. Commit 1c199f2878f6 ("kbuild: document recursive dependency limitation / resolution") probably intended to show a hint along with "recursive dependency detected!" error, but it missed to add {...} guard, and the hint is displayed in every loop of the dep_stack traverse, annoyingly. This error was detected by GCC's -Wmisleading-indentation when switching to build-time generation of lexer/parser. scripts/kconfig/symbol.c: In function ‘sym_check_print_recursive’: scripts/kconfig/symbol.c:1150:3: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation] if (stack->sym == last_sym) ^~ scripts/kconfig/symbol.c:1153:4: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’ fprintf(stderr, "For a resolution refer to Documentation/kbuild/kconfig-language.txt\n"); ^~~~~~~ I could simply add {...} to surround the three fprintf(), but I rather chose to move the hint after the loop to make the whole message readable. Fixes: 1c199f2878f6 ("kbuild: document recursive dependency limitation / resolution" Signed-off-by: Masahiro Yamada Acked-by: Luis R. Rodriguez Cc: Daniel Díaz Signed-off-by: Greg Kroah-Hartman --- scripts/kconfig/symbol.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c index 2432298487fb..88068bf26cef 100644 --- a/scripts/kconfig/symbol.c +++ b/scripts/kconfig/symbol.c @@ -1130,8 +1130,7 @@ static void sym_check_print_recursive(struct symbol *last_sym) if (stack->sym == last_sym) fprintf(stderr, "%s:%d:error: recursive dependency detected!\n", prop->file->name, prop->lineno); - fprintf(stderr, "For a resolution refer to Documentation/kbuild/kconfig-language.txt\n"); - fprintf(stderr, "subsection \"Kconfig recursive dependency limitations\"\n"); + if (stack->expr) { fprintf(stderr, "%s:%d:\tsymbol %s %s value contains %s\n", prop->file->name, prop->lineno, @@ -1161,6 +1160,11 @@ static void sym_check_print_recursive(struct symbol *last_sym) } } + fprintf(stderr, + "For a resolution refer to Documentation/kbuild/kconfig-language.txt\n" + "subsection \"Kconfig recursive dependency limitations\"\n" + "\n"); + if (check_top == &cv_stack) dep_stack_remove(); } From 00b67829cbc7c8c84a57901959a2b41daaeae175 Mon Sep 17 00:00:00 2001 From: Randy Dunlap Date: Wed, 23 Nov 2022 19:20:53 -0800 Subject: [PATCH 32/74] nios2: add FORCE for vmlinuz.gz [ Upstream commit 869e4ae4cd2a23d625aaa14ae62dbebf768cb77d ] Add FORCE to placate a warning from make: arch/nios2/boot/Makefile:24: FORCE prerequisite is missing Fixes: 2fc8483fdcde ("nios2: Build infrastructure") Signed-off-by: Randy Dunlap Reviewed-by: Masahiro Yamada Signed-off-by: Sasha Levin --- arch/nios2/boot/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/nios2/boot/Makefile b/arch/nios2/boot/Makefile index c899876320df..76dce0a438a6 100644 --- a/arch/nios2/boot/Makefile +++ b/arch/nios2/boot/Makefile @@ -20,7 +20,7 @@ $(obj)/vmlinux.bin: vmlinux FORCE $(obj)/vmlinux.gz: $(obj)/vmlinux.bin FORCE $(call if_changed,gzip) -$(obj)/vmImage: $(obj)/vmlinux.gz +$(obj)/vmImage: $(obj)/vmlinux.gz FORCE $(call if_changed,uimage) @$(kecho) 'Kernel: $@ is ready' From 1bb87917e60dc23cc576fc95e10965cc99495b13 Mon Sep 17 00:00:00 2001 From: Chen Zhongjin Date: Fri, 18 Nov 2022 14:33:04 +0800 Subject: [PATCH 33/74] nilfs2: fix nilfs_sufile_mark_dirty() not set segment usage as dirty commit 512c5ca01a3610ab14ff6309db363de51f1c13a6 upstream. When extending segments, nilfs_sufile_alloc() is called to get an unassigned segment, then mark it as dirty to avoid accidentally allocating the same segment in the future. But for some special cases such as a corrupted image it can be unreliable. If such corruption of the dirty state of the segment occurs, nilfs2 may reallocate a segment that is in use and pick the same segment for writing twice at the same time. This will cause the problem reported by syzkaller: https://syzkaller.appspot.com/bug?id=c7c4748e11ffcc367cef04f76e02e931833cbd24 This case started with segbuf1.segnum = 3, nextnum = 4 when constructed. It supposed segment 4 has already been allocated and marked as dirty. However the dirty state was corrupted and segment 4 usage was not dirty. For the first time nilfs_segctor_extend_segments() segment 4 was allocated again, which made segbuf2 and next segbuf3 had same segment 4. sb_getblk() will get same bh for segbuf2 and segbuf3, and this bh is added to both buffer lists of two segbuf. It makes the lists broken which causes NULL pointer dereference. Fix the problem by setting usage as dirty every time in nilfs_sufile_mark_dirty(), which is called during constructing current segment to be written out and before allocating next segment. [chenzhongjin@huawei.com: add lock protection per Ryusuke] Link: https://lkml.kernel.org/r/20221121091141.214703-1-chenzhongjin@huawei.com Link: https://lkml.kernel.org/r/20221118063304.140187-1-chenzhongjin@huawei.com Fixes: 9ff05123e3bf ("nilfs2: segment constructor") Signed-off-by: Chen Zhongjin Reported-by: Reported-by: Liu Shixin Acked-by: Ryusuke Konishi Tested-by: Ryusuke Konishi Cc: Signed-off-by: Andrew Morton Signed-off-by: Greg Kroah-Hartman --- fs/nilfs2/sufile.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/fs/nilfs2/sufile.c b/fs/nilfs2/sufile.c index 1541a1e9221a..14769684946e 100644 --- a/fs/nilfs2/sufile.c +++ b/fs/nilfs2/sufile.c @@ -507,14 +507,22 @@ void nilfs_sufile_do_free(struct inode *sufile, __u64 segnum, int nilfs_sufile_mark_dirty(struct inode *sufile, __u64 segnum) { struct buffer_head *bh; + void *kaddr; + struct nilfs_segment_usage *su; int ret; + down_write(&NILFS_MDT(sufile)->mi_sem); ret = nilfs_sufile_get_segment_usage_block(sufile, segnum, 0, &bh); if (!ret) { mark_buffer_dirty(bh); nilfs_mdt_mark_dirty(sufile); + kaddr = kmap_atomic(bh->b_page); + su = nilfs_sufile_block_get_segment_usage(sufile, segnum, bh, kaddr); + nilfs_segment_usage_set_dirty(su); + kunmap_atomic(kaddr); brelse(bh); } + up_write(&NILFS_MDT(sufile)->mi_sem); return ret; } From b670996ca9179e8a799c443a9923fc1097938745 Mon Sep 17 00:00:00 2001 From: Lukas Wunner Date: Tue, 27 Sep 2022 13:52:34 +0200 Subject: [PATCH 34/74] serial: 8250: 8250_omap: Avoid RS485 RTS glitch on ->set_termios() [ Upstream commit 038ee49fef18710bedd38b531d173ccd746b2d8d ] RS485-enabled UART ports on TI Sitara SoCs with active-low polarity exhibit a Transmit Enable glitch on ->set_termios(): omap8250_restore_regs(), which is called from omap_8250_set_termios(), sets the TCRTLR bit in the MCR register and clears all other bits, including RTS. If RTS uses active-low polarity, it is now asserted for no reason. The TCRTLR bit is subsequently cleared by writing up->mcr to the MCR register. That variable is always zero, so the RTS bit is still cleared (incorrectly so if RTS is active-high). (up->mcr is not, as one might think, a cache of the MCR register's current value. Rather, it only caches a single bit of that register, the AFE bit. And it only does so if the UART supports the AFE bit, which OMAP does not. For details see serial8250_do_set_termios() and serial8250_do_set_mctrl().) Finally at the end of omap8250_restore_regs(), the MCR register is restored (and RTS deasserted) by a call to up->port.ops->set_mctrl() (which equals serial8250_set_mctrl()) and serial8250_em485_stop_tx(). So there's an RTS glitch between setting TCRTLR and calling serial8250_em485_stop_tx(). Avoid by using a read-modify-write when setting TCRTLR. While at it, drop a redundant initialization of up->mcr. As explained above, the variable isn't used by the driver and it is already initialized to zero because it is part of the static struct serial8250_ports[] declared in 8250_core.c. (Static structs are initialized to zero per section 6.7.8 nr. 10 of the C99 standard.) Cc: Jan Kiszka Cc: Su Bao Cheng Tested-by: Matthias Schiffer Signed-off-by: Lukas Wunner Link: https://lore.kernel.org/r/6554b0241a2c7fd50f32576fdbafed96709e11e8.1664278942.git.lukas@wunner.de Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- drivers/tty/serial/8250/8250_omap.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/tty/serial/8250/8250_omap.c b/drivers/tty/serial/8250/8250_omap.c index d5962162c590..b37e6619af9c 100644 --- a/drivers/tty/serial/8250/8250_omap.c +++ b/drivers/tty/serial/8250/8250_omap.c @@ -242,6 +242,7 @@ static void omap8250_restore_regs(struct uart_8250_port *up) { struct omap8250_priv *priv = up->port.private_data; struct uart_8250_dma *dma = up->dma; + u8 mcr = serial8250_in_MCR(up); if (dma && dma->tx_running) { /* @@ -258,7 +259,7 @@ static void omap8250_restore_regs(struct uart_8250_port *up) serial_out(up, UART_EFR, UART_EFR_ECB); serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A); - serial8250_out_MCR(up, UART_MCR_TCRTLR); + serial8250_out_MCR(up, mcr | UART_MCR_TCRTLR); serial_out(up, UART_FCR, up->fcr); omap8250_update_scr(up, priv); @@ -274,7 +275,8 @@ static void omap8250_restore_regs(struct uart_8250_port *up) serial_out(up, UART_LCR, 0); /* drop TCR + TLR access, we setup XON/XOFF later */ - serial8250_out_MCR(up, up->mcr); + serial8250_out_MCR(up, mcr); + serial_out(up, UART_IER, up->ier); serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B); @@ -583,7 +585,6 @@ static int omap_8250_startup(struct uart_port *port) pm_runtime_get_sync(port->dev); - up->mcr = 0; serial_out(up, UART_FCR, UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT); serial_out(up, UART_LCR, UART_LCR_WLEN8); From b2143fa1d5a6267a8a9e9cada41f1f89cdefd83c Mon Sep 17 00:00:00 2001 From: ruanjinjie Date: Mon, 14 Nov 2022 19:21:24 +0800 Subject: [PATCH 35/74] xen/platform-pci: add missing free_irq() in error path [ Upstream commit c53717e1e3f0d0f9129b2e0dbc6dcc5e0a8132e9 ] free_irq() is missing in case of error in platform_pci_probe(), fix that. Signed-off-by: ruanjinjie Reviewed-by: Oleksandr Tyshchenko Link: https://lore.kernel.org/r/20221114112124.1965611-1-ruanjinjie@huawei.com Signed-off-by: Juergen Gross Signed-off-by: Sasha Levin --- drivers/xen/platform-pci.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/xen/platform-pci.c b/drivers/xen/platform-pci.c index cf9666680c8c..20365b01c36b 100644 --- a/drivers/xen/platform-pci.c +++ b/drivers/xen/platform-pci.c @@ -149,7 +149,7 @@ static int platform_pci_probe(struct pci_dev *pdev, if (ret) { dev_warn(&pdev->dev, "Unable to set the evtchn callback " "err=%d\n", ret); - goto out; + goto irq_out; } } @@ -157,7 +157,7 @@ static int platform_pci_probe(struct pci_dev *pdev, grant_frames = alloc_xen_mmio(PAGE_SIZE * max_nr_gframes); ret = gnttab_setup_auto_xlat_frames(grant_frames); if (ret) - goto out; + goto irq_out; ret = gnttab_init(); if (ret) goto grant_out; @@ -165,6 +165,9 @@ static int platform_pci_probe(struct pci_dev *pdev, return 0; grant_out: gnttab_free_auto_xlat_frames(); +irq_out: + if (!xen_have_vector_callback) + free_irq(pdev->irq, pdev); out: pci_release_region(pdev, 0); mem_out: From d3490ae8218ba182b7c4e62d8ff4990fff98a548 Mon Sep 17 00:00:00 2001 From: Xiongfeng Wang Date: Fri, 11 Nov 2022 18:07:52 +0800 Subject: [PATCH 36/74] platform/x86: asus-wmi: add missing pci_dev_put() in asus_wmi_set_xusb2pr() [ Upstream commit d0cdd85046b15089df71a50548617ac1025300d0 ] pci_get_device() will increase the reference count for the returned pci_dev. We need to use pci_dev_put() to decrease the reference count before asus_wmi_set_xusb2pr() returns. Signed-off-by: Xiongfeng Wang Link: https://lore.kernel.org/r/20221111100752.134311-1-wangxiongfeng2@huawei.com Reviewed-by: Hans de Goede Signed-off-by: Hans de Goede Signed-off-by: Sasha Levin --- drivers/platform/x86/asus-wmi.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c index 4ae758c3d8ba..9f6e462c57fe 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c @@ -1111,6 +1111,8 @@ static void asus_wmi_set_xusb2pr(struct asus_wmi *asus) pci_write_config_dword(xhci_pdev, USB_INTEL_XUSB2PR, cpu_to_le32(ports_available)); + pci_dev_put(xhci_pdev); + pr_info("set USB_INTEL_XUSB2PR old: 0x%04x, new: 0x%04x\n", orig_ports_available, ports_available); } From 39e2c51405fba983442de8fd973bf723ea21102a Mon Sep 17 00:00:00 2001 From: Gleb Mazovetskiy Date: Mon, 14 Nov 2022 22:56:16 +0000 Subject: [PATCH 37/74] tcp: configurable source port perturb table size [ Upstream commit aeac4ec8f46d610a10adbaeff5e2edf6a88ffc62 ] On embedded systems with little memory and no relevant security concerns, it is beneficial to reduce the size of the table. Reducing the size from 2^16 to 2^8 saves 255 KiB of kernel RAM. Makes the table size configurable as an expert option. The size was previously increased from 2^8 to 2^16 in commit 4c2c8f03a5ab ("tcp: increase source port perturb table to 2^16"). Signed-off-by: Gleb Mazovetskiy Reviewed-by: Kuniyuki Iwashima Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- net/ipv4/Kconfig | 10 ++++++++++ net/ipv4/inet_hashtables.c | 10 +++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig index 4d265d4a0dbe..29be5bcbe7ac 100644 --- a/net/ipv4/Kconfig +++ b/net/ipv4/Kconfig @@ -371,6 +371,16 @@ config INET_IPCOMP If unsure, say Y. +config INET_TABLE_PERTURB_ORDER + int "INET: Source port perturbation table size (as power of 2)" if EXPERT + default 16 + help + Source port perturbation table size (as power of 2) for + RFC 6056 3.3.4. Algorithm 4: Double-Hash Port Selection Algorithm. + + The default is almost always what you want. + Only change this if you know what you are doing. + config INET_XFRM_TUNNEL tristate select INET_TUNNEL diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c index db47e1c407d9..9958850b6cee 100644 --- a/net/ipv4/inet_hashtables.c +++ b/net/ipv4/inet_hashtables.c @@ -541,13 +541,13 @@ EXPORT_SYMBOL_GPL(inet_unhash); * Note that we use 32bit integers (vs RFC 'short integers') * because 2^16 is not a multiple of num_ephemeral and this * property might be used by clever attacker. + * * RFC claims using TABLE_LENGTH=10 buckets gives an improvement, though - * attacks were since demonstrated, thus we use 65536 instead to really - * give more isolation and privacy, at the expense of 256kB of kernel - * memory. + * attacks were since demonstrated, thus we use 65536 by default instead + * to really give more isolation and privacy, at the expense of 256kB + * of kernel memory. */ -#define INET_TABLE_PERTURB_SHIFT 16 -#define INET_TABLE_PERTURB_SIZE (1 << INET_TABLE_PERTURB_SHIFT) +#define INET_TABLE_PERTURB_SIZE (1 << CONFIG_INET_TABLE_PERTURB_ORDER) static u32 *table_perturb; int __inet_hash_connect(struct inet_timewait_death_row *death_row, From 8d4ceb13dad97e1634884e48eeb57a3c20f3f636 Mon Sep 17 00:00:00 2001 From: Enrico Sau Date: Tue, 15 Nov 2022 11:58:59 +0100 Subject: [PATCH 38/74] net: usb: qmi_wwan: add Telit 0x103a composition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit e103ba33998d0f25653cc8ebe745b68d1ee10cda ] Add the following Telit LE910C4-WWX composition: 0x103a: rmnet Signed-off-by: Enrico Sau Acked-by: Bjørn Mork Link: https://lore.kernel.org/r/20221115105859.14324-1-enrico.sau@gmail.com Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin --- drivers/net/usb/qmi_wwan.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c index 547693118606..62eb45a819e7 100644 --- a/drivers/net/usb/qmi_wwan.c +++ b/drivers/net/usb/qmi_wwan.c @@ -926,6 +926,7 @@ static const struct usb_device_id products[] = { {QMI_FIXED_INTF(0x2357, 0x0201, 4)}, /* TP-LINK HSUPA Modem MA180 */ {QMI_FIXED_INTF(0x2357, 0x9000, 4)}, /* TP-LINK MA260 */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1031, 3)}, /* Telit LE910C1-EUX */ + {QMI_QUIRK_SET_DTR(0x1bc7, 0x103a, 0)}, /* Telit LE910C4-WWX */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1040, 2)}, /* Telit LE922A */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1050, 2)}, /* Telit FN980 */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1060, 2)}, /* Telit LN920 */ From 6f2c804647371b165a42fc3882413e69dc797c7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Date: Wed, 9 Nov 2022 12:14:44 +0100 Subject: [PATCH 39/74] drm/amdgpu: always register an MMU notifier for userptr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit b39df63b16b64a3af42695acb9bc567aad144776 upstream. Since switching to HMM we always need that because we no longer grab references to the pages. Signed-off-by: Christian König Reviewed-by: Alex Deucher Acked-by: Felix Kuehling CC: stable@vger.kernel.org Signed-off-by: Alex Deucher Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c index d5e4748e3300..bc83a95c3645 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c @@ -278,11 +278,9 @@ int amdgpu_gem_userptr_ioctl(struct drm_device *dev, void *data, if (r) goto release_object; - if (args->flags & AMDGPU_GEM_USERPTR_REGISTER) { - r = amdgpu_mn_register(bo, args->addr); - if (r) - goto release_object; - } + r = amdgpu_mn_register(bo, args->addr); + if (r) + goto release_object; if (args->flags & AMDGPU_GEM_USERPTR_VALIDATE) { down_read(¤t->mm->mmap_sem); From 98afcb5f3be645d330c74c5194ba0d80e26f95e0 Mon Sep 17 00:00:00 2001 From: Wei Yongjun Date: Mon, 7 Nov 2022 15:19:46 +0000 Subject: [PATCH 40/74] iio: health: afe4403: Fix oob read in afe4403_read_raw [ Upstream commit 58143c1ed5882c138a3cd2251a336fc8755f23d9 ] KASAN report out-of-bounds read as follows: BUG: KASAN: global-out-of-bounds in afe4403_read_raw+0x42e/0x4c0 Read of size 4 at addr ffffffffc02ac638 by task cat/279 Call Trace: afe4403_read_raw iio_read_channel_info dev_attr_show The buggy address belongs to the variable: afe4403_channel_leds+0x18/0xffffffffffffe9e0 This issue can be reproduced by singe command: $ cat /sys/bus/spi/devices/spi0.0/iio\:device0/in_intensity6_raw The array size of afe4403_channel_leds is less than channels, so access with chan->address cause OOB read in afe4403_read_raw. Fix it by moving access before use it. Fixes: b36e8257641a ("iio: health/afe440x: Use regmap fields") Signed-off-by: Wei Yongjun Acked-by: Andrew Davis Link: https://lore.kernel.org/r/20221107151946.89260-1-weiyongjun@huaweicloud.com Signed-off-by: Jonathan Cameron Signed-off-by: Sasha Levin --- drivers/iio/health/afe4403.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/iio/health/afe4403.c b/drivers/iio/health/afe4403.c index 2f07c4d1398c..4756e9645f7d 100644 --- a/drivers/iio/health/afe4403.c +++ b/drivers/iio/health/afe4403.c @@ -253,14 +253,14 @@ static int afe4403_read_raw(struct iio_dev *indio_dev, int *val, int *val2, long mask) { struct afe4403_data *afe = iio_priv(indio_dev); - unsigned int reg = afe4403_channel_values[chan->address]; - unsigned int field = afe4403_channel_leds[chan->address]; + unsigned int reg, field; int ret; switch (chan->type) { case IIO_INTENSITY: switch (mask) { case IIO_CHAN_INFO_RAW: + reg = afe4403_channel_values[chan->address]; ret = afe4403_read(afe, reg, val); if (ret) return ret; @@ -270,6 +270,7 @@ static int afe4403_read_raw(struct iio_dev *indio_dev, case IIO_CURRENT: switch (mask) { case IIO_CHAN_INFO_RAW: + field = afe4403_channel_leds[chan->address]; ret = regmap_field_read(afe->fields[field], val); if (ret) return ret; From 68de7da092f38395dde523f2e5db26eba6c23e28 Mon Sep 17 00:00:00 2001 From: Wei Yongjun Date: Mon, 7 Nov 2022 15:20:10 +0000 Subject: [PATCH 41/74] iio: health: afe4404: Fix oob read in afe4404_[read|write]_raw [ Upstream commit fc92d9e3de0b2d30a3ccc08048a5fad533e4672b ] KASAN report out-of-bounds read as follows: BUG: KASAN: global-out-of-bounds in afe4404_read_raw+0x2ce/0x380 Read of size 4 at addr ffffffffc00e4658 by task cat/278 Call Trace: afe4404_read_raw iio_read_channel_info dev_attr_show The buggy address belongs to the variable: afe4404_channel_leds+0x18/0xffffffffffffe9c0 This issue can be reproduce by singe command: $ cat /sys/bus/i2c/devices/0-0058/iio\:device0/in_intensity6_raw The array size of afe4404_channel_leds and afe4404_channel_offdacs are less than channels, so access with chan->address cause OOB read in afe4404_[read|write]_raw. Fix it by moving access before use them. Fixes: b36e8257641a ("iio: health/afe440x: Use regmap fields") Signed-off-by: Wei Yongjun Acked-by: Andrew Davis Link: https://lore.kernel.org/r/20221107152010.95937-1-weiyongjun@huaweicloud.com Signed-off-by: Jonathan Cameron Signed-off-by: Sasha Levin --- drivers/iio/health/afe4404.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/iio/health/afe4404.c b/drivers/iio/health/afe4404.c index 5e256b11ac87..29a906411bd8 100644 --- a/drivers/iio/health/afe4404.c +++ b/drivers/iio/health/afe4404.c @@ -258,20 +258,20 @@ static int afe4404_read_raw(struct iio_dev *indio_dev, int *val, int *val2, long mask) { struct afe4404_data *afe = iio_priv(indio_dev); - unsigned int value_reg = afe4404_channel_values[chan->address]; - unsigned int led_field = afe4404_channel_leds[chan->address]; - unsigned int offdac_field = afe4404_channel_offdacs[chan->address]; + unsigned int value_reg, led_field, offdac_field; int ret; switch (chan->type) { case IIO_INTENSITY: switch (mask) { case IIO_CHAN_INFO_RAW: + value_reg = afe4404_channel_values[chan->address]; ret = regmap_read(afe->regmap, value_reg, val); if (ret) return ret; return IIO_VAL_INT; case IIO_CHAN_INFO_OFFSET: + offdac_field = afe4404_channel_offdacs[chan->address]; ret = regmap_field_read(afe->fields[offdac_field], val); if (ret) return ret; @@ -281,6 +281,7 @@ static int afe4404_read_raw(struct iio_dev *indio_dev, case IIO_CURRENT: switch (mask) { case IIO_CHAN_INFO_RAW: + led_field = afe4404_channel_leds[chan->address]; ret = regmap_field_read(afe->fields[led_field], val); if (ret) return ret; @@ -303,19 +304,20 @@ static int afe4404_write_raw(struct iio_dev *indio_dev, int val, int val2, long mask) { struct afe4404_data *afe = iio_priv(indio_dev); - unsigned int led_field = afe4404_channel_leds[chan->address]; - unsigned int offdac_field = afe4404_channel_offdacs[chan->address]; + unsigned int led_field, offdac_field; switch (chan->type) { case IIO_INTENSITY: switch (mask) { case IIO_CHAN_INFO_OFFSET: + offdac_field = afe4404_channel_offdacs[chan->address]; return regmap_field_write(afe->fields[offdac_field], val); } break; case IIO_CURRENT: switch (mask) { case IIO_CHAN_INFO_RAW: + led_field = afe4404_channel_leds[chan->address]; return regmap_field_write(afe->fields[led_field], val); } break; From 12fcbd334ff268e063565231c2e7a0d10fc6fb77 Mon Sep 17 00:00:00 2001 From: Yang Yingliang Date: Sat, 12 Nov 2022 20:56:06 +0800 Subject: [PATCH 42/74] hwmon: (i5500_temp) fix missing pci_disable_device() [ Upstream commit 3b7f98f237528c496ea0b689bace0e35eec3e060 ] pci_disable_device() need be called while module exiting, switch to use pcim_enable(), pci_disable_device() will be called in pcim_release(). Fixes: ada072816be1 ("hwmon: (i5500_temp) New driver for the Intel 5500/5520/X58 chipsets") Signed-off-by: Yang Yingliang Link: https://lore.kernel.org/r/20221112125606.3751430-1-yangyingliang@huawei.com Signed-off-by: Guenter Roeck Signed-off-by: Sasha Levin --- drivers/hwmon/i5500_temp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/hwmon/i5500_temp.c b/drivers/hwmon/i5500_temp.c index 3e3ccbf18b4e..0064249fcc37 100644 --- a/drivers/hwmon/i5500_temp.c +++ b/drivers/hwmon/i5500_temp.c @@ -117,7 +117,7 @@ static int i5500_temp_probe(struct pci_dev *pdev, u32 tstimer; s8 tsfsc; - err = pci_enable_device(pdev); + err = pcim_enable_device(pdev); if (err) { dev_err(&pdev->dev, "Failed to enable device\n"); return err; From f2a13196ad41c6c2ab058279dffe6c97292e753a Mon Sep 17 00:00:00 2001 From: Gaosheng Cui Date: Thu, 17 Nov 2022 11:44:23 +0800 Subject: [PATCH 43/74] hwmon: (ibmpex) Fix possible UAF when ibmpex_register_bmc() fails [ Upstream commit e2a87785aab0dac190ac89be6a9ba955e2c634f2 ] Smatch report warning as follows: drivers/hwmon/ibmpex.c:509 ibmpex_register_bmc() warn: '&data->list' not removed from list If ibmpex_find_sensors() fails in ibmpex_register_bmc(), data will be freed, but data->list will not be removed from driver_data.bmc_data, then list traversal may cause UAF. Fix by removeing it from driver_data.bmc_data before free(). Fixes: 57c7c3a0fdea ("hwmon: IBM power meter driver") Signed-off-by: Gaosheng Cui Link: https://lore.kernel.org/r/20221117034423.2935739-1-cuigaosheng1@huawei.com Signed-off-by: Guenter Roeck Signed-off-by: Sasha Levin --- drivers/hwmon/ibmpex.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/hwmon/ibmpex.c b/drivers/hwmon/ibmpex.c index 21b9c72f16bd..26a898781371 100644 --- a/drivers/hwmon/ibmpex.c +++ b/drivers/hwmon/ibmpex.c @@ -517,6 +517,7 @@ static void ibmpex_register_bmc(int iface, struct device *dev) return; out_register: + list_del(&data->list); hwmon_device_unregister(data->hwmon_dev); out_user: ipmi_destroy_user(data->user); From 4d00230045ce1dd53dbe0aa0d15ef6e7402f0023 Mon Sep 17 00:00:00 2001 From: YueHaibing Date: Mon, 21 Nov 2022 19:22:04 +0800 Subject: [PATCH 44/74] net/mlx5: Fix uninitialized variable bug in outlen_write() [ Upstream commit 3f5769a074c13d8f08455e40586600419e02a880 ] If sscanf() return 0, outlen is uninitialized and used in kzalloc(), this is unexpected. We should return -EINVAL if the string is invalid. Fixes: e126ba97dba9 ("mlx5: Add driver for Mellanox Connect-IB adapters") Signed-off-by: YueHaibing Reviewed-by: Leon Romanovsky Signed-off-by: Saeed Mahameed Signed-off-by: Sasha Levin --- drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c index b6113620cb1a..043eec677b2c 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c @@ -1293,8 +1293,8 @@ static ssize_t outlen_write(struct file *filp, const char __user *buf, return -EFAULT; err = sscanf(outlen_str, "%d", &outlen); - if (err < 0) - return err; + if (err != 1) + return -EINVAL; ptr = kzalloc(outlen, GFP_KERNEL); if (!ptr) From 649ae29357e29e8f9c3cd09245b7fa493027a72f Mon Sep 17 00:00:00 2001 From: Zhang Changzhong Date: Fri, 11 Nov 2022 20:08:41 +0800 Subject: [PATCH 45/74] can: sja1000_isa: sja1000_isa_probe(): add missing free_sja1000dev() [ Upstream commit 92dfd9310a71d28cefe6a2d5174d43fab240e631 ] Add the missing free_sja1000dev() before return from sja1000_isa_probe() in the register_sja1000dev() error handling case. In addition, remove blanks before goto labels. Fixes: 2a6ba39ad6a2 ("can: sja1000: legacy SJA1000 ISA bus driver") Signed-off-by: Zhang Changzhong Link: https://lore.kernel.org/all/1668168521-5540-1-git-send-email-zhangchangzhong@huawei.com Signed-off-by: Marc Kleine-Budde Signed-off-by: Sasha Levin --- drivers/net/can/sja1000/sja1000_isa.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/net/can/sja1000/sja1000_isa.c b/drivers/net/can/sja1000/sja1000_isa.c index e97e6d35b300..5187fdabdca9 100644 --- a/drivers/net/can/sja1000/sja1000_isa.c +++ b/drivers/net/can/sja1000/sja1000_isa.c @@ -213,22 +213,24 @@ static int sja1000_isa_probe(struct platform_device *pdev) if (err) { dev_err(&pdev->dev, "registering %s failed (err=%d)\n", DRV_NAME, err); - goto exit_unmap; + goto exit_free; } dev_info(&pdev->dev, "%s device registered (reg_base=0x%p, irq=%d)\n", DRV_NAME, priv->reg_base, dev->irq); return 0; - exit_unmap: +exit_free: + free_sja1000dev(dev); +exit_unmap: if (mem[idx]) iounmap(base); - exit_release: +exit_release: if (mem[idx]) release_mem_region(mem[idx], iosize); else release_region(port[idx], iosize); - exit: +exit: return err; } From a88b8ffbcd39496cf47ff822e16d40573eccb4ab Mon Sep 17 00:00:00 2001 From: Zhang Changzhong Date: Fri, 11 Nov 2022 20:09:16 +0800 Subject: [PATCH 46/74] can: cc770: cc770_isa_probe(): add missing free_cc770dev() [ Upstream commit 62ec89e74099a3d6995988ed9f2f996b368417ec ] Add the missing free_cc770dev() before return from cc770_isa_probe() in the register_cc770dev() error handling case. In addition, remove blanks before goto labels. Fixes: 7e02e5433e00 ("can: cc770: legacy CC770 ISA bus driver") Signed-off-by: Zhang Changzhong Link: https://lore.kernel.org/all/1668168557-6024-1-git-send-email-zhangchangzhong@huawei.com Signed-off-by: Marc Kleine-Budde Signed-off-by: Sasha Levin --- drivers/net/can/cc770/cc770_isa.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/net/can/cc770/cc770_isa.c b/drivers/net/can/cc770/cc770_isa.c index e0d15711e9ac..8df613bc3be3 100644 --- a/drivers/net/can/cc770/cc770_isa.c +++ b/drivers/net/can/cc770/cc770_isa.c @@ -272,22 +272,24 @@ static int cc770_isa_probe(struct platform_device *pdev) if (err) { dev_err(&pdev->dev, "couldn't register device (err=%d)\n", err); - goto exit_unmap; + goto exit_free; } dev_info(&pdev->dev, "device registered (reg_base=0x%p, irq=%d)\n", priv->reg_base, dev->irq); return 0; - exit_unmap: +exit_free: + free_cc770dev(dev); +exit_unmap: if (mem[idx]) iounmap(base); - exit_release: +exit_release: if (mem[idx]) release_mem_region(mem[idx], iosize); else release_region(port[idx], iosize); - exit: +exit: return err; } From dd357c93b6a5f8aa9c71f739a4d4a36963f1972d Mon Sep 17 00:00:00 2001 From: Duoming Zhou Date: Wed, 23 Nov 2022 18:06:42 +0800 Subject: [PATCH 47/74] qlcnic: fix sleep-in-atomic-context bugs caused by msleep [ Upstream commit 8dbd6e4ce1b9c527921643d9e34f188a10d4e893 ] The watchdog timer is used to monitor whether the process of transmitting data is timeout. If we use qlcnic driver, the dev_watchdog() that is the timer handler of watchdog timer will call qlcnic_tx_timeout() to process the timeout. But the qlcnic_tx_timeout() calls msleep(), as a result, the sleep-in-atomic-context bugs will happen. The processes are shown below: (atomic context) dev_watchdog qlcnic_tx_timeout qlcnic_83xx_idc_request_reset qlcnic_83xx_lock_driver msleep --------------------------- (atomic context) dev_watchdog qlcnic_tx_timeout qlcnic_83xx_idc_request_reset qlcnic_83xx_lock_driver qlcnic_83xx_recover_driver_lock msleep Fix by changing msleep() to mdelay(), the mdelay() is busy-waiting and the bugs could be mitigated. Fixes: 629263acaea3 ("qlcnic: 83xx CNA inter driver communication mechanism") Signed-off-by: Duoming Zhou Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c index 59b77bb89147..1134060b6962 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c @@ -2992,7 +2992,7 @@ static void qlcnic_83xx_recover_driver_lock(struct qlcnic_adapter *adapter) QLCWRX(adapter->ahw, QLC_83XX_RECOVER_DRV_LOCK, val); dev_info(&adapter->pdev->dev, "%s: lock recovery initiated\n", __func__); - msleep(QLC_83XX_DRV_LOCK_RECOVERY_DELAY); + mdelay(QLC_83XX_DRV_LOCK_RECOVERY_DELAY); val = QLCRDX(adapter->ahw, QLC_83XX_RECOVER_DRV_LOCK); id = ((val >> 2) & 0xF); if (id == adapter->portnum) { @@ -3028,7 +3028,7 @@ int qlcnic_83xx_lock_driver(struct qlcnic_adapter *adapter) if (status) break; - msleep(QLC_83XX_DRV_LOCK_WAIT_DELAY); + mdelay(QLC_83XX_DRV_LOCK_WAIT_DELAY); i++; if (i == 1) From 8aaafe0f71314f46a066382a047ba8bb3840d273 Mon Sep 17 00:00:00 2001 From: Yang Yingliang Date: Wed, 23 Nov 2022 21:28:08 +0800 Subject: [PATCH 48/74] net: phy: fix null-ptr-deref while probe() failed [ Upstream commit 369eb2c9f1f72adbe91e0ea8efb130f0a2ba11a6 ] I got a null-ptr-deref report as following when doing fault injection test: BUG: kernel NULL pointer dereference, address: 0000000000000058 Oops: 0000 [#1] PREEMPT SMP KASAN PTI CPU: 1 PID: 253 Comm: 507-spi-dm9051 Tainted: G B N 6.1.0-rc3+ Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014 RIP: 0010:klist_put+0x2d/0xd0 Call Trace: klist_remove+0xf1/0x1c0 device_release_driver_internal+0x23e/0x2d0 bus_remove_device+0x1bd/0x240 device_del+0x357/0x770 phy_device_remove+0x11/0x30 mdiobus_unregister+0xa5/0x140 release_nodes+0x6a/0xa0 devres_release_all+0xf8/0x150 device_unbind_cleanup+0x19/0xd0 //probe path: phy_device_register() device_add() phy_connect phy_attach_direct() //set device driver probe() //it's failed, driver is not bound device_bind_driver() // probe failed, it's not called //remove path: phy_device_remove() device_del() device_release_driver_internal() __device_release_driver() //dev->drv is not NULL klist_remove() <- knode_driver is not added yet, cause null-ptr-deref In phy_attach_direct(), after setting the 'dev->driver', probe() fails, device_bind_driver() is not called, so the knode_driver->n_klist is not set, then it causes null-ptr-deref in __device_release_driver() while deleting device. Fix this by setting dev->driver to NULL in the error path in phy_attach_direct(). Fixes: e13934563db0 ("[PATCH] PHY Layer fixup") Signed-off-by: Yang Yingliang Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/phy/phy_device.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index a3ba95e96695..90dbf1b2a33a 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -948,6 +948,7 @@ int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, error_module_put: module_put(d->driver->owner); + d->driver = NULL; error_put_device: put_device(d); if (ndev_owner != bus->owner) From cfd099e5471bda4653b70391c4d6d7ce9c355b7b Mon Sep 17 00:00:00 2001 From: Yuan Can Date: Thu, 24 Nov 2022 07:09:17 +0000 Subject: [PATCH 49/74] net: net_netdev: Fix error handling in ntb_netdev_init_module() [ Upstream commit b8f79dccd38edf7db4911c353d9cd792ab13a327 ] The ntb_netdev_init_module() returns the ntb_transport_register_client() directly without checking its return value, if ntb_transport_register_client() failed, the NTB client device is not unregistered. Fix by unregister NTB client device when ntb_transport_register_client() failed. Fixes: 548c237c0a99 ("net: Add support for NTB virtual ethernet device") Signed-off-by: Yuan Can Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ntb_netdev.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/net/ntb_netdev.c b/drivers/net/ntb_netdev.c index 03009f1becdd..bd6c19ceab30 100644 --- a/drivers/net/ntb_netdev.c +++ b/drivers/net/ntb_netdev.c @@ -500,7 +500,14 @@ static int __init ntb_netdev_init_module(void) rc = ntb_transport_register_client_dev(KBUILD_MODNAME); if (rc) return rc; - return ntb_transport_register_client(&ntb_netdev_client); + + rc = ntb_transport_register_client(&ntb_netdev_client); + if (rc) { + ntb_transport_unregister_client_dev(KBUILD_MODNAME); + return rc; + } + + return 0; } module_init(ntb_netdev_init_module); From 0396227f4daf4792a6a8aaa3b7771dc25c4cd443 Mon Sep 17 00:00:00 2001 From: Wang Hai Date: Thu, 24 Nov 2022 16:10:05 +0800 Subject: [PATCH 50/74] net/9p: Fix a potential socket leak in p9_socket_open [ Upstream commit dcc14cfd7debe11b825cb077e75d91d2575b4cb8 ] Both p9_fd_create_tcp() and p9_fd_create_unix() will call p9_socket_open(). If the creation of p9_trans_fd fails, p9_fd_create_tcp() and p9_fd_create_unix() will return an error directly instead of releasing the cscoket, which will result in a socket leak. This patch adds sock_release() to fix the leak issue. Fixes: 6b18662e239a ("9p connect fixes") Signed-off-by: Wang Hai ACKed-by: Al Viro Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- net/9p/trans_fd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c index e70e843ee48f..7e484f5b140c 100644 --- a/net/9p/trans_fd.c +++ b/net/9p/trans_fd.c @@ -851,8 +851,10 @@ static int p9_socket_open(struct p9_client *client, struct socket *csocket) struct file *file; p = kzalloc(sizeof(struct p9_trans_fd), GFP_KERNEL); - if (!p) + if (!p) { + sock_release(csocket); return -ENOMEM; + } csocket->sk->sk_allocation = GFP_NOIO; file = sock_alloc_file(csocket, 0, NULL); From 8393ce5040803666bfa26a3a7bf41e44fab0ace9 Mon Sep 17 00:00:00 2001 From: YueHaibing Date: Fri, 25 Nov 2022 15:57:24 +0800 Subject: [PATCH 51/74] net: hsr: Fix potential use-after-free [ Upstream commit 7e177d32442b7ed08a9fa61b61724abc548cb248 ] The skb is delivered to netif_rx() which may free it, after calling this, dereferencing skb may trigger use-after-free. Fixes: f421436a591d ("net/hsr: Add support for the High-availability Seamless Redundancy protocol (HSRv0)") Signed-off-by: YueHaibing Link: https://lore.kernel.org/r/20221125075724.27912-1-yuehaibing@huawei.com Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- net/hsr/hsr_forward.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/net/hsr/hsr_forward.c b/net/hsr/hsr_forward.c index 04b5450c5a55..adfb49760678 100644 --- a/net/hsr/hsr_forward.c +++ b/net/hsr/hsr_forward.c @@ -207,17 +207,18 @@ static void hsr_deliver_master(struct sk_buff *skb, struct net_device *dev, struct hsr_node *node_src) { bool was_multicast_frame; - int res; + int res, recv_len; was_multicast_frame = (skb->pkt_type == PACKET_MULTICAST); hsr_addr_subst_source(node_src, skb); skb_pull(skb, ETH_HLEN); + recv_len = skb->len; res = netif_rx(skb); if (res == NET_RX_DROP) { dev->stats.rx_dropped++; } else { dev->stats.rx_packets++; - dev->stats.rx_bytes += skb->len; + dev->stats.rx_bytes += recv_len; if (was_multicast_frame) dev->stats.multicast++; } From ed5fd42211431c7f24af82027fc1d3422fbdea68 Mon Sep 17 00:00:00 2001 From: Willem de Bruijn Date: Mon, 28 Nov 2022 11:18:12 -0500 Subject: [PATCH 52/74] packet: do not set TP_STATUS_CSUM_VALID on CHECKSUM_COMPLETE [ Upstream commit b85f628aa158a653c006e9c1405a117baef8c868 ] CHECKSUM_COMPLETE signals that skb->csum stores the sum over the entire packet. It does not imply that an embedded l4 checksum field has been validated. Fixes: 682f048bd494 ("af_packet: pass checksum validation status to the user") Signed-off-by: Willem de Bruijn Link: https://lore.kernel.org/r/20221128161812.640098-1-willemdebruijn.kernel@gmail.com Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- net/packet/af_packet.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 2ae2801dd7be..c43a4f9404fe 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c @@ -2207,8 +2207,7 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev, if (skb->ip_summed == CHECKSUM_PARTIAL) status |= TP_STATUS_CSUMNOTREADY; else if (skb->pkt_type != PACKET_OUTGOING && - (skb->ip_summed == CHECKSUM_COMPLETE || - skb_csum_unnecessary(skb))) + skb_csum_unnecessary(skb)) status |= TP_STATUS_CSUM_VALID; if (snaplen > res) @@ -3468,8 +3467,7 @@ static int packet_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, if (skb->ip_summed == CHECKSUM_PARTIAL) aux.tp_status |= TP_STATUS_CSUMNOTREADY; else if (skb->pkt_type != PACKET_OUTGOING && - (skb->ip_summed == CHECKSUM_COMPLETE || - skb_csum_unnecessary(skb))) + skb_csum_unnecessary(skb)) aux.tp_status |= TP_STATUS_CSUM_VALID; aux.tp_len = origlen; From 4b61517c50305f932e3fc07fd7b0fb09a279b023 Mon Sep 17 00:00:00 2001 From: Yoshihiro Shimoda Date: Mon, 28 Nov 2022 15:56:04 +0900 Subject: [PATCH 53/74] net: ethernet: renesas: ravb: Fix promiscuous mode after system resumed [ Upstream commit d66233a312ec9013af3e37e4030b479a20811ec3 ] After system resumed on some environment board, the promiscuous mode is disabled because the SoC turned off. So, call ravb_set_rx_mode() in the ravb_resume() to fix the issue. Reported-by: Tho Vu Fixes: 0184165b2f42 ("ravb: add sleep PM suspend/resume support") Signed-off-by: Yoshihiro Shimoda Reviewed-by: Pavan Chebbi Reviewed-by: Sergey Shtylyov Link: https://lore.kernel.org/r/20221128065604.1864391-1-yoshihiro.shimoda.uh@renesas.com Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/net/ethernet/renesas/ravb_main.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index 5452fe4bf12a..2bebf39fe047 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -2183,6 +2183,7 @@ static int __maybe_unused ravb_resume(struct device *dev) ret = ravb_open(ndev); if (ret < 0) return ret; + ravb_set_rx_mode(ndev); netif_device_attach(ndev); } From fb503d077ff7b43913503eaf72995d1239028b99 Mon Sep 17 00:00:00 2001 From: Phil Auld Date: Thu, 17 Nov 2022 11:23:13 -0500 Subject: [PATCH 54/74] hwmon: (coretemp) Check for null before removing sysfs attrs [ Upstream commit a89ff5f5cc64b9fe7a992cf56988fd36f56ca82a ] If coretemp_add_core() gets an error then pdata->core_data[indx] is already NULL and has been kfreed. Don't pass that to sysfs_remove_group() as that will crash in sysfs_remove_group(). [Shortened for readability] [91854.020159] sysfs: cannot create duplicate filename '/devices/platform/coretemp.0/hwmon/hwmon2/temp20_label' [91855.126115] BUG: kernel NULL pointer dereference, address: 0000000000000188 [91855.165103] #PF: supervisor read access in kernel mode [91855.194506] #PF: error_code(0x0000) - not-present page [91855.224445] PGD 0 P4D 0 [91855.238508] Oops: 0000 [#1] PREEMPT SMP PTI ... [91855.342716] RIP: 0010:sysfs_remove_group+0xc/0x80 ... [91855.796571] Call Trace: [91855.810524] coretemp_cpu_offline+0x12b/0x1dd [coretemp] [91855.841738] ? coretemp_cpu_online+0x180/0x180 [coretemp] [91855.871107] cpuhp_invoke_callback+0x105/0x4b0 [91855.893432] cpuhp_thread_fun+0x8e/0x150 ... Fix this by checking for NULL first. Signed-off-by: Phil Auld Cc: linux-hwmon@vger.kernel.org Cc: Fenghua Yu Cc: Jean Delvare Cc: Guenter Roeck Link: https://lore.kernel.org/r/20221117162313.3164803-1-pauld@redhat.com Fixes: 199e0de7f5df3 ("hwmon: (coretemp) Merge pkgtemp with coretemp") Signed-off-by: Guenter Roeck Signed-off-by: Sasha Levin --- drivers/hwmon/coretemp.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c index be1e380fa1c3..9e81842cff7d 100644 --- a/drivers/hwmon/coretemp.c +++ b/drivers/hwmon/coretemp.c @@ -557,6 +557,10 @@ static void coretemp_remove_core(struct platform_data *pdata, { struct temp_data *tdata = pdata->core_data[indx]; + /* if we errored on add then this is already gone */ + if (!tdata) + return; + /* Remove the sysfs attributes */ sysfs_remove_group(&pdata->hwmon_dev->kobj, &tdata->attr_group); From bb75a0d1223d43f97089841aecb28a9b4de687a9 Mon Sep 17 00:00:00 2001 From: Yang Yingliang Date: Fri, 18 Nov 2022 17:33:03 +0800 Subject: [PATCH 55/74] hwmon: (coretemp) fix pci device refcount leak in nv1a_ram_new() [ Upstream commit 7dec14537c5906b8bf40fd6fd6d9c3850f8df11d ] As comment of pci_get_domain_bus_and_slot() says, it returns a pci device with refcount increment, when finish using it, the caller must decrement the reference count by calling pci_dev_put(). So call it after using to avoid refcount leak. Fixes: 14513ee696a0 ("hwmon: (coretemp) Use PCI host bridge ID to identify CPU if necessary") Signed-off-by: Yang Yingliang Link: https://lore.kernel.org/r/20221118093303.214163-1-yangyingliang@huawei.com Signed-off-by: Guenter Roeck Signed-off-by: Sasha Levin --- drivers/hwmon/coretemp.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c index 9e81842cff7d..7e796d68e23a 100644 --- a/drivers/hwmon/coretemp.c +++ b/drivers/hwmon/coretemp.c @@ -256,10 +256,13 @@ static int adjust_tjmax(struct cpuinfo_x86 *c, u32 id, struct device *dev) */ if (host_bridge && host_bridge->vendor == PCI_VENDOR_ID_INTEL) { for (i = 0; i < ARRAY_SIZE(tjmax_pci_table); i++) { - if (host_bridge->device == tjmax_pci_table[i].device) + if (host_bridge->device == tjmax_pci_table[i].device) { + pci_dev_put(host_bridge); return tjmax_pci_table[i].tjmax; + } } } + pci_dev_put(host_bridge); for (i = 0; i < ARRAY_SIZE(tjmax_table); i++) { if (strstr(c->x86_model_id, tjmax_table[i].id)) From 89840b12c8fad7200eb6478525c13261512c01be Mon Sep 17 00:00:00 2001 From: ChenXiaoSong Date: Wed, 16 Nov 2022 22:23:54 +0800 Subject: [PATCH 56/74] btrfs: qgroup: fix sleep from invalid context bug in btrfs_qgroup_inherit() [ Upstream commit f7e942b5bb35d8e3af54053d19a6bf04143a3955 ] Syzkaller reported BUG as follows: BUG: sleeping function called from invalid context at include/linux/sched/mm.h:274 Call Trace: dump_stack_lvl+0xcd/0x134 __might_resched.cold+0x222/0x26b kmem_cache_alloc+0x2e7/0x3c0 update_qgroup_limit_item+0xe1/0x390 btrfs_qgroup_inherit+0x147b/0x1ee0 create_subvol+0x4eb/0x1710 btrfs_mksubvol+0xfe5/0x13f0 __btrfs_ioctl_snap_create+0x2b0/0x430 btrfs_ioctl_snap_create_v2+0x25a/0x520 btrfs_ioctl+0x2a1c/0x5ce0 __x64_sys_ioctl+0x193/0x200 do_syscall_64+0x35/0x80 Fix this by calling qgroup_dirty() on @dstqgroup, and update limit item in btrfs_run_qgroups() later outside of the spinlock context. CC: stable@vger.kernel.org # 4.9+ Reviewed-by: Qu Wenruo Signed-off-by: ChenXiaoSong Reviewed-by: David Sterba Signed-off-by: David Sterba Signed-off-by: Sasha Levin --- fs/btrfs/qgroup.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c index d6795c6fdd66..a13a83ec6202 100644 --- a/fs/btrfs/qgroup.c +++ b/fs/btrfs/qgroup.c @@ -1990,14 +1990,7 @@ int btrfs_qgroup_inherit(struct btrfs_trans_handle *trans, dstgroup->rsv_rfer = inherit->lim.rsv_rfer; dstgroup->rsv_excl = inherit->lim.rsv_excl; - ret = update_qgroup_limit_item(trans, quota_root, dstgroup); - if (ret) { - fs_info->qgroup_flags |= BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT; - btrfs_info(fs_info, - "unable to update quota limit for %llu", - dstgroup->qgroupid); - goto unlock; - } + qgroup_dirty(fs_info, dstgroup); } if (srcid) { From 207af93a93d73b82472317429b1ac16ffa7cdc63 Mon Sep 17 00:00:00 2001 From: Tiezhu Yang Date: Sat, 19 Nov 2022 10:36:59 +0800 Subject: [PATCH 57/74] tools/vm/slabinfo-gnuplot: use "grep -E" instead of "egrep" commit a435874bf626f55d7147026b059008c8de89fbb8 upstream. The latest version of grep claims the egrep is now obsolete so the build now contains warnings that look like: egrep: warning: egrep is obsolescent; using grep -E fix this up by moving the related file to use "grep -E" instead. sed -i "s/egrep/grep -E/g" `grep egrep -rwl tools/vm` Here are the steps to install the latest grep: wget http://ftp.gnu.org/gnu/grep/grep-3.8.tar.gz tar xf grep-3.8.tar.gz cd grep-3.8 && ./configure && make sudo make install export PATH=/usr/local/bin:$PATH Link: https://lkml.kernel.org/r/1668825419-30584-1-git-send-email-yangtiezhu@loongson.cn Signed-off-by: Tiezhu Yang Reviewed-by: Sergey Senozhatsky Cc: Vlastimil Babka Cc: Signed-off-by: Andrew Morton Signed-off-by: Greg Kroah-Hartman --- tools/vm/slabinfo-gnuplot.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/vm/slabinfo-gnuplot.sh b/tools/vm/slabinfo-gnuplot.sh index 35b039864b77..8983443c535a 100644 --- a/tools/vm/slabinfo-gnuplot.sh +++ b/tools/vm/slabinfo-gnuplot.sh @@ -157,7 +157,7 @@ do_preprocess() let lines=3 out=`basename "$in"`"-slabs-by-loss" `cat "$in" | grep -A "$lines" 'Slabs sorted by loss' |\ - egrep -iv '\-\-|Name|Slabs'\ + grep -E -iv '\-\-|Name|Slabs'\ | awk '{print $1" "$4+$2*$3" "$4}' > "$out"` if [ $? -eq 0 ]; then do_slabs_plotting "$out" @@ -166,7 +166,7 @@ do_preprocess() let lines=3 out=`basename "$in"`"-slabs-by-size" `cat "$in" | grep -A "$lines" 'Slabs sorted by size' |\ - egrep -iv '\-\-|Name|Slabs'\ + grep -E -iv '\-\-|Name|Slabs'\ | awk '{print $1" "$4" "$4-$2*$3}' > "$out"` if [ $? -eq 0 ]; then do_slabs_plotting "$out" From 2f2c59506ae39496588ceb8b88bdbdbaed895d63 Mon Sep 17 00:00:00 2001 From: ZhangPeng Date: Sat, 19 Nov 2022 21:05:42 +0900 Subject: [PATCH 58/74] nilfs2: fix NULL pointer dereference in nilfs_palloc_commit_free_entry() commit f0a0ccda18d6fd826d7c7e7ad48a6ed61c20f8b4 upstream. Syzbot reported a null-ptr-deref bug: NILFS (loop0): segctord starting. Construction interval = 5 seconds, CP frequency < 30 seconds general protection fault, probably for non-canonical address 0xdffffc0000000002: 0000 [#1] PREEMPT SMP KASAN KASAN: null-ptr-deref in range [0x0000000000000010-0x0000000000000017] CPU: 1 PID: 3603 Comm: segctord Not tainted 6.1.0-rc2-syzkaller-00105-gb229b6ca5abb #0 Hardware name: Google Compute Engine/Google Compute Engine, BIOS Google 10/11/2022 RIP: 0010:nilfs_palloc_commit_free_entry+0xe5/0x6b0 fs/nilfs2/alloc.c:608 Code: 00 00 00 00 fc ff df 80 3c 02 00 0f 85 cd 05 00 00 48 b8 00 00 00 00 00 fc ff df 4c 8b 73 08 49 8d 7e 10 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 26 05 00 00 49 8b 46 10 be a6 00 00 00 48 c7 c7 RSP: 0018:ffffc90003dff830 EFLAGS: 00010212 RAX: dffffc0000000000 RBX: ffff88802594e218 RCX: 000000000000000d RDX: 0000000000000002 RSI: 0000000000002000 RDI: 0000000000000010 RBP: ffff888071880222 R08: 0000000000000005 R09: 000000000000003f R10: 000000000000000d R11: 0000000000000000 R12: ffff888071880158 R13: ffff88802594e220 R14: 0000000000000000 R15: 0000000000000004 FS: 0000000000000000(0000) GS:ffff8880b9b00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007fb1c08316a8 CR3: 0000000018560000 CR4: 0000000000350ee0 Call Trace: nilfs_dat_commit_free fs/nilfs2/dat.c:114 [inline] nilfs_dat_commit_end+0x464/0x5f0 fs/nilfs2/dat.c:193 nilfs_dat_commit_update+0x26/0x40 fs/nilfs2/dat.c:236 nilfs_btree_commit_update_v+0x87/0x4a0 fs/nilfs2/btree.c:1940 nilfs_btree_commit_propagate_v fs/nilfs2/btree.c:2016 [inline] nilfs_btree_propagate_v fs/nilfs2/btree.c:2046 [inline] nilfs_btree_propagate+0xa00/0xd60 fs/nilfs2/btree.c:2088 nilfs_bmap_propagate+0x73/0x170 fs/nilfs2/bmap.c:337 nilfs_collect_file_data+0x45/0xd0 fs/nilfs2/segment.c:568 nilfs_segctor_apply_buffers+0x14a/0x470 fs/nilfs2/segment.c:1018 nilfs_segctor_scan_file+0x3f4/0x6f0 fs/nilfs2/segment.c:1067 nilfs_segctor_collect_blocks fs/nilfs2/segment.c:1197 [inline] nilfs_segctor_collect fs/nilfs2/segment.c:1503 [inline] nilfs_segctor_do_construct+0x12fc/0x6af0 fs/nilfs2/segment.c:2045 nilfs_segctor_construct+0x8e3/0xb30 fs/nilfs2/segment.c:2379 nilfs_segctor_thread_construct fs/nilfs2/segment.c:2487 [inline] nilfs_segctor_thread+0x3c3/0xf30 fs/nilfs2/segment.c:2570 kthread+0x2e4/0x3a0 kernel/kthread.c:376 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:306 ... If DAT metadata file is corrupted on disk, there is a case where req->pr_desc_bh is NULL and blocknr is 0 at nilfs_dat_commit_end() during a b-tree operation that cascadingly updates ancestor nodes of the b-tree, because nilfs_dat_commit_alloc() for a lower level block can initialize the blocknr on the same DAT entry between nilfs_dat_prepare_end() and nilfs_dat_commit_end(). If this happens, nilfs_dat_commit_end() calls nilfs_dat_commit_free() without valid buffer heads in req->pr_desc_bh and req->pr_bitmap_bh, and causes the NULL pointer dereference above in nilfs_palloc_commit_free_entry() function, which leads to a crash. Fix this by adding a NULL check on req->pr_desc_bh and req->pr_bitmap_bh before nilfs_palloc_commit_free_entry() in nilfs_dat_commit_free(). This also calls nilfs_error() in that case to notify that there is a fatal flaw in the filesystem metadata and prevent further operations. Link: https://lkml.kernel.org/r/00000000000097c20205ebaea3d6@google.com Link: https://lkml.kernel.org/r/20221114040441.1649940-1-zhangpeng362@huawei.com Link: https://lkml.kernel.org/r/20221119120542.17204-1-konishi.ryusuke@gmail.com Signed-off-by: ZhangPeng Signed-off-by: Ryusuke Konishi Reported-by: syzbot+ebe05ee8e98f755f61d0@syzkaller.appspotmail.com Tested-by: Ryusuke Konishi Cc: Signed-off-by: Andrew Morton Signed-off-by: Greg Kroah-Hartman --- fs/nilfs2/dat.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fs/nilfs2/dat.c b/fs/nilfs2/dat.c index dffedb2f8817..275d40b033f9 100644 --- a/fs/nilfs2/dat.c +++ b/fs/nilfs2/dat.c @@ -120,6 +120,13 @@ static void nilfs_dat_commit_free(struct inode *dat, kunmap_atomic(kaddr); nilfs_dat_commit_entry(dat, req); + + if (unlikely(req->pr_desc_bh == NULL || req->pr_bitmap_bh == NULL)) { + nilfs_error(dat->i_sb, + "state inconsistency probably due to duplicate use of vblocknr = %llu", + (unsigned long long)req->pr_entry_nr); + return; + } nilfs_palloc_commit_free_entry(dat, req); } From bd8b9fb0d3aad2e07d6adf66b13916803ed0d03c Mon Sep 17 00:00:00 2001 From: James Morse Date: Wed, 30 Nov 2022 18:29:55 +0000 Subject: [PATCH 59/74] arm64: Fix panic() when Spectre-v2 causes Spectre-BHB to re-allocate KVM vectors Sami reports that linux panic()s when resuming from suspend to RAM. This is because when CPUs are brought back online, they re-enable any necessary mitigations. The Spectre-v2 and Spectre-BHB mitigations interact as both need to done by KVM when exiting a guest. Slots KVM can use as vectors are allocated, and templates for the mitigation are patched into the vector. This fails if a new slot needs to be allocated once the kernel has finished booting as it is no-longer possible to modify KVM's vectors: | root@adam:/sys/devices/system/cpu/cpu1# echo 1 > online | Unable to handle kernel write to read-only memory at virtual add> | Mem abort info: | ESR = 0x9600004e | Exception class = DABT (current EL), IL = 32 bits | SET = 0, FnV = 0 | EA = 0, S1PTW = 0 | Data abort info: | ISV = 0, ISS = 0x0000004e | CM = 0, WnR = 1 | swapper pgtable: 4k pages, 48-bit VAs, pgdp = 000000000f07a71c | [ffff800000b4b800] pgd=00000009ffff8803, pud=00000009ffff7803, p> | Internal error: Oops: 9600004e [#1] PREEMPT SMP | Modules linked in: | Process swapper/1 (pid: 0, stack limit = 0x0000000063153c53) | CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.19.252-dirty #14 | Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno De> | pstate: 000001c5 (nzcv dAIF -PAN -UAO) | pc : __memcpy+0x48/0x180 | lr : __copy_hyp_vect_bpi+0x64/0x90 | Call trace: | __memcpy+0x48/0x180 | kvm_setup_bhb_slot+0x204/0x2a8 | spectre_bhb_enable_mitigation+0x1b8/0x1d0 | __verify_local_cpu_caps+0x54/0xf0 | check_local_cpu_capabilities+0xc4/0x184 | secondary_start_kernel+0xb0/0x170 | Code: b8404423 b80044c3 36180064 f8408423 (f80084c3) | ---[ end trace 859bcacb09555348 ]--- | Kernel panic - not syncing: Attempted to kill the idle task! | SMP: stopping secondary CPUs | Kernel Offset: disabled | CPU features: 0x10,25806086 | Memory Limit: none | ---[ end Kernel panic - not syncing: Attempted to kill the idle ] This is only a problem on platforms where there is only one CPU that is vulnerable to both Spectre-v2 and Spectre-BHB. The Spectre-v2 mitigation identifies the slot it can re-use by the CPU's 'fn'. It unconditionally writes the slot number and 'template_start' pointer. The Spectre-BHB mitigation identifies slots it can re-use by the CPU's template_start pointer, which was previously clobbered by the Spectre-v2 mitigation. When there is only one CPU that is vulnerable to both issues, this causes Spectre-v2 to try to allocate a new slot, which fails. Change both mitigations to check whether they are changing the slot this CPU uses before writing the percpu variables again. This issue only exists in the stable backports for Spectre-BHB which have to use totally different infrastructure to mainline. Reported-by: Sami Lee Fixes: 4dd8aae585a5 ("arm64: Mitigate spectre style branch history side channels") Signed-off-by: James Morse Signed-off-by: Greg Kroah-Hartman --- arch/arm64/kernel/cpu_errata.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/arch/arm64/kernel/cpu_errata.c b/arch/arm64/kernel/cpu_errata.c index 17208f1b10a9..f26320103651 100644 --- a/arch/arm64/kernel/cpu_errata.c +++ b/arch/arm64/kernel/cpu_errata.c @@ -125,10 +125,12 @@ static void __install_bp_hardening_cb(bp_hardening_cb_t fn, __copy_hyp_vect_bpi(slot, hyp_vecs_start, hyp_vecs_end); } - __this_cpu_write(bp_hardening_data.hyp_vectors_slot, slot); - __this_cpu_write(bp_hardening_data.fn, fn); - __this_cpu_write(bp_hardening_data.template_start, hyp_vecs_start); - __hardenbp_enab = true; + if (fn != __this_cpu_read(bp_hardening_data.fn)) { + __this_cpu_write(bp_hardening_data.hyp_vectors_slot, slot); + __this_cpu_write(bp_hardening_data.fn, fn); + __this_cpu_write(bp_hardening_data.template_start, hyp_vecs_start); + __hardenbp_enab = true; + } spin_unlock(&bp_lock); } #else @@ -828,8 +830,11 @@ static void kvm_setup_bhb_slot(const char *hyp_vecs_start) __copy_hyp_vect_bpi(slot, hyp_vecs_start, hyp_vecs_end); } - __this_cpu_write(bp_hardening_data.hyp_vectors_slot, slot); - __this_cpu_write(bp_hardening_data.template_start, hyp_vecs_start); + if (hyp_vecs_start != __this_cpu_read(bp_hardening_data.template_start)) { + __this_cpu_write(bp_hardening_data.hyp_vectors_slot, slot); + __this_cpu_write(bp_hardening_data.template_start, + hyp_vecs_start); + } spin_unlock(&bp_lock); } #else From 844512da025d639cbdf4800d5ed9a7d0da5af494 Mon Sep 17 00:00:00 2001 From: James Morse Date: Wed, 30 Nov 2022 18:29:56 +0000 Subject: [PATCH 60/74] arm64: errata: Fix KVM Spectre-v2 mitigation selection for Cortex-A57/A72 Both the Spectre-v2 and Spectre-BHB mitigations involve running a sequence immediately after exiting a guest, before any branches. In the stable kernels these sequences are built by copying templates into an empty vector slot. For Spectre-BHB, Cortex-A57 and A72 require the branchy loop with k=8. If Spectre-v2 needs mitigating at the same time, a firmware call to EL3 is needed. The work EL3 does at this point is also enough to mitigate Spectre-BHB. When enabling the Spectre-BHB mitigation, spectre_bhb_enable_mitigation() should check if a slot has already been allocated for Spectre-v2, meaning no work is needed for Spectre-BHB. This check was missed in the earlier backport, add it. Fixes: 4dd8aae585a5 ("arm64: Mitigate spectre style branch history side channels") Signed-off-by: James Morse Signed-off-by: Greg Kroah-Hartman --- arch/arm64/kernel/cpu_errata.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kernel/cpu_errata.c b/arch/arm64/kernel/cpu_errata.c index f26320103651..ae11af9c8cbd 100644 --- a/arch/arm64/kernel/cpu_errata.c +++ b/arch/arm64/kernel/cpu_errata.c @@ -876,7 +876,13 @@ void spectre_bhb_enable_mitigation(const struct arm64_cpu_capabilities *entry) } else if (spectre_bhb_loop_affected(SCOPE_LOCAL_CPU)) { switch (spectre_bhb_loop_affected(SCOPE_SYSTEM)) { case 8: - kvm_setup_bhb_slot(__spectre_bhb_loop_k8_start); + /* + * A57/A72-r0 will already have selected the + * spectre-indirect vector, which is sufficient + * for BHB too. + */ + if (!__this_cpu_read(bp_hardening_data.fn)) + kvm_setup_bhb_slot(__spectre_bhb_loop_k8_start); break; case 24: kvm_setup_bhb_slot(__spectre_bhb_loop_k24_start); From e46adadf19248d59af3aa6bc52e09115bf479bf7 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Wed, 11 May 2022 14:41:36 +0100 Subject: [PATCH 61/74] ASoC: ops: Fix bounds check for _sx controls [ Upstream commit 698813ba8c580efb356ace8dbf55f61dac6063a8 ] For _sx controls the semantics of the max field is not the usual one, max is the number of steps rather than the maximum value. This means that our check in snd_soc_put_volsw_sx() needs to just check against the maximum value. Fixes: 4f1e50d6a9cf9c1b ("ASoC: ops: Reject out of bounds values in snd_soc_put_volsw_sx()") Signed-off-by: Mark Brown Link: https://lore.kernel.org/r/20220511134137.169575-1-broonie@kernel.org Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/soc-ops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/soc-ops.c b/sound/soc/soc-ops.c index 4fda8c24be29..5479927391d4 100644 --- a/sound/soc/soc-ops.c +++ b/sound/soc/soc-ops.c @@ -450,7 +450,7 @@ int snd_soc_put_volsw_sx(struct snd_kcontrol *kcontrol, val = ucontrol->value.integer.value[0]; if (mc->platform_max && val > mc->platform_max) return -EINVAL; - if (val > max - min) + if (val > max) return -EINVAL; if (val < 0) return -EINVAL; From 5a1038334c885cbc1ff321cdc6c1fcc5312748a0 Mon Sep 17 00:00:00 2001 From: Maxim Korotkov Date: Thu, 17 Nov 2022 15:30:34 +0300 Subject: [PATCH 62/74] pinctrl: single: Fix potential division by zero [ Upstream commit 64c150339e7f6c5cbbe8c17a56ef2b3902612798 ] There is a possibility of dividing by zero due to the pcs->bits_per_pin if pcs->fmask() also has a value of zero and called fls from asm-generic/bitops/builtin-fls.h or arch/x86/include/asm/bitops.h. The function pcs_probe() has the branch that assigned to fmask 0 before pcs_allocate_pin_table() was called Found by Linux Verification Center (linuxtesting.org) with SVACE. Fixes: 4e7e8017a80e ("pinctrl: pinctrl-single: enhance to configure multiple pins of different modules") Signed-off-by: Maxim Korotkov Reviewed-by: Tony Lindgren Link: https://lore.kernel.org/r/20221117123034.27383-1-korotkov.maxim.s@gmail.com Signed-off-by: Linus Walleij Signed-off-by: Sasha Levin --- drivers/pinctrl/pinctrl-single.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c index 01f42090cd03..d2180bf2da95 100644 --- a/drivers/pinctrl/pinctrl-single.c +++ b/drivers/pinctrl/pinctrl-single.c @@ -812,7 +812,7 @@ static int pcs_allocate_pin_table(struct pcs_device *pcs) mux_bytes = pcs->width / BITS_PER_BYTE; - if (pcs->bits_per_mux) { + if (pcs->bits_per_mux && pcs->fmask) { pcs->bits_per_pin = fls(pcs->fmask); nr_pins = (pcs->size * BITS_PER_BYTE) / pcs->bits_per_pin; num_pins_in_register = pcs->width / pcs->bits_per_pin; From d47bc9d7bcdbb9adc9703513d964b514fee5b0bf Mon Sep 17 00:00:00 2001 From: Xiongfeng Wang Date: Thu, 1 Dec 2022 12:01:27 +0800 Subject: [PATCH 63/74] iommu/vt-d: Fix PCI device refcount leak in dmar_dev_scope_init() [ Upstream commit 4bedbbd782ebbe7287231fea862c158d4f08a9e3 ] for_each_pci_dev() is implemented by pci_get_device(). The comment of pci_get_device() says that it will increase the reference count for the returned pci_dev and also decrease the reference count for the input pci_dev @from if it is not NULL. If we break for_each_pci_dev() loop with pdev not NULL, we need to call pci_dev_put() to decrease the reference count. Add the missing pci_dev_put() for the error path to avoid reference count leak. Fixes: 2e4552893038 ("iommu/vt-d: Unify the way to process DMAR device scope array") Signed-off-by: Xiongfeng Wang Link: https://lore.kernel.org/r/20221121113649.190393-3-wangxiongfeng2@huawei.com Signed-off-by: Lu Baolu Signed-off-by: Joerg Roedel Signed-off-by: Sasha Levin --- drivers/iommu/dmar.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/iommu/dmar.c b/drivers/iommu/dmar.c index d8b8cf36de31..fb03616f9ade 100644 --- a/drivers/iommu/dmar.c +++ b/drivers/iommu/dmar.c @@ -803,6 +803,7 @@ int __init dmar_dev_scope_init(void) info = dmar_alloc_pci_notify_info(dev, BUS_NOTIFY_ADD_DEVICE); if (!info) { + pci_dev_put(dev); return dmar_dev_scope_status; } else { dmar_pci_bus_add_dev(info); From d2c9e2ebafa14a564b28e237db8d90ab7bdbd061 Mon Sep 17 00:00:00 2001 From: Kuniyuki Iwashima Date: Thu, 6 Oct 2022 11:53:45 -0700 Subject: [PATCH 64/74] tcp/udp: Fix memory leak in ipv6_renew_options(). commit 3c52c6bb831f6335c176a0fc7214e26f43adbd11 upstream. syzbot reported a memory leak [0] related to IPV6_ADDRFORM. The scenario is that while one thread is converting an IPv6 socket into IPv4 with IPV6_ADDRFORM, another thread calls do_ipv6_setsockopt() and allocates memory to inet6_sk(sk)->XXX after conversion. Then, the converted sk with (tcp|udp)_prot never frees the IPv6 resources, which inet6_destroy_sock() should have cleaned up. setsockopt(IPV6_ADDRFORM) setsockopt(IPV6_DSTOPTS) +-----------------------+ +----------------------+ - do_ipv6_setsockopt(sk, ...) - sockopt_lock_sock(sk) - do_ipv6_setsockopt(sk, ...) - lock_sock(sk) ^._ called via tcpv6_prot - WRITE_ONCE(sk->sk_prot, &tcp_prot) before WRITE_ONCE() - xchg(&np->opt, NULL) - txopt_put(opt) - sockopt_release_sock(sk) - release_sock(sk) - sockopt_lock_sock(sk) - lock_sock(sk) - ipv6_set_opt_hdr(sk, ...) - ipv6_update_options(sk, opt) - xchg(&inet6_sk(sk)->opt, opt) ^._ opt is never freed. - sockopt_release_sock(sk) - release_sock(sk) Since IPV6_DSTOPTS allocates options under lock_sock(), we can avoid this memory leak by testing whether sk_family is changed by IPV6_ADDRFORM after acquiring the lock. This issue exists from the initial commit between IPV6_ADDRFORM and IPV6_PKTOPTIONS. [0]: BUG: memory leak unreferenced object 0xffff888009ab9f80 (size 96): comm "syz-executor583", pid 328, jiffies 4294916198 (age 13.034s) hex dump (first 32 bytes): 01 00 00 00 48 00 00 00 08 00 00 00 00 00 00 00 ....H........... 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ backtrace: [<000000002ee98ae1>] kmalloc include/linux/slab.h:605 [inline] [<000000002ee98ae1>] sock_kmalloc+0xb3/0x100 net/core/sock.c:2566 [<0000000065d7b698>] ipv6_renew_options+0x21e/0x10b0 net/ipv6/exthdrs.c:1318 [<00000000a8c756d7>] ipv6_set_opt_hdr net/ipv6/ipv6_sockglue.c:354 [inline] [<00000000a8c756d7>] do_ipv6_setsockopt.constprop.0+0x28b7/0x4350 net/ipv6/ipv6_sockglue.c:668 [<000000002854d204>] ipv6_setsockopt+0xdf/0x190 net/ipv6/ipv6_sockglue.c:1021 [<00000000e69fdcf8>] tcp_setsockopt+0x13b/0x2620 net/ipv4/tcp.c:3789 [<0000000090da4b9b>] __sys_setsockopt+0x239/0x620 net/socket.c:2252 [<00000000b10d192f>] __do_sys_setsockopt net/socket.c:2263 [inline] [<00000000b10d192f>] __se_sys_setsockopt net/socket.c:2260 [inline] [<00000000b10d192f>] __x64_sys_setsockopt+0xbe/0x160 net/socket.c:2260 [<000000000a80d7aa>] do_syscall_x64 arch/x86/entry/common.c:50 [inline] [<000000000a80d7aa>] do_syscall_64+0x38/0x90 arch/x86/entry/common.c:80 [<000000004562b5c6>] entry_SYSCALL_64_after_hwframe+0x63/0xcd Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Reported-by: syzbot Signed-off-by: Kuniyuki Iwashima Signed-off-by: Jakub Kicinski Signed-off-by: Ovidiu Panait Signed-off-by: Greg Kroah-Hartman --- net/ipv6/ipv6_sockglue.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c index 622063438953..fecbea8d4ec3 100644 --- a/net/ipv6/ipv6_sockglue.c +++ b/net/ipv6/ipv6_sockglue.c @@ -165,6 +165,12 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname, rtnl_lock(); lock_sock(sk); + /* Another thread has converted the socket into IPv4 with + * IPV6_ADDRFORM concurrently. + */ + if (unlikely(sk->sk_family != AF_INET6)) + goto unlock; + switch (optname) { case IPV6_ADDRFORM: @@ -897,6 +903,7 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname, break; } +unlock: release_sock(sk); if (needs_rtnl) rtnl_unlock(); From b1ccb4e09c04c661c681284b9e1dc7fdf3061d53 Mon Sep 17 00:00:00 2001 From: Ulrich Hecht Date: Fri, 2 Dec 2022 05:42:53 +0100 Subject: [PATCH 65/74] Revert "fbdev: fb_pm2fb: Avoid potential divide by zero error" This reverts commit 6577e903a9e193ad70f2db92eba57c4f335afd1a. It's a duplicate of a commit that is already in this tree (0f1174f4972ea9fad6becf8881d71adca8e9ca91). Signed-off-by: Ulrich Hecht Signed-off-by: Greg Kroah-Hartman --- drivers/video/fbdev/pm2fb.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/video/fbdev/pm2fb.c b/drivers/video/fbdev/pm2fb.c index 50b569d047b1..9b32b9fc44a5 100644 --- a/drivers/video/fbdev/pm2fb.c +++ b/drivers/video/fbdev/pm2fb.c @@ -619,11 +619,6 @@ static int pm2fb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) return -EINVAL; } - if (!var->pixclock) { - DPRINTK("pixclock is zero\n"); - return -EINVAL; - } - if (PICOS2KHZ(var->pixclock) > PM2_MAX_PIXCLOCK) { DPRINTK("pixclock too high (%ldKHz)\n", PICOS2KHZ(var->pixclock)); From bff78cbe1598b5ee3f3206124b5ade45ece1f5b6 Mon Sep 17 00:00:00 2001 From: Pawan Gupta Date: Thu, 1 Dec 2022 20:23:12 -0800 Subject: [PATCH 66/74] x86/tsx: Add a feature bit for TSX control MSR support commit aaa65d17eec372c6a9756833f3964ba05b05ea14 upstream. Support for the TSX control MSR is enumerated in MSR_IA32_ARCH_CAPABILITIES. This is different from how other CPU features are enumerated i.e. via CPUID. Currently, a call to tsx_ctrl_is_supported() is required for enumerating the feature. In the absence of a feature bit for TSX control, any code that relies on checking feature bits directly will not work. In preparation for adding a feature bit check in MSR save/restore during suspend/resume, set a new feature bit X86_FEATURE_TSX_CTRL when MSR_IA32_TSX_CTRL is present. [ bp: Remove tsx_ctrl_is_supported()] [Pawan: Resolved conflicts in backport; Removed parts of commit message referring to removed function tsx_ctrl_is_supported()] Suggested-by: Andrew Cooper Signed-off-by: Pawan Gupta Signed-off-by: Borislav Petkov Reviewed-by: Dave Hansen Cc: Link: https://lore.kernel.org/r/de619764e1d98afbb7a5fa58424f1278ede37b45.1668539735.git.pawan.kumar.gupta@linux.intel.com Signed-off-by: Greg Kroah-Hartman --- arch/x86/include/asm/cpufeatures.h | 1 + arch/x86/kernel/cpu/tsx.c | 33 +++++++++++++----------------- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h index a033fa5c596d..429e6fc5069f 100644 --- a/arch/x86/include/asm/cpufeatures.h +++ b/arch/x86/include/asm/cpufeatures.h @@ -196,6 +196,7 @@ #define X86_FEATURE_FENCE_SWAPGS_KERNEL ( 7*32+11) /* "" LFENCE in kernel entry SWAPGS path */ #define X86_FEATURE_RETPOLINE ( 7*32+12) /* "" Generic Retpoline mitigation for Spectre variant 2 */ #define X86_FEATURE_RETPOLINE_LFENCE ( 7*32+13) /* "" Use LFENCE for Spectre variant 2 */ +#define X86_FEATURE_MSR_TSX_CTRL ( 7*32+14) /* "" MSR IA32_TSX_CTRL (Intel) implemented */ #define X86_FEATURE_MSR_SPEC_CTRL ( 7*32+16) /* "" MSR SPEC_CTRL is implemented */ #define X86_FEATURE_SSBD ( 7*32+17) /* Speculative Store Bypass Disable */ diff --git a/arch/x86/kernel/cpu/tsx.c b/arch/x86/kernel/cpu/tsx.c index 032509adf9de..88a553ee7704 100644 --- a/arch/x86/kernel/cpu/tsx.c +++ b/arch/x86/kernel/cpu/tsx.c @@ -55,24 +55,6 @@ void tsx_enable(void) wrmsrl(MSR_IA32_TSX_CTRL, tsx); } -static bool __init tsx_ctrl_is_supported(void) -{ - u64 ia32_cap = x86_read_arch_cap_msr(); - - /* - * TSX is controlled via MSR_IA32_TSX_CTRL. However, support for this - * MSR is enumerated by ARCH_CAP_TSX_MSR bit in MSR_IA32_ARCH_CAPABILITIES. - * - * TSX control (aka MSR_IA32_TSX_CTRL) is only available after a - * microcode update on CPUs that have their MSR_IA32_ARCH_CAPABILITIES - * bit MDS_NO=1. CPUs with MDS_NO=0 are not planned to get - * MSR_IA32_TSX_CTRL support even after a microcode update. Thus, - * tsx= cmdline requests will do nothing on CPUs without - * MSR_IA32_TSX_CTRL support. - */ - return !!(ia32_cap & ARCH_CAP_TSX_CTRL_MSR); -} - static enum tsx_ctrl_states x86_get_tsx_auto_mode(void) { if (boot_cpu_has_bug(X86_BUG_TAA)) @@ -86,9 +68,22 @@ void __init tsx_init(void) char arg[5] = {}; int ret; - if (!tsx_ctrl_is_supported()) + /* + * TSX is controlled via MSR_IA32_TSX_CTRL. However, support for this + * MSR is enumerated by ARCH_CAP_TSX_MSR bit in MSR_IA32_ARCH_CAPABILITIES. + * + * TSX control (aka MSR_IA32_TSX_CTRL) is only available after a + * microcode update on CPUs that have their MSR_IA32_ARCH_CAPABILITIES + * bit MDS_NO=1. CPUs with MDS_NO=0 are not planned to get + * MSR_IA32_TSX_CTRL support even after a microcode update. Thus, + * tsx= cmdline requests will do nothing on CPUs without + * MSR_IA32_TSX_CTRL support. + */ + if (!(x86_read_arch_cap_msr() & ARCH_CAP_TSX_CTRL_MSR)) return; + setup_force_cpu_cap(X86_FEATURE_MSR_TSX_CTRL); + ret = cmdline_find_option(boot_command_line, "tsx", arg, sizeof(arg)); if (ret >= 0) { if (!strcmp(arg, "on")) { From fee642b7337815e8645ddf204cc532d8f549b70a Mon Sep 17 00:00:00 2001 From: Pawan Gupta Date: Thu, 1 Dec 2022 20:23:18 -0800 Subject: [PATCH 67/74] x86/pm: Add enumeration check before spec MSRs save/restore setup commit 50bcceb7724e471d9b591803889df45dcbb584bc upstream. pm_save_spec_msr() keeps a list of all the MSRs which _might_ need to be saved and restored at hibernate and resume. However, it has zero awareness of CPU support for these MSRs. It mostly works by unconditionally attempting to manipulate these MSRs and relying on rdmsrl_safe() being able to handle a #GP on CPUs where the support is unavailable. However, it's possible for reads (RDMSR) to be supported for a given MSR while writes (WRMSR) are not. In this case, msr_build_context() sees a successful read (RDMSR) and marks the MSR as valid. Then, later, a write (WRMSR) fails, producing a nasty (but harmless) error message. This causes restore_processor_state() to try and restore it, but writing this MSR is not allowed on the Intel Atom N2600 leading to: unchecked MSR access error: WRMSR to 0x122 (tried to write 0x0000000000000002) \ at rIP: 0xffffffff8b07a574 (native_write_msr+0x4/0x20) Call Trace: restore_processor_state x86_acpi_suspend_lowlevel acpi_suspend_enter suspend_devices_and_enter pm_suspend.cold state_store kernfs_fop_write_iter vfs_write ksys_write do_syscall_64 ? do_syscall_64 ? up_read ? lock_is_held_type ? asm_exc_page_fault ? lockdep_hardirqs_on entry_SYSCALL_64_after_hwframe To fix this, add the corresponding X86_FEATURE bit for each MSR. Avoid trying to manipulate the MSR when the feature bit is clear. This required adding a X86_FEATURE bit for MSRs that do not have one already, but it's a small price to pay. [ bp: Move struct msr_enumeration inside the only function that uses it. ] [Pawan: Resolve build issue in backport] Fixes: 73924ec4d560 ("x86/pm: Save the MSR validity status at context setup") Reported-by: Hans de Goede Signed-off-by: Pawan Gupta Signed-off-by: Borislav Petkov Reviewed-by: Dave Hansen Acked-by: Rafael J. Wysocki Cc: Link: https://lore.kernel.org/r/c24db75d69df6e66c0465e13676ad3f2837a2ed8.1668539735.git.pawan.kumar.gupta@linux.intel.com Signed-off-by: Greg Kroah-Hartman --- arch/x86/power/cpu.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/arch/x86/power/cpu.c b/arch/x86/power/cpu.c index 4c073926ab93..2f32cdba589a 100644 --- a/arch/x86/power/cpu.c +++ b/arch/x86/power/cpu.c @@ -520,16 +520,23 @@ static int pm_cpu_check(const struct x86_cpu_id *c) static void pm_save_spec_msr(void) { - u32 spec_msr_id[] = { - MSR_IA32_SPEC_CTRL, - MSR_IA32_TSX_CTRL, - MSR_TSX_FORCE_ABORT, - MSR_IA32_MCU_OPT_CTRL, - MSR_AMD64_LS_CFG, - MSR_AMD64_DE_CFG, + struct msr_enumeration { + u32 msr_no; + u32 feature; + } msr_enum[] = { + { MSR_IA32_SPEC_CTRL, X86_FEATURE_MSR_SPEC_CTRL }, + { MSR_IA32_TSX_CTRL, X86_FEATURE_MSR_TSX_CTRL }, + { MSR_TSX_FORCE_ABORT, X86_FEATURE_TSX_FORCE_ABORT }, + { MSR_IA32_MCU_OPT_CTRL, X86_FEATURE_SRBDS_CTRL }, + { MSR_AMD64_LS_CFG, X86_FEATURE_LS_CFG_SSBD }, + { MSR_AMD64_DE_CFG, X86_FEATURE_LFENCE_RDTSC }, }; + int i; - msr_build_context(spec_msr_id, ARRAY_SIZE(spec_msr_id)); + for (i = 0; i < ARRAY_SIZE(msr_enum); i++) { + if (boot_cpu_has(msr_enum[i].feature)) + msr_build_context(&msr_enum[i].msr_no, 1); + } } static int pm_check_save_msr(void) From c834df40af8ec156e8c3c388a08ff7381cd90d80 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Mon, 31 Oct 2022 16:10:32 -0700 Subject: [PATCH 68/74] Bluetooth: L2CAP: Fix accepting connection request for invalid SPSM MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 711f8c3fb3db61897080468586b970c87c61d9e4 upstream. The Bluetooth spec states that the valid range for SPSM is from 0x0001-0x00ff so it is invalid to accept values outside of this range: BLUETOOTH CORE SPECIFICATION Version 5.3 | Vol 3, Part A page 1059: Table 4.15: L2CAP_LE_CREDIT_BASED_CONNECTION_REQ SPSM ranges CVE: CVE-2022-42896 CC: stable@vger.kernel.org Reported-by: Tamás Koczka Signed-off-by: Luiz Augusto von Dentz Reviewed-by: Tedd Ho-Jeong An Signed-off-by: Greg Kroah-Hartman --- net/bluetooth/l2cap_core.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index c230f89e7238..5e7fb30b2320 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c @@ -5543,6 +5543,19 @@ static int l2cap_le_connect_req(struct l2cap_conn *conn, BT_DBG("psm 0x%2.2x scid 0x%4.4x mtu %u mps %u", __le16_to_cpu(psm), scid, mtu, mps); + /* BLUETOOTH CORE SPECIFICATION Version 5.3 | Vol 3, Part A + * page 1059: + * + * Valid range: 0x0001-0x00ff + * + * Table 4.15: L2CAP_LE_CREDIT_BASED_CONNECTION_REQ SPSM ranges + */ + if (!psm || __le16_to_cpu(psm) > L2CAP_PSM_LE_DYN_END) { + result = L2CAP_CR_BAD_PSM; + chan = NULL; + goto response; + } + /* Check if we have socket listening on psm */ pchan = l2cap_global_chan_by_psm(BT_LISTEN, psm, &conn->hcon->src, &conn->hcon->dst, LE_LINK); From 0c7cb2f6442de0272493c3c58085a137322bc4f4 Mon Sep 17 00:00:00 2001 From: Michael Kelley Date: Sun, 4 Dec 2022 13:52:01 -0800 Subject: [PATCH 69/74] x86/ioremap: Fix page aligned size calculation in __ioremap_caller() [ Upstream commit 4dbd6a3e90e03130973688fd79e19425f720d999 ] Current code re-calculates the size after aligning the starting and ending physical addresses on a page boundary. But the re-calculation also embeds the masking of high order bits that exceed the size of the physical address space (via PHYSICAL_PAGE_MASK). If the masking removes any high order bits, the size calculation results in a huge value that is likely to immediately fail. Fix this by re-calculating the page-aligned size first. Then mask any high order bits using PHYSICAL_PAGE_MASK. Fixes: ffa71f33a820 ("x86, ioremap: Fix incorrect physical address handling in PAE mode") Signed-off-by: Michael Kelley Signed-off-by: Borislav Petkov Acked-by: Dave Hansen Cc: Link: https://lore.kernel.org/r/1668624097-14884-2-git-send-email-mikelley@microsoft.com Signed-off-by: Sasha Levin --- arch/x86/mm/ioremap.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c index ecae9ac216fa..696fd6fdc107 100644 --- a/arch/x86/mm/ioremap.c +++ b/arch/x86/mm/ioremap.c @@ -126,9 +126,15 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr, * Mappings have to be page-aligned */ offset = phys_addr & ~PAGE_MASK; - phys_addr &= PHYSICAL_PAGE_MASK; + phys_addr &= PAGE_MASK; size = PAGE_ALIGN(last_addr+1) - phys_addr; + /* + * Mask out any bits not part of the actual physical + * address, like memory encryption bits. + */ + phys_addr &= PHYSICAL_PAGE_MASK; + retval = reserve_memtype(phys_addr, (u64)phys_addr + size, pcm, &new_pcm); if (retval) { From 32646215df00b5dbc79bbeb4df69189fc2a0b234 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Mon, 5 Dec 2022 11:33:40 -0800 Subject: [PATCH 70/74] proc: avoid integer type confusion in get_proc_long commit e6cfaf34be9fcd1a8285a294e18986bfc41a409c upstream. proc_get_long() is passed a size_t, but then assigns it to an 'int' variable for the length. Let's not do that, even if our IO paths are limited to MAX_RW_COUNT (exactly because of these kinds of type errors). So do the proper test in the rigth type. Reported-by: Kyle Zeng Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- kernel/sysctl.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 184d462339e6..bbd0876e100b 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -2081,13 +2081,12 @@ static int proc_get_long(char **buf, size_t *size, unsigned long *val, bool *neg, const char *perm_tr, unsigned perm_tr_len, char *tr) { - int len; char *p, tmp[TMPBUFLEN]; + ssize_t len = *size; - if (!*size) + if (len <= 0) return -EINVAL; - len = *size; if (len > TMPBUFLEN - 1) len = TMPBUFLEN - 1; From 6e3644aca0bcb572e461ace04d7045beeebb4aaa Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Mon, 5 Dec 2022 12:09:06 -0800 Subject: [PATCH 71/74] proc: proc_skip_spaces() shouldn't think it is working on C strings commit bce9332220bd677d83b19d21502776ad555a0e73 upstream. proc_skip_spaces() seems to think it is working on C strings, and ends up being just a wrapper around skip_spaces() with a really odd calling convention. Instead of basing it on skip_spaces(), it should have looked more like proc_skip_char(), which really is the exact same function (except it skips a particular character, rather than whitespace). So use that as inspiration, odd coding and all. Now the calling convention actually makes sense and works for the intended purpose. Reported-and-tested-by: Kyle Zeng Acked-by: Eric Dumazet Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- kernel/sysctl.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/kernel/sysctl.c b/kernel/sysctl.c index bbd0876e100b..9890f93a56fb 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -2041,13 +2041,14 @@ int proc_dostring(struct ctl_table *table, int write, (char __user *)buffer, lenp, ppos); } -static size_t proc_skip_spaces(char **buf) +static void proc_skip_spaces(char **buf, size_t *size) { - size_t ret; - char *tmp = skip_spaces(*buf); - ret = tmp - *buf; - *buf = tmp; - return ret; + while (*size) { + if (!isspace(**buf)) + break; + (*size)--; + (*buf)++; + } } static void proc_skip_char(char **buf, size_t *size, const char v) @@ -2260,7 +2261,7 @@ static int __do_proc_dointvec(void *tbl_data, struct ctl_table *table, bool neg; if (write) { - left -= proc_skip_spaces(&p); + proc_skip_spaces(&p, &left); if (!left) break; @@ -2291,7 +2292,7 @@ static int __do_proc_dointvec(void *tbl_data, struct ctl_table *table, if (!write && !first && left && !err) err = proc_put_char(&buffer, &left, '\n'); if (write && !err && left) - left -= proc_skip_spaces(&p); + proc_skip_spaces(&p, &left); if (write) { kfree(kbuf); if (first) @@ -2543,7 +2544,7 @@ static int __do_proc_doulongvec_minmax(void *data, struct ctl_table *table, int if (write) { bool neg; - left -= proc_skip_spaces(&p); + proc_skip_spaces(&p, &left); if (!left) break; @@ -2576,7 +2577,7 @@ static int __do_proc_doulongvec_minmax(void *data, struct ctl_table *table, int if (!write && !first && left && !err) err = proc_put_char(&buffer, &left, '\n'); if (write && !err) - left -= proc_skip_spaces(&p); + proc_skip_spaces(&p, &left); if (write) { kfree(kbuf); if (first) From 623465389a642cf1f43081c82f105d81ca4a96b0 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Wed, 30 Nov 2022 16:10:52 -0800 Subject: [PATCH 72/74] v4l2: don't fall back to follow_pfn() if pin_user_pages_fast() fails commit 6647e76ab623b2b3fb2efe03a86e9c9046c52c33 upstream. The V4L2_MEMORY_USERPTR interface is long deprecated and shouldn't be used (and is discouraged for any modern v4l drivers). And Seth Jenkins points out that the fallback to VM_PFNMAP/VM_IO is fundamentally racy and dangerous. Note that it's not even a case that should trigger, since any normal user pointer logic ends up just using the pin_user_pages_fast() call that does the proper page reference counting. That's not the problem case, only if you try to use special device mappings do you have any issues. Normally I'd just remove this during the merge window, but since Seth pointed out the problem cases, we really want to know as soon as possible if there are actually any users of this odd special case of a legacy interface. Neither Hans nor Mauro seem to think that such mis-uses of the old legacy interface should exist. As Mauro says: "See, V4L2 has actually 4 streaming APIs: - Kernel-allocated mmap (usually referred simply as just mmap); - USERPTR mmap; - read(); - dmabuf; The USERPTR is one of the oldest way to use it, coming from V4L version 1 times, and by far the least used one" And Hans chimed in on the USERPTR interface: "To be honest, I wouldn't mind if it goes away completely, but that's a bit of a pipe dream right now" but while removing this legacy interface entirely may be a pipe dream we can at least try to remove the unlikely (and actively broken) case of using special device mappings for USERPTR accesses. This replaces it with a WARN_ONCE() that we can remove once we've hopefully confirmed that no actual users exist. NOTE! Longer term, this means that a 'struct frame_vector' only ever contains proper page pointers, and all the games we have with converting them to pages can go away (grep for 'frame_vector_to_pages()' and the uses of 'vec->is_pfns'). But this is just the first step, to verify that this code really is all dead, and do so as quickly as possible. Reported-by: Seth Jenkins Acked-by: Hans Verkuil Acked-by: Mauro Carvalho Chehab Cc: David Hildenbrand Cc: Jan Kara Signed-off-by: Linus Torvalds Signed-off-by: Sergey Senozhatsky Signed-off-by: Greg Kroah-Hartman --- mm/frame_vector.c | 31 ++++++------------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/mm/frame_vector.c b/mm/frame_vector.c index d73eed0443f6..aa5526e62c5e 100644 --- a/mm/frame_vector.c +++ b/mm/frame_vector.c @@ -36,7 +36,6 @@ int get_vaddr_frames(unsigned long start, unsigned int nr_frames, struct mm_struct *mm = current->mm; struct vm_area_struct *vma; int ret = 0; - int err; int locked; if (nr_frames == 0) @@ -71,32 +70,14 @@ int get_vaddr_frames(unsigned long start, unsigned int nr_frames, vec->is_pfns = false; ret = get_user_pages_locked(start, nr_frames, gup_flags, (struct page **)(vec->ptrs), &locked); - goto out; + if (likely(ret > 0)) + goto out; } - vec->got_ref = false; - vec->is_pfns = true; - do { - unsigned long *nums = frame_vector_pfns(vec); - - while (ret < nr_frames && start + PAGE_SIZE <= vma->vm_end) { - err = follow_pfn(vma, start, &nums[ret]); - if (err) { - if (ret == 0) - ret = err; - goto out; - } - start += PAGE_SIZE; - ret++; - } - /* - * We stop if we have enough pages or if VMA doesn't completely - * cover the tail page. - */ - if (ret >= nr_frames || start < vma->vm_end) - break; - vma = find_vma_intersection(mm, start, start + 1); - } while (vma && vma->vm_flags & (VM_IO | VM_PFNMAP)); + /* This used to (racily) return non-refcounted pfns. Let people know */ + WARN_ONCE(1, "get_vaddr_frames() cannot follow VM_IO mapping"); + vec->nr_frames = 0; + out: if (locked) up_read(&mm->mmap_sem); From b6097015eea4e9f1e0288d93c691f83b864efe11 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 8 Dec 2022 11:15:42 +0100 Subject: [PATCH 73/74] Linux 4.9.335 Link: https://lore.kernel.org/r/20221205190758.073114639@linuxfoundation.org Tested-by: Shuah Khan Tested-by: Pavel Machek (CIP) Link: https://lore.kernel.org/r/20221206124043.386388226@linuxfoundation.org Tested-by: Jon Hunter Tested-by: Florian Fainelli Tested-by: Pavel Machek (CIP) Tested-by: Linux Kernel Functional Testing Tested-by: Guenter Roeck Signed-off-by: Greg Kroah-Hartman --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index fb1be32eebce..36aed335c6b9 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 9 -SUBLEVEL = 334 +SUBLEVEL = 335 EXTRAVERSION = NAME = Roaring Lionus From a56217891ac86bc54504c1b8f1f576c04ee77a2d Mon Sep 17 00:00:00 2001 From: jzinferno Date: Fri, 9 Dec 2022 18:02:24 +0000 Subject: [PATCH 74/74] Revert "sdm710: Enable CONFIG_SUSPEND_SKIP_SYNC" This reverts commit ce870841463f430ac717424d002ae1e36560f0bc. --- arch/arm64/configs/jd2019_defconfig | 1 - arch/arm64/configs/kunlun2_defconfig | 1 - 2 files changed, 2 deletions(-) diff --git a/arch/arm64/configs/jd2019_defconfig b/arch/arm64/configs/jd2019_defconfig index 0cc99eef38d0..349ea456437c 100644 --- a/arch/arm64/configs/jd2019_defconfig +++ b/arch/arm64/configs/jd2019_defconfig @@ -93,7 +93,6 @@ CONFIG_BUILD_ARM64_DT_OVERLAY=y # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set CONFIG_COMPAT=y CONFIG_COMPAT_VDSO=y -CONFIG_SUSPEND_SKIP_SYNC=y CONFIG_PM_AUTOSLEEP=y CONFIG_PM_WAKELOCKS=y CONFIG_PM_WAKELOCKS_LIMIT=0 diff --git a/arch/arm64/configs/kunlun2_defconfig b/arch/arm64/configs/kunlun2_defconfig index e583cb5336b6..a0baf2c1dd20 100644 --- a/arch/arm64/configs/kunlun2_defconfig +++ b/arch/arm64/configs/kunlun2_defconfig @@ -95,7 +95,6 @@ CONFIG_BUILD_ARM64_DT_OVERLAY=y # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set CONFIG_COMPAT=y CONFIG_COMPAT_VDSO=y -CONFIG_SUSPEND_SKIP_SYNC=y CONFIG_PM_AUTOSLEEP=y CONFIG_PM_WAKELOCKS=y CONFIG_PM_WAKELOCKS_LIMIT=0