From 17a627ec8245163059585da9ce7a768d1f4bd3ac Mon Sep 17 00:00:00 2001 From: Rui Salvaterra Date: Tue, 23 Feb 2021 23:10:52 +0000 Subject: [PATCH 1/5] mvebu/omnia: fix the device tree Backport [1] and fix [2] hardware buffer management. Also fix the IRQ storm caused by a misconfiguration of the PCA9538 interrupt pin [3]. [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/arm/boot/dts/armada-385-turris-omnia.dts?id=018b88eee1a2efda26ed2f09aab33ccdc40ef18f [2] https://lore.kernel.org/linux-arm-kernel/20210217153038.1068170-1-rsalvaterra@gmail.com/ [3] https://lore.kernel.org/linux-arm-kernel/20210220231144.32325-1-kabel@kernel.org/ Signed-off-by: Rui Salvaterra (cherry picked from commit 6fe6b631ef91a8a44d7324329ad6aaec6f08ada6) --- ...is-omnia-enable-HW-buffer-management.patch | 74 +++++++++++++++++++ ...omnia-fix-hardware-buffer-management.patch | 27 +++++++ ...ure-LED-2--INTn-pin-as-interrupt-pin.patch | 64 ++++++++++++++++ 3 files changed, 165 insertions(+) create mode 100644 target/linux/mvebu/patches-5.4/317-ARM-dts-turris-omnia-enable-HW-buffer-management.patch create mode 100644 target/linux/mvebu/patches-5.4/318-ARM-dts-turris-omnia-fix-hardware-buffer-management.patch create mode 100644 target/linux/mvebu/patches-5.4/319-ARM-dts-turris-omnia-configure-LED-2--INTn-pin-as-interrupt-pin.patch diff --git a/target/linux/mvebu/patches-5.4/317-ARM-dts-turris-omnia-enable-HW-buffer-management.patch b/target/linux/mvebu/patches-5.4/317-ARM-dts-turris-omnia-enable-HW-buffer-management.patch new file mode 100644 index 0000000000..7a4b511998 --- /dev/null +++ b/target/linux/mvebu/patches-5.4/317-ARM-dts-turris-omnia-enable-HW-buffer-management.patch @@ -0,0 +1,74 @@ +From 018b88eee1a2efda26ed2f09aab33ccdc40ef18f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marek=20Beh=C3=BAn?= +Date: Sun, 15 Nov 2020 14:59:17 +0100 +Subject: ARM: dts: turris-omnia: enable HW buffer management +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The buffer manager is available on Turris Omnia but needs to be +described in device-tree to be used. + +Signed-off-by: Marek Behún +Fixes: 26ca8b52d6e1 ("ARM: dts: add support for Turris Omnia") +Cc: linux-arm-kernel@lists.infradead.org +Cc: Uwe Kleine-König +Cc: Jason Cooper +Cc: Gregory CLEMENT +Cc: Andreas Färber +Cc: Andrew Lunn +Cc: Rob Herring +Cc: devicetree@vger.kernel.org +Signed-off-by: Gregory CLEMENT +--- + arch/arm/boot/dts/armada-385-turris-omnia.dts | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +(limited to 'arch/arm/boot/dts/armada-385-turris-omnia.dts') + +--- a/arch/arm/boot/dts/armada-385-turris-omnia.dts ++++ b/arch/arm/boot/dts/armada-385-turris-omnia.dts +@@ -84,12 +84,23 @@ + }; + }; + ++&bm { ++ status = "okay"; ++}; ++ ++&bm_bppi { ++ status = "okay"; ++}; ++ + /* Connected to 88E6176 switch, port 6 */ + ð0 { + pinctrl-names = "default"; + pinctrl-0 = <&ge0_rgmii_pins>; + status = "okay"; + phy-mode = "rgmii"; ++ buffer-manager = <&bm>; ++ bm,pool-long = <0>; ++ bm,pool-short = <3>; + + fixed-link { + speed = <1000>; +@@ -103,6 +114,9 @@ + pinctrl-0 = <&ge1_rgmii_pins>; + status = "okay"; + phy-mode = "rgmii"; ++ buffer-manager = <&bm>; ++ bm,pool-long = <1>; ++ bm,pool-short = <3>; + + fixed-link { + speed = <1000>; +@@ -115,6 +129,9 @@ + status = "okay"; + phy-mode = "sgmii"; + phy = <&phy1>; ++ buffer-manager = <&bm>; ++ bm,pool-long = <2>; ++ bm,pool-short = <3>; + }; + + &i2c0 { diff --git a/target/linux/mvebu/patches-5.4/318-ARM-dts-turris-omnia-fix-hardware-buffer-management.patch b/target/linux/mvebu/patches-5.4/318-ARM-dts-turris-omnia-fix-hardware-buffer-management.patch new file mode 100644 index 0000000000..a3f41fb5cb --- /dev/null +++ b/target/linux/mvebu/patches-5.4/318-ARM-dts-turris-omnia-fix-hardware-buffer-management.patch @@ -0,0 +1,27 @@ +From 9704292ed3230ee19dc4dd64f7484301b728ffb7 Mon Sep 17 00:00:00 2001 +From: Rui Salvaterra +Date: Wed, 17 Feb 2021 15:19:30 +0000 +Subject: [PATCH] ARM: dts: turris-omnia: fix hardware buffer management + +Hardware buffer management has never worked on the Turris Omnia, as the +required MBus window hadn't been reserved. Fix thusly. + +Fixes: 018b88eee1a2 ("ARM: dts: turris-omnia: enable HW buffer management") + +Signed-off-by: Rui Salvaterra +--- + arch/arm/boot/dts/armada-385-turris-omnia.dts | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/arch/arm/boot/dts/armada-385-turris-omnia.dts ++++ b/arch/arm/boot/dts/armada-385-turris-omnia.dts +@@ -31,7 +31,8 @@ + ranges = ; ++ MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000 ++ MBUS_ID(0x0c, 0x04) 0 0xf1200000 0x100000>; + + internal-regs { + diff --git a/target/linux/mvebu/patches-5.4/319-ARM-dts-turris-omnia-configure-LED-2--INTn-pin-as-interrupt-pin.patch b/target/linux/mvebu/patches-5.4/319-ARM-dts-turris-omnia-configure-LED-2--INTn-pin-as-interrupt-pin.patch new file mode 100644 index 0000000000..1fbbe8b506 --- /dev/null +++ b/target/linux/mvebu/patches-5.4/319-ARM-dts-turris-omnia-configure-LED-2--INTn-pin-as-interrupt-pin.patch @@ -0,0 +1,64 @@ +From: "Marek Behún" +To: Gregory CLEMENT +Cc: "Marek Behún" , Rui Salvaterra , "Uwe Kleine-König" , linux-arm-kernel@lists.infradead.org, Andrew Lunn , stable@vger.kernel.org +Subject: [PATCH mvebu-dt] ARM: dts: turris-omnia: configure LED[2]/INTn pin as interrupt pin +Date: Sun, 21 Feb 2021 00:11:44 +0100 +Message-Id: <20210220231144.32325-1-kabel@kernel.org> +X-Mailer: git-send-email 2.26.2 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Use the `marvell,reg-init` DT property to configure the LED[2]/INTn pin +of the Marvell 88E1514 ethernet PHY on Turris Omnia into interrupt mode. + +Without this the pin is by default in LED[2] mode, and the Marvell PHY +driver configures LED[2] into "On - Link, Blink - Activity" mode. + +This fixes the issue where the pca9538 GPIO/interrupt controller (which +can't mask interrupts in HW) received too many interrupts and after a +time started ignoring the interrupt with error message: + IRQ 71: nobody cared + +There is a work in progress to have the Marvell PHY driver support +parsing PHY LED nodes from OF and registering the LEDs as Linux LED +class devices. Once this is done the PHY driver can also automatically +set the pin into INTn mode if it does not find LED[2] in OF. + +Until then, though, we fix this via `marvell,reg-init` DT property. + +Signed-off-by: Marek Behún +Reported-by: Rui Salvaterra +Fixes: 26ca8b52d6e1 ("ARM: dts: add support for Turris Omnia") +Cc: Uwe Kleine-König +Cc: linux-arm-kernel@lists.infradead.org +Cc: Andrew Lunn +Cc: Gregory CLEMENT +Cc: + +--- + +This patch fixes bug introduced with the commit that added Turris +Omnia's DTS (26ca8b52d6e1), but will not apply cleanly because there is +commit 8ee4a5f4f40d which changed node name and node compatible +property and this commit did not go into stable. + +So either commit 8ee4a5f4f40d has also to go into stable before this, or +this patch has to be fixed a little in order to apply to 4.14+. + +Please let me know how should I handle this. + +--- + arch/arm/boot/dts/armada-385-turris-omnia.dts | 1 + + 1 file changed, 1 insertion(+) + +--- a/arch/arm/boot/dts/armada-385-turris-omnia.dts ++++ b/arch/arm/boot/dts/armada-385-turris-omnia.dts +@@ -254,6 +254,7 @@ + status = "okay"; + compatible = "ethernet-phy-id0141.0DD1", "ethernet-phy-ieee802.3-c22"; + reg = <1>; ++ marvell,reg-init = <3 18 0 0x4985>; + + /* irq is connected to &pcawan pin 7 */ + }; From 7b6ee74ee9455c068981cba2feb97538062389aa Mon Sep 17 00:00:00 2001 From: Stefan Lippers-Hollmann Date: Sat, 27 Feb 2021 23:55:08 +0100 Subject: [PATCH 2/5] hostapd: P2P: Fix a corner case in peer addition based on PD Request p2p_add_device() may remove the oldest entry if there is no room in the peer table for a new peer. This would result in any pointer to that removed entry becoming stale. A corner case with an invalid PD Request frame could result in such a case ending up using (read+write) freed memory. This could only by triggered when the peer table has reached its maximum size and the PD Request frame is received from the P2P Device Address of the oldest remaining entry and the frame has incorrect P2P Device Address in the payload. Fix this by fetching the dev pointer again after having called p2p_add_device() so that the stale pointer cannot be used. This fixes the following security vulnerabilities/bugs: - CVE-2021-27803 - A vulnerability was discovered in how p2p/p2p_pd.c in wpa_supplicant before 2.10 processes P2P (Wi-Fi Direct) provision discovery requests. It could result in denial of service or other impact (potentially execution of arbitrary code), for an attacker within radio range. Fixes: 17bef1e97a50 ("P2P: Add peer entry based on Provision Discovery Request") Signed-off-by: Jouni Malinen Signed-off-by: Stefan Lippers-Hollmann (cherry picked from commit 1ca5de13a153061feae260864d73d96f7c463785) --- ...-case-in-peer-addition-based-on-PD-R.patch | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 package/network/services/hostapd/patches/060-P2P-Fix-a-corner-case-in-peer-addition-based-on-PD-R.patch diff --git a/package/network/services/hostapd/patches/060-P2P-Fix-a-corner-case-in-peer-addition-based-on-PD-R.patch b/package/network/services/hostapd/patches/060-P2P-Fix-a-corner-case-in-peer-addition-based-on-PD-R.patch new file mode 100644 index 0000000000..1202ff3725 --- /dev/null +++ b/package/network/services/hostapd/patches/060-P2P-Fix-a-corner-case-in-peer-addition-based-on-PD-R.patch @@ -0,0 +1,45 @@ +From 8460e3230988ef2ec13ce6b69b687e941f6cdb32 Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Tue, 8 Dec 2020 23:52:50 +0200 +Subject: [PATCH] P2P: Fix a corner case in peer addition based on PD Request + +p2p_add_device() may remove the oldest entry if there is no room in the +peer table for a new peer. This would result in any pointer to that +removed entry becoming stale. A corner case with an invalid PD Request +frame could result in such a case ending up using (read+write) freed +memory. This could only by triggered when the peer table has reached its +maximum size and the PD Request frame is received from the P2P Device +Address of the oldest remaining entry and the frame has incorrect P2P +Device Address in the payload. + +Fix this by fetching the dev pointer again after having called +p2p_add_device() so that the stale pointer cannot be used. + +Fixes: 17bef1e97a50 ("P2P: Add peer entry based on Provision Discovery Request") +Signed-off-by: Jouni Malinen +--- + src/p2p/p2p_pd.c | 12 +++++------- + 1 file changed, 5 insertions(+), 7 deletions(-) + +--- a/src/p2p/p2p_pd.c ++++ b/src/p2p/p2p_pd.c +@@ -595,14 +595,12 @@ void p2p_process_prov_disc_req(struct p2 + goto out; + } + ++ dev = p2p_get_device(p2p, sa); + if (!dev) { +- dev = p2p_get_device(p2p, sa); +- if (!dev) { +- p2p_dbg(p2p, +- "Provision Discovery device not found " +- MACSTR, MAC2STR(sa)); +- goto out; +- } ++ p2p_dbg(p2p, ++ "Provision Discovery device not found " ++ MACSTR, MAC2STR(sa)); ++ goto out; + } + } else if (msg.wfd_subelems) { + wpabuf_free(dev->info.wfd_subelems); From 59ba79d675227054f40208b7b0f9102145355bb2 Mon Sep 17 00:00:00 2001 From: Pawel Dembicki Date: Mon, 11 Jan 2021 21:38:22 +0100 Subject: [PATCH 3/5] mpc85xx: p2020: fix cfi-nor detection At this moment p2020rdb has broken images, because NOR memory connected to eLBC bus isn't detected. In 642b1e8dbed7 linux tree commit, config dependencies of MTD_PHYSMAP_OF was changed and now MTD_PHYSMAP is required. This patch adds MTD_PHYSMAP option to kernel config in p2020 subtarget and fix booting of p2020rdb. Fixes: 13b1db795f05 ("mpc85xx: add support for kernel 5.4") Signed-off-by: Pawel Dembicki (cherry picked from commit 76649fd06d454f1b93f2ee74951ef91225155a8c) --- target/linux/mpc85xx/p2020/config-default | 1 + 1 file changed, 1 insertion(+) diff --git a/target/linux/mpc85xx/p2020/config-default b/target/linux/mpc85xx/p2020/config-default index be75f36814..fa43a214cd 100644 --- a/target/linux/mpc85xx/p2020/config-default +++ b/target/linux/mpc85xx/p2020/config-default @@ -10,6 +10,7 @@ CONFIG_MTD_CFI=y CONFIG_MTD_NAND_BCH=y CONFIG_MTD_NAND_ECC_BCH=y CONFIG_MTD_NAND_FSL_ELBC=y +CONFIG_MTD_PHYSMAP=y CONFIG_MTD_SPLIT_FIRMWARE=y CONFIG_MTD_SPLIT_FIT_FW=y CONFIG_MUTEX_SPIN_ON_OWNER=y From e9e2310c6a5ea1c82208fc5ff770377d33fbd1f7 Mon Sep 17 00:00:00 2001 From: Georgi Valkov Date: Sat, 20 Feb 2021 15:49:51 +0200 Subject: [PATCH 4/5] uboot-sunxi: add missing type __u64 Non Linux systems e.g. macOS lack the __u64 type and produce build errors: In file included from tools/aisimage.c:9: In file included from include/image.h:19: In file included from ./arch/arm/include/asm/byteorder.h:29: In file included from include/linux/byteorder/little_endian.h:13: include/linux/types.h:146:9: error: unknown type name '__u64'; did you mean '__s64'? typedef __u64 __bitwise __le64; Resolved by declaring __u64 in include/linux/types.h Build tested on macOS and Ubuntu. Signed-off-by: Georgi Valkov (cherry picked from commit 3cc57ba4627c9c7555f8ad86e4f78d86d8f9ddf0) --- .../uboot-sunxi/patches/260-add-missing-type-u64.patch | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 package/boot/uboot-sunxi/patches/260-add-missing-type-u64.patch diff --git a/package/boot/uboot-sunxi/patches/260-add-missing-type-u64.patch b/package/boot/uboot-sunxi/patches/260-add-missing-type-u64.patch new file mode 100644 index 0000000000..a6204c7b69 --- /dev/null +++ b/package/boot/uboot-sunxi/patches/260-add-missing-type-u64.patch @@ -0,0 +1,10 @@ +--- a/include/linux/types.h ++++ b/include/linux/types.h +@@ -1,6 +1,7 @@ + #ifndef _LINUX_TYPES_H + #define _LINUX_TYPES_H + ++typedef unsigned long long __u64; + #include + #include + #include From e4d061cd1a475a9b6059bb7a01485e3dfe139280 Mon Sep 17 00:00:00 2001 From: Ronny Kotzschmar Date: Sun, 28 Feb 2021 23:31:35 +0100 Subject: [PATCH 5/5] uboot-envtools: adjust compile patch to version v2021.01 with u-boot v2020.07 some variables have been renamed so this patch needs to be adjusted otherwise at least with macOS as build system there are build errors Signed-off-by: Ronny Kotzschmar (cherry picked from commit 547a932ee97d95a966bae947a84140556d07c3ce) --- package/boot/uboot-envtools/patches/001-compile.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/boot/uboot-envtools/patches/001-compile.patch b/package/boot/uboot-envtools/patches/001-compile.patch index 5413aa4a41..9b1b6b5d35 100644 --- a/package/boot/uboot-envtools/patches/001-compile.patch +++ b/package/boot/uboot-envtools/patches/001-compile.patch @@ -5,10 +5,10 @@ override HOSTCC = $(CC) +ifneq ($(TARGET_CFLAGS),) -+HOSTCFLAGS = $(TARGET_CFLAGS) ++KBUILD_HOSTCFLAGS = $(TARGET_CFLAGS) +endif +ifneq ($(TARGET_LDFLAGS),) -+HOSTLDFLAGS = $(TARGET_LDFLAGS) ++KBUILD_HOSTLDFLAGS = $(TARGET_LDFLAGS) +endif + # Compile for a hosted environment on the target