diff options
author | Petr Štetiar <ynezz@true.cz> | 2020-06-09 14:18:25 +0200 |
---|---|---|
committer | Petr Štetiar <ynezz@true.cz> | 2020-06-09 16:59:33 +0200 |
commit | e5aa498acb847320a382034ba0b9cfc55e6f13ca (patch) | |
tree | fac56950bd2af2c34cd8705b55040ebd0f5042a9 /target/linux/generic | |
parent | df6a33a8d4115fcb7edd048f7dbfea054e9477b4 (diff) | |
download | upstream-e5aa498acb847320a382034ba0b9cfc55e6f13ca.tar.gz upstream-e5aa498acb847320a382034ba0b9cfc55e6f13ca.tar.bz2 upstream-e5aa498acb847320a382034ba0b9cfc55e6f13ca.zip |
kernel: bump 5.4 to 5.4.45
Fixes CVE-2020-10757 via upstream commit df4988aa1c96 ("mm: Fix mremap
not considering huge pmd devmap").
Resolved merge conflict in the following patches:
bcm27xx: 950-0128-gpiolib-Don-t-prevent-IRQ-usage-of-output-GPIOs.patch
Refreshed patches, removed upstreamed patch:
generic: 751-v5.8-net-dsa-mt7530-set-CPU-port-to-fallback-mode.patch
generic: 754-v5.7-net-dsa-mt7530-fix-roaming-from-DSA-user-ports.patch
Run tested: qemu-x86-64
Build tested: x86/64, imx6, sunxi/a53
Signed-off-by: Petr Štetiar <ynezz@true.cz>
Diffstat (limited to 'target/linux/generic')
6 files changed, 14 insertions, 195 deletions
diff --git a/target/linux/generic/backport-5.4/745-v5.7-net-dsa-mt7530-add-support-for-port-mirroring.patch b/target/linux/generic/backport-5.4/745-v5.7-net-dsa-mt7530-add-support-for-port-mirroring.patch index 4dadb517a3..e788118259 100644 --- a/target/linux/generic/backport-5.4/745-v5.7-net-dsa-mt7530-add-support-for-port-mirroring.patch +++ b/target/linux/generic/backport-5.4/745-v5.7-net-dsa-mt7530-add-support-for-port-mirroring.patch @@ -17,7 +17,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c -@@ -1151,6 +1151,64 @@ mt7530_port_vlan_del(struct dsa_switch * +@@ -1153,6 +1153,64 @@ mt7530_port_vlan_del(struct dsa_switch * return 0; } @@ -93,7 +93,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> .phylink_mac_config = mt7530_phylink_mac_config, --- a/drivers/net/dsa/mt7530.h +++ b/drivers/net/dsa/mt7530.h -@@ -36,6 +36,9 @@ enum { +@@ -37,6 +37,9 @@ enum { #define CPU_EN BIT(7) #define CPU_PORT(x) ((x) << 4) #define CPU_MASK (0xf << 4) @@ -103,7 +103,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> /* Registers for address table access */ #define MT7530_ATA1 0x74 -@@ -141,6 +144,8 @@ enum mt7530_stp_state { +@@ -142,6 +145,8 @@ enum mt7530_stp_state { /* Register for port control */ #define MT7530_PCR_P(x) (0x2004 + ((x) * 0x100)) @@ -112,7 +112,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> #define PORT_VLAN(x) ((x) & 0x3) enum mt7530_port_mode { -@@ -457,6 +462,8 @@ struct mt7530_priv { +@@ -464,6 +469,8 @@ struct mt7530_priv { phy_interface_t p6_interface; phy_interface_t p5_interface; unsigned int p5_intf_sel; diff --git a/target/linux/generic/backport-5.4/751-v5.8-net-dsa-mt7530-set-CPU-port-to-fallback-mode.patch b/target/linux/generic/backport-5.4/751-v5.8-net-dsa-mt7530-set-CPU-port-to-fallback-mode.patch deleted file mode 100644 index 7b68fac8be..0000000000 --- a/target/linux/generic/backport-5.4/751-v5.8-net-dsa-mt7530-set-CPU-port-to-fallback-mode.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 38152ea37d8bdaffa22603e0a5b5b86cfa8714c9 Mon Sep 17 00:00:00 2001 -From: DENG Qingfang <dqfext@gmail.com> -Date: Wed, 13 May 2020 23:37:17 +0800 -Subject: net: dsa: mt7530: set CPU port to fallback mode - -Currently, setting a bridge's self PVID to other value and deleting -the default VID 1 renders untagged ports of that VLAN unable to talk to -the CPU port: - - bridge vlan add dev br0 vid 2 pvid untagged self - bridge vlan del dev br0 vid 1 self - bridge vlan add dev sw0p0 vid 2 pvid untagged - bridge vlan del dev sw0p0 vid 1 - # br0 cannot send untagged frames out of sw0p0 anymore - -That is because the CPU port is set to security mode and its PVID is -still 1, and untagged frames are dropped due to VLAN member violation. - -Set the CPU port to fallback mode so untagged frames can pass through. - -Fixes: 83163f7dca56 ("net: dsa: mediatek: add VLAN support for MT7530") -Signed-off-by: DENG Qingfang <dqfext@gmail.com> -Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/dsa/mt7530.c | 11 ++++++++--- - drivers/net/dsa/mt7530.h | 6 ++++++ - 2 files changed, 14 insertions(+), 3 deletions(-) - ---- a/drivers/net/dsa/mt7530.c -+++ b/drivers/net/dsa/mt7530.c -@@ -821,10 +821,15 @@ mt7530_port_set_vlan_aware(struct dsa_sw - PCR_MATRIX_MASK, PCR_MATRIX(MT7530_ALL_MEMBERS)); - - /* Trapped into security mode allows packet forwarding through VLAN -- * table lookup. -+ * table lookup. CPU port is set to fallback mode to let untagged -+ * frames pass through. - */ -- mt7530_rmw(priv, MT7530_PCR_P(port), PCR_PORT_VLAN_MASK, -- MT7530_PORT_SECURITY_MODE); -+ if (dsa_is_cpu_port(ds, port)) -+ mt7530_rmw(priv, MT7530_PCR_P(port), PCR_PORT_VLAN_MASK, -+ MT7530_PORT_FALLBACK_MODE); -+ else -+ mt7530_rmw(priv, MT7530_PCR_P(port), PCR_PORT_VLAN_MASK, -+ MT7530_PORT_SECURITY_MODE); - - /* Set the port as a user port which is to be able to recognize VID - * from incoming packets before fetching entry within the VLAN table. ---- a/drivers/net/dsa/mt7530.h -+++ b/drivers/net/dsa/mt7530.h -@@ -152,6 +152,12 @@ enum mt7530_port_mode { - /* Port Matrix Mode: Frames are forwarded by the PCR_MATRIX members. */ - MT7530_PORT_MATRIX_MODE = PORT_VLAN(0), - -+ /* Fallback Mode: Forward received frames with ingress ports that do -+ * not belong to the VLAN member. Frames whose VID is not listed on -+ * the VLAN table are forwarded by the PCR_MATRIX members. -+ */ -+ MT7530_PORT_FALLBACK_MODE = PORT_VLAN(1), -+ - /* Security Mode: Discard any frame due to ingress membership - * violation or VID missed on the VLAN table. - */ diff --git a/target/linux/generic/backport-5.4/753-v5.8-net-dsa-mt7530-fix-VLAN-setup.patch b/target/linux/generic/backport-5.4/753-v5.8-net-dsa-mt7530-fix-VLAN-setup.patch index 8d64d2e672..c9c2a6392e 100644 --- a/target/linux/generic/backport-5.4/753-v5.8-net-dsa-mt7530-fix-VLAN-setup.patch +++ b/target/linux/generic/backport-5.4/753-v5.8-net-dsa-mt7530-fix-VLAN-setup.patch @@ -15,7 +15,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c -@@ -1096,12 +1096,6 @@ mt7530_port_vlan_add(struct dsa_switch * +@@ -1093,12 +1093,6 @@ mt7530_port_vlan_add(struct dsa_switch * struct mt7530_priv *priv = ds->priv; u16 vid; @@ -28,7 +28,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> mutex_lock(&priv->reg_mutex); for (vid = vlan->vid_begin; vid <= vlan->vid_end; ++vid) { -@@ -1127,12 +1121,6 @@ mt7530_port_vlan_del(struct dsa_switch * +@@ -1124,12 +1118,6 @@ mt7530_port_vlan_del(struct dsa_switch * struct mt7530_priv *priv = ds->priv; u16 vid, pvid; @@ -41,7 +41,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> mutex_lock(&priv->reg_mutex); pvid = priv->ports[port].pvid; -@@ -1245,6 +1233,7 @@ mt7530_setup(struct dsa_switch *ds) +@@ -1242,6 +1230,7 @@ mt7530_setup(struct dsa_switch *ds) * as two netdev instances. */ dn = ds->ports[MT7530_CPU_PORT].master->dev.of_node->parent; diff --git a/target/linux/generic/backport-5.4/754-v5.7-net-dsa-mt7530-fix-roaming-from-DSA-user-ports.patch b/target/linux/generic/backport-5.4/754-v5.7-net-dsa-mt7530-fix-roaming-from-DSA-user-ports.patch deleted file mode 100644 index 1dcc9e44f7..0000000000 --- a/target/linux/generic/backport-5.4/754-v5.7-net-dsa-mt7530-fix-roaming-from-DSA-user-ports.patch +++ /dev/null @@ -1,116 +0,0 @@ -From 5e5502e012b8129e11be616acb0f9c34bc8f8adb Mon Sep 17 00:00:00 2001 -From: DENG Qingfang <dqfext@gmail.com> -Date: Wed, 13 May 2020 23:10:16 +0800 -Subject: net: dsa: mt7530: fix roaming from DSA user ports - -When a client moves from a DSA user port to a software port in a bridge, -it cannot reach any other clients that connected to the DSA user ports. -That is because SA learning on the CPU port is disabled, so the switch -ignores the client's frames from the CPU port and still thinks it is at -the user port. - -Fix it by enabling SA learning on the CPU port. - -To prevent the switch from learning from flooding frames from the CPU -port, set skb->offload_fwd_mark to 1 for unicast and broadcast frames, -and let the switch flood them instead of trapping to the CPU port. -Multicast frames still need to be trapped to the CPU port for snooping, -so set the SA_DIS bit of the MTK tag to 1 when transmitting those frames -to disable SA learning. - -Fixes: b8f126a8d543 ("net-next: dsa: add dsa support for Mediatek MT7530 switch") -Signed-off-by: DENG Qingfang <dqfext@gmail.com> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/dsa/mt7530.c | 9 ++------- - drivers/net/dsa/mt7530.h | 1 + - net/dsa/tag_mtk.c | 15 +++++++++++++++ - 3 files changed, 18 insertions(+), 7 deletions(-) - ---- a/drivers/net/dsa/mt7530.c -+++ b/drivers/net/dsa/mt7530.c -@@ -639,11 +639,8 @@ mt7530_cpu_port_enable(struct mt7530_pri - mt7530_write(priv, MT7530_PVC_P(port), - PORT_SPEC_TAG); - -- /* Disable auto learning on the cpu port */ -- mt7530_set(priv, MT7530_PSC_P(port), SA_DIS); -- -- /* Unknown unicast frame fordwarding to the cpu port */ -- mt7530_set(priv, MT7530_MFC, UNU_FFP(BIT(port))); -+ /* Unknown multicast frame forwarding to the cpu port */ -+ mt7530_rmw(priv, MT7530_MFC, UNM_FFP_MASK, UNM_FFP(BIT(port))); - - /* Set CPU port number */ - if (priv->id == ID_MT7621) -@@ -1298,8 +1295,6 @@ mt7530_setup(struct dsa_switch *ds) - /* Enable and reset MIB counters */ - mt7530_mib_reset(ds); - -- mt7530_clear(priv, MT7530_MFC, UNU_FFP_MASK); -- - for (i = 0; i < MT7530_NUM_PORTS; i++) { - /* Disable forwarding by default on all ports */ - mt7530_rmw(priv, MT7530_PCR_P(i), PCR_MATRIX_MASK, ---- a/drivers/net/dsa/mt7530.h -+++ b/drivers/net/dsa/mt7530.h -@@ -31,6 +31,7 @@ enum { - #define MT7530_MFC 0x10 - #define BC_FFP(x) (((x) & 0xff) << 24) - #define UNM_FFP(x) (((x) & 0xff) << 16) -+#define UNM_FFP_MASK UNM_FFP(~0) - #define UNU_FFP(x) (((x) & 0xff) << 8) - #define UNU_FFP_MASK UNU_FFP(~0) - #define CPU_EN BIT(7) ---- a/net/dsa/tag_mtk.c -+++ b/net/dsa/tag_mtk.c -@@ -15,6 +15,7 @@ - #define MTK_HDR_XMIT_TAGGED_TPID_8100 1 - #define MTK_HDR_RECV_SOURCE_PORT_MASK GENMASK(2, 0) - #define MTK_HDR_XMIT_DP_BIT_MASK GENMASK(5, 0) -+#define MTK_HDR_XMIT_SA_DIS BIT(6) - - static struct sk_buff *mtk_tag_xmit(struct sk_buff *skb, - struct net_device *dev) -@@ -22,6 +23,9 @@ static struct sk_buff *mtk_tag_xmit(stru - struct dsa_port *dp = dsa_slave_to_port(dev); - u8 *mtk_tag; - bool is_vlan_skb = true; -+ unsigned char *dest = eth_hdr(skb)->h_dest; -+ bool is_multicast_skb = is_multicast_ether_addr(dest) && -+ !is_broadcast_ether_addr(dest); - - /* Build the special tag after the MAC Source Address. If VLAN header - * is present, it's required that VLAN header and special tag is -@@ -47,6 +51,10 @@ static struct sk_buff *mtk_tag_xmit(stru - MTK_HDR_XMIT_UNTAGGED; - mtk_tag[1] = (1 << dp->index) & MTK_HDR_XMIT_DP_BIT_MASK; - -+ /* Disable SA learning for multicast frames */ -+ if (unlikely(is_multicast_skb)) -+ mtk_tag[1] |= MTK_HDR_XMIT_SA_DIS; -+ - /* Tag control information is kept for 802.1Q */ - if (!is_vlan_skb) { - mtk_tag[2] = 0; -@@ -61,6 +69,9 @@ static struct sk_buff *mtk_tag_rcv(struc - { - int port; - __be16 *phdr, hdr; -+ unsigned char *dest = eth_hdr(skb)->h_dest; -+ bool is_multicast_skb = is_multicast_ether_addr(dest) && -+ !is_broadcast_ether_addr(dest); - - if (unlikely(!pskb_may_pull(skb, MTK_HDR_LEN))) - return NULL; -@@ -86,6 +97,10 @@ static struct sk_buff *mtk_tag_rcv(struc - if (!skb->dev) - return NULL; - -+ /* Only unicast or broadcast frames are offloaded */ -+ if (likely(!is_multicast_skb)) -+ skb->offload_fwd_mark = 1; -+ - return skb; - } - diff --git a/target/linux/generic/pending-5.4/332-arc-add-OWRTDTB-section.patch b/target/linux/generic/pending-5.4/332-arc-add-OWRTDTB-section.patch index c30dbc94ef..4b0534eff7 100644 --- a/target/linux/generic/pending-5.4/332-arc-add-OWRTDTB-section.patch +++ b/target/linux/generic/pending-5.4/332-arc-add-OWRTDTB-section.patch @@ -42,7 +42,7 @@ Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com> ;---------------------------------------------------------------- --- a/arch/arc/kernel/setup.c +++ b/arch/arc/kernel/setup.c -@@ -491,6 +491,8 @@ static inline bool uboot_arg_invalid(uns +@@ -492,6 +492,8 @@ static inline bool uboot_arg_invalid(uns /* We always pass 0 as magic from U-boot */ #define UBOOT_MAGIC_VALUE 0 @@ -51,7 +51,7 @@ Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com> void __init handle_uboot_args(void) { bool use_embedded_dtb = true; -@@ -529,7 +531,7 @@ void __init handle_uboot_args(void) +@@ -530,7 +532,7 @@ void __init handle_uboot_args(void) ignore_uboot_args: if (use_embedded_dtb) { diff --git a/target/linux/generic/pending-5.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/pending-5.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch index f199f497e4..aae3d35f46 100644 --- a/target/linux/generic/pending-5.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch +++ b/target/linux/generic/pending-5.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch @@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> __u16 tc_index; /* traffic control index */ --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -5461,6 +5461,9 @@ static enum gro_result dev_gro_receive(s +@@ -5471,6 +5471,9 @@ static enum gro_result dev_gro_receive(s int same_flow; int grow; @@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> if (netif_elide_gro(skb->dev)) goto normal; -@@ -7254,6 +7257,48 @@ static void __netdev_adjacent_dev_unlink +@@ -7264,6 +7267,48 @@ static void __netdev_adjacent_dev_unlink &upper_dev->adj_list.lower); } @@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> static int __netdev_upper_dev_link(struct net_device *dev, struct net_device *upper_dev, bool master, void *upper_priv, void *upper_info, -@@ -7304,6 +7349,7 @@ static int __netdev_upper_dev_link(struc +@@ -7314,6 +7359,7 @@ static int __netdev_upper_dev_link(struc if (ret) return ret; @@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, &changeupper_info.info); ret = notifier_to_errno(ret); -@@ -7397,6 +7443,7 @@ void netdev_upper_dev_unlink(struct net_ +@@ -7407,6 +7453,7 @@ void netdev_upper_dev_unlink(struct net_ __netdev_adjacent_dev_unlink_neighbour(dev, upper_dev); @@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, &changeupper_info.info); -@@ -8127,6 +8174,7 @@ int dev_set_mac_address(struct net_devic +@@ -8137,6 +8184,7 @@ int dev_set_mac_address(struct net_devic if (err) return err; dev->addr_assign_type = NET_ADDR_SET; |