aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/backport-5.4
diff options
context:
space:
mode:
authorPetr Štetiar <ynezz@true.cz>2020-06-09 14:18:25 +0200
committerPetr Štetiar <ynezz@true.cz>2020-06-09 16:59:33 +0200
commite5aa498acb847320a382034ba0b9cfc55e6f13ca (patch)
treefac56950bd2af2c34cd8705b55040ebd0f5042a9 /target/linux/generic/backport-5.4
parentdf6a33a8d4115fcb7edd048f7dbfea054e9477b4 (diff)
downloadupstream-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/backport-5.4')
-rw-r--r--target/linux/generic/backport-5.4/745-v5.7-net-dsa-mt7530-add-support-for-port-mirroring.patch8
-rw-r--r--target/linux/generic/backport-5.4/751-v5.8-net-dsa-mt7530-set-CPU-port-to-fallback-mode.patch65
-rw-r--r--target/linux/generic/backport-5.4/753-v5.8-net-dsa-mt7530-fix-VLAN-setup.patch6
-rw-r--r--target/linux/generic/backport-5.4/754-v5.7-net-dsa-mt7530-fix-roaming-from-DSA-user-ports.patch116
4 files changed, 7 insertions, 188 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;
- }
-