mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 04:13:31 +00:00
kernel: bump 6.6 to 6.6.50 (#16351)
All patch automatically rebased. Build system: x86/64 Build-tested: x86/64/AMD Cezanne Run-tested: x86/64/AMD Cezanne Signed-off-by: John Audia <therealgraysky@proton.me>
This commit is contained in:
parent
c9c95be315
commit
530265022e
@ -1,2 +1,2 @@
|
|||||||
LINUX_VERSION-6.6 = .46
|
LINUX_VERSION-6.6 = .50
|
||||||
LINUX_KERNEL_HASH-6.6.46 = 052f932396d9c7d84ceeda91226a8ef797c12188bde41e6c419602d990dd45f2
|
LINUX_KERNEL_HASH-6.6.50 = c065e36daf28210060c91a37ef3e92ac5814784e634577e04e406297ead2e86e
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
From: Lorenzo Bianconi <lorenzo@kernel.org>
|
|
||||||
Date: Tue, 12 Sep 2023 10:28:00 +0200
|
|
||||||
Subject: [PATCH] net: ethernet: mtk_wed: check update_wo_rx_stats in
|
|
||||||
mtk_wed_update_rx_stats()
|
|
||||||
|
|
||||||
Check if update_wo_rx_stats function pointer is properly set in
|
|
||||||
mtk_wed_update_rx_stats routine before accessing it.
|
|
||||||
|
|
||||||
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
|
||||||
Reviewed-by: Simon Horman <horms@kernel.org>
|
|
||||||
Link: https://lore.kernel.org/r/b0d233386e059bccb59f18f69afb79a7806e5ded.1694507226.git.lorenzo@kernel.org
|
|
||||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|
||||||
---
|
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_wed_mcu.c
|
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_wed_mcu.c
|
|
||||||
@@ -68,6 +68,9 @@ mtk_wed_update_rx_stats(struct mtk_wed_d
|
|
||||||
struct mtk_wed_wo_rx_stats *stats;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
+ if (!wed->wlan.update_wo_rx_stats)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
if (count * sizeof(*stats) > skb->len - sizeof(u32))
|
|
||||||
return;
|
|
||||||
|
|
@ -168,7 +168,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
ext_mask |= MTK_WED_EXT_INT_STATUS_TX_DRV_R_RESP_ERR;
|
ext_mask |= MTK_WED_EXT_INT_STATUS_TX_DRV_R_RESP_ERR;
|
||||||
else
|
else
|
||||||
ext_mask |= MTK_WED_EXT_INT_STATUS_RX_FBUF_LO_TH |
|
ext_mask |= MTK_WED_EXT_INT_STATUS_RX_FBUF_LO_TH |
|
||||||
@@ -1840,7 +1840,7 @@ mtk_wed_setup_tc(struct mtk_wed_device *
|
@@ -1842,7 +1842,7 @@ mtk_wed_setup_tc(struct mtk_wed_device *
|
||||||
{
|
{
|
||||||
struct mtk_wed_hw *hw = wed->hw;
|
struct mtk_wed_hw *hw = wed->hw;
|
||||||
|
|
||||||
@ -177,7 +177,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
@@ -1914,9 +1914,9 @@ void mtk_wed_add_hw(struct device_node *
|
@@ -1916,9 +1916,9 @@ void mtk_wed_add_hw(struct device_node *
|
||||||
hw->wdma = wdma;
|
hw->wdma = wdma;
|
||||||
hw->index = index;
|
hw->index = index;
|
||||||
hw->irq = irq;
|
hw->irq = irq;
|
||||||
|
@ -142,7 +142,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
wdma_w32(dev, MTK_WDMA_RING_TX(idx) + MTK_WED_RING_OFS_BASE,
|
wdma_w32(dev, MTK_WDMA_RING_TX(idx) + MTK_WED_RING_OFS_BASE,
|
||||||
@@ -1928,7 +1935,12 @@ void mtk_wed_add_hw(struct device_node *
|
@@ -1930,7 +1937,12 @@ void mtk_wed_add_hw(struct device_node *
|
||||||
hw->irq = irq;
|
hw->irq = irq;
|
||||||
hw->version = eth->soc->version;
|
hw->version = eth->soc->version;
|
||||||
|
|
||||||
@ -156,7 +156,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
hw->mirror = syscon_regmap_lookup_by_phandle(eth_np,
|
hw->mirror = syscon_regmap_lookup_by_phandle(eth_np,
|
||||||
"mediatek,pcie-mirror");
|
"mediatek,pcie-mirror");
|
||||||
hw->hifsys = syscon_regmap_lookup_by_phandle(eth_np,
|
hw->hifsys = syscon_regmap_lookup_by_phandle(eth_np,
|
||||||
@@ -1942,6 +1954,8 @@ void mtk_wed_add_hw(struct device_node *
|
@@ -1944,6 +1956,8 @@ void mtk_wed_add_hw(struct device_node *
|
||||||
regmap_write(hw->mirror, 0, 0);
|
regmap_write(hw->mirror, 0, 0);
|
||||||
regmap_write(hw->mirror, 4, 0);
|
regmap_write(hw->mirror, 4, 0);
|
||||||
}
|
}
|
||||||
|
@ -759,7 +759,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
|
|
||||||
val = wed_r32(dev, MTK_WED_EXT_INT_STATUS);
|
val = wed_r32(dev, MTK_WED_EXT_INT_STATUS);
|
||||||
wed_w32(dev, MTK_WED_EXT_INT_STATUS, val);
|
wed_w32(dev, MTK_WED_EXT_INT_STATUS, val);
|
||||||
@@ -1939,6 +2130,9 @@ void mtk_wed_add_hw(struct device_node *
|
@@ -1941,6 +2132,9 @@ void mtk_wed_add_hw(struct device_node *
|
||||||
case 2:
|
case 2:
|
||||||
hw->soc = &mt7986_data;
|
hw->soc = &mt7986_data;
|
||||||
break;
|
break;
|
||||||
|
@ -364,7 +364,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
mtk_wed_start(struct mtk_wed_device *dev, u32 irq_mask)
|
mtk_wed_start(struct mtk_wed_device *dev, u32 irq_mask)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@@ -2212,6 +2503,10 @@ void mtk_wed_add_hw(struct device_node *
|
@@ -2214,6 +2505,10 @@ void mtk_wed_add_hw(struct device_node *
|
||||||
.detach = mtk_wed_detach,
|
.detach = mtk_wed_detach,
|
||||||
.ppe_check = mtk_wed_ppe_check,
|
.ppe_check = mtk_wed_ppe_check,
|
||||||
.setup_tc = mtk_wed_setup_tc,
|
.setup_tc = mtk_wed_setup_tc,
|
||||||
|
@ -123,7 +123,7 @@ Signed-off-by: Justin Stitt <justinstitt@google.com>
|
|||||||
#endif /* _LINUX_ETHTOOL_H */
|
#endif /* _LINUX_ETHTOOL_H */
|
||||||
--- a/net/ethtool/ioctl.c
|
--- a/net/ethtool/ioctl.c
|
||||||
+++ b/net/ethtool/ioctl.c
|
+++ b/net/ethtool/ioctl.c
|
||||||
@@ -1991,6 +1991,13 @@ __printf(2, 3) void ethtool_sprintf(u8 *
|
@@ -1994,6 +1994,13 @@ __printf(2, 3) void ethtool_sprintf(u8 *
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(ethtool_sprintf);
|
EXPORT_SYMBOL(ethtool_sprintf);
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ Subject: [PATCH] Kconfig: add tristate for OID and ASNI string
|
|||||||
|
|
||||||
--- a/init/Kconfig
|
--- a/init/Kconfig
|
||||||
+++ b/init/Kconfig
|
+++ b/init/Kconfig
|
||||||
@@ -1990,7 +1990,7 @@ config PADATA
|
@@ -1993,7 +1993,7 @@ config PADATA
|
||||||
bool
|
bool
|
||||||
|
|
||||||
config ASN1
|
config ASN1
|
||||||
|
@ -43,7 +43,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support
|
|||||||
|
|
||||||
#define QUECTEL_VENDOR_ID 0x2c7c
|
#define QUECTEL_VENDOR_ID 0x2c7c
|
||||||
/* These Quectel products use Quectel's vendor ID */
|
/* These Quectel products use Quectel's vendor ID */
|
||||||
@@ -1156,6 +1161,11 @@ static const struct usb_device_id option
|
@@ -1158,6 +1163,11 @@ static const struct usb_device_id option
|
||||||
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */
|
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */
|
||||||
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000), /* SIMCom SIM5218 */
|
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000), /* SIMCom SIM5218 */
|
||||||
.driver_info = NCTRL(0) | NCTRL(1) | NCTRL(2) | NCTRL(3) | RSVD(4) },
|
.driver_info = NCTRL(0) | NCTRL(1) | NCTRL(2) | NCTRL(3) | RSVD(4) },
|
||||||
@ -55,7 +55,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support
|
|||||||
/* Quectel products using Qualcomm vendor ID */
|
/* Quectel products using Qualcomm vendor ID */
|
||||||
{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC15)},
|
{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC15)},
|
||||||
{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC20),
|
{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC20),
|
||||||
@@ -1197,6 +1207,11 @@ static const struct usb_device_id option
|
@@ -1199,6 +1209,11 @@ static const struct usb_device_id option
|
||||||
.driver_info = ZLP },
|
.driver_info = ZLP },
|
||||||
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
|
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
|
||||||
.driver_info = RSVD(4) },
|
.driver_info = RSVD(4) },
|
||||||
|
@ -131,7 +131,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
struct gpio_desc *desc)
|
struct gpio_desc *desc)
|
||||||
--- a/drivers/gpio/gpiolib-sysfs.c
|
--- a/drivers/gpio/gpiolib-sysfs.c
|
||||||
+++ b/drivers/gpio/gpiolib-sysfs.c
|
+++ b/drivers/gpio/gpiolib-sysfs.c
|
||||||
@@ -557,7 +557,7 @@ static struct class gpio_class = {
|
@@ -558,7 +558,7 @@ static struct class gpio_class = {
|
||||||
*
|
*
|
||||||
* Returns zero on success, else an error.
|
* Returns zero on success, else an error.
|
||||||
*/
|
*/
|
||||||
@ -140,7 +140,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
{
|
{
|
||||||
struct gpio_chip *chip;
|
struct gpio_chip *chip;
|
||||||
struct gpio_device *gdev;
|
struct gpio_device *gdev;
|
||||||
@@ -619,6 +619,8 @@ int gpiod_export(struct gpio_desc *desc,
|
@@ -620,6 +620,8 @@ int gpiod_export(struct gpio_desc *desc,
|
||||||
offset = gpio_chip_hwgpio(desc);
|
offset = gpio_chip_hwgpio(desc);
|
||||||
if (chip->names && chip->names[offset])
|
if (chip->names && chip->names[offset])
|
||||||
ioname = chip->names[offset];
|
ioname = chip->names[offset];
|
||||||
@ -149,7 +149,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
|
|
||||||
dev = device_create_with_groups(&gpio_class, &gdev->dev,
|
dev = device_create_with_groups(&gpio_class, &gdev->dev,
|
||||||
MKDEV(0, 0), data, gpio_groups,
|
MKDEV(0, 0), data, gpio_groups,
|
||||||
@@ -640,8 +642,21 @@ err_unlock:
|
@@ -641,8 +643,21 @@ err_unlock:
|
||||||
gpiod_dbg(desc, "%s: status %d\n", __func__, status);
|
gpiod_dbg(desc, "%s: status %d\n", __func__, status);
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
@ -235,7 +235,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
if (!pe)
|
if (!pe)
|
||||||
--- a/mm/vmalloc.c
|
--- a/mm/vmalloc.c
|
||||||
+++ b/mm/vmalloc.c
|
+++ b/mm/vmalloc.c
|
||||||
@@ -4455,6 +4455,8 @@ static const struct seq_operations vmall
|
@@ -4448,6 +4448,8 @@ static const struct seq_operations vmall
|
||||||
|
|
||||||
static int __init proc_vmalloc_init(void)
|
static int __init proc_vmalloc_init(void)
|
||||||
{
|
{
|
||||||
|
@ -338,7 +338,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||||||
if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
|
if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@@ -1543,6 +1704,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
|
@@ -1544,6 +1705,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
|
||||||
t->parms.link = p->link;
|
t->parms.link = p->link;
|
||||||
t->parms.proto = p->proto;
|
t->parms.proto = p->proto;
|
||||||
t->parms.fwmark = p->fwmark;
|
t->parms.fwmark = p->fwmark;
|
||||||
@ -353,7 +353,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||||||
dst_cache_reset(&t->dst_cache);
|
dst_cache_reset(&t->dst_cache);
|
||||||
ip6_tnl_link_config(t);
|
ip6_tnl_link_config(t);
|
||||||
}
|
}
|
||||||
@@ -1577,6 +1746,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
|
@@ -1578,6 +1747,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
|
||||||
p->flowinfo = u->flowinfo;
|
p->flowinfo = u->flowinfo;
|
||||||
p->link = u->link;
|
p->link = u->link;
|
||||||
p->proto = u->proto;
|
p->proto = u->proto;
|
||||||
@ -361,7 +361,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||||||
memcpy(p->name, u->name, sizeof(u->name));
|
memcpy(p->name, u->name, sizeof(u->name));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1964,6 +2134,15 @@ static int ip6_tnl_validate(struct nlatt
|
@@ -1966,6 +2136,15 @@ static int ip6_tnl_validate(struct nlatt
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -377,7 +377,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||||||
static void ip6_tnl_netlink_parms(struct nlattr *data[],
|
static void ip6_tnl_netlink_parms(struct nlattr *data[],
|
||||||
struct __ip6_tnl_parm *parms)
|
struct __ip6_tnl_parm *parms)
|
||||||
{
|
{
|
||||||
@@ -2001,6 +2180,46 @@ static void ip6_tnl_netlink_parms(struct
|
@@ -2003,6 +2182,46 @@ static void ip6_tnl_netlink_parms(struct
|
||||||
|
|
||||||
if (data[IFLA_IPTUN_FWMARK])
|
if (data[IFLA_IPTUN_FWMARK])
|
||||||
parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
|
parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
|
||||||
@ -424,7 +424,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev,
|
static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev,
|
||||||
@@ -2084,6 +2303,12 @@ static void ip6_tnl_dellink(struct net_d
|
@@ -2086,6 +2305,12 @@ static void ip6_tnl_dellink(struct net_d
|
||||||
|
|
||||||
static size_t ip6_tnl_get_size(const struct net_device *dev)
|
static size_t ip6_tnl_get_size(const struct net_device *dev)
|
||||||
{
|
{
|
||||||
@ -437,7 +437,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||||||
return
|
return
|
||||||
/* IFLA_IPTUN_LINK */
|
/* IFLA_IPTUN_LINK */
|
||||||
nla_total_size(4) +
|
nla_total_size(4) +
|
||||||
@@ -2113,6 +2338,24 @@ static size_t ip6_tnl_get_size(const str
|
@@ -2115,6 +2340,24 @@ static size_t ip6_tnl_get_size(const str
|
||||||
nla_total_size(0) +
|
nla_total_size(0) +
|
||||||
/* IFLA_IPTUN_FWMARK */
|
/* IFLA_IPTUN_FWMARK */
|
||||||
nla_total_size(4) +
|
nla_total_size(4) +
|
||||||
@ -462,7 +462,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||||||
0;
|
0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2120,6 +2363,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
@@ -2122,6 +2365,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||||
{
|
{
|
||||||
struct ip6_tnl *tunnel = netdev_priv(dev);
|
struct ip6_tnl *tunnel = netdev_priv(dev);
|
||||||
struct __ip6_tnl_parm *parm = &tunnel->parms;
|
struct __ip6_tnl_parm *parm = &tunnel->parms;
|
||||||
@ -472,7 +472,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||||||
|
|
||||||
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
|
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
|
||||||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
|
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
|
||||||
@@ -2129,9 +2375,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
@@ -2131,9 +2377,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||||
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
|
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
|
||||||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
|
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
|
||||||
nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
|
nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
|
||||||
@ -501,7 +501,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||||||
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
|
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
|
||||||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
|
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
|
||||||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
|
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
|
||||||
@@ -2171,6 +2435,7 @@ static const struct nla_policy ip6_tnl_p
|
@@ -2173,6 +2437,7 @@ static const struct nla_policy ip6_tnl_p
|
||||||
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
|
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
|
||||||
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
|
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
|
||||||
[IFLA_IPTUN_FWMARK] = { .type = NLA_U32 },
|
[IFLA_IPTUN_FWMARK] = { .type = NLA_U32 },
|
||||||
|
@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/net/netfilter/nf_tables_api.c
|
--- a/net/netfilter/nf_tables_api.c
|
||||||
+++ b/net/netfilter/nf_tables_api.c
|
+++ b/net/netfilter/nf_tables_api.c
|
||||||
@@ -8279,7 +8279,7 @@ static int nft_register_flowtable_net_ho
|
@@ -8322,7 +8322,7 @@ static int nft_register_flowtable_net_ho
|
||||||
err = flowtable->data.type->setup(&flowtable->data,
|
err = flowtable->data.type->setup(&flowtable->data,
|
||||||
hook->ops.dev,
|
hook->ops.dev,
|
||||||
FLOW_BLOCK_BIND);
|
FLOW_BLOCK_BIND);
|
||||||
|
@ -31,8 +31,8 @@
|
|||||||
static int mtk_pinconf_bias_set_pullsel_pullen(struct mtk_pinctrl *hw,
|
static int mtk_pinconf_bias_set_pullsel_pullen(struct mtk_pinctrl *hw,
|
||||||
const struct mtk_pin_desc *desc,
|
const struct mtk_pin_desc *desc,
|
||||||
u32 pullup, u32 arg)
|
u32 pullup, u32 arg)
|
||||||
@@ -755,6 +779,12 @@ int mtk_pinconf_bias_set_combo(struct mt
|
@@ -758,6 +782,12 @@ int mtk_pinconf_bias_set_combo(struct mt
|
||||||
return err;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ if (try_all_type & MTK_PULL_PD_TYPE) {
|
+ if (try_all_type & MTK_PULL_PD_TYPE) {
|
||||||
@ -44,7 +44,7 @@
|
|||||||
if (try_all_type & MTK_PULL_PU_PD_TYPE) {
|
if (try_all_type & MTK_PULL_PU_PD_TYPE) {
|
||||||
err = mtk_pinconf_bias_set_pu_pd(hw, desc, pullup, arg);
|
err = mtk_pinconf_bias_set_pu_pd(hw, desc, pullup, arg);
|
||||||
if (!err)
|
if (!err)
|
||||||
@@ -875,6 +905,29 @@ out:
|
@@ -878,6 +908,29 @@ out:
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,19 +74,19 @@
|
|||||||
static int mtk_pinconf_bias_get_pullsel_pullen(struct mtk_pinctrl *hw,
|
static int mtk_pinconf_bias_get_pullsel_pullen(struct mtk_pinctrl *hw,
|
||||||
const struct mtk_pin_desc *desc,
|
const struct mtk_pin_desc *desc,
|
||||||
u32 *pullup, u32 *enable)
|
u32 *pullup, u32 *enable)
|
||||||
@@ -943,6 +996,12 @@ int mtk_pinconf_bias_get_combo(struct mt
|
@@ -947,6 +1000,12 @@ int mtk_pinconf_bias_get_combo(struct mt
|
||||||
if (!err)
|
return 0;
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
+
|
|
||||||
+ if (try_all_type & MTK_PULL_PD_TYPE) {
|
+ if (try_all_type & MTK_PULL_PD_TYPE) {
|
||||||
+ err = mtk_pinconf_bias_get_pd(hw, desc, pullup, enable);
|
+ err = mtk_pinconf_bias_get_pd(hw, desc, pullup, enable);
|
||||||
+ if (!err)
|
+ if (!err)
|
||||||
+ return err;
|
+ return err;
|
||||||
+ }
|
+ }
|
||||||
|
+
|
||||||
if (try_all_type & MTK_PULL_PU_PD_TYPE) {
|
if (try_all_type & MTK_PULL_PU_PD_TYPE) {
|
||||||
err = mtk_pinconf_bias_get_pu_pd(hw, desc, pullup, enable);
|
err = mtk_pinconf_bias_get_pu_pd(hw, desc, pullup, enable);
|
||||||
|
if (!err)
|
||||||
--- a/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h
|
--- a/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h
|
||||||
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h
|
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h
|
||||||
@@ -24,6 +24,7 @@
|
@@ -24,6 +24,7 @@
|
||||||
|
@ -1,59 +0,0 @@
|
|||||||
From 3da41fe88ff52c578f3155550bcbe0ecf388f079 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Zheng Zhang <everything411@qq.com>
|
|
||||||
Date: Sat, 10 Aug 2024 12:01:56 +0800
|
|
||||||
Subject: [PATCH] net: ethernet: mtk_wed: fix use-after-free panic in
|
|
||||||
mtk_wed_setup_tc_block_cb()
|
|
||||||
|
|
||||||
When there are multiple ap interfaces on one band and with WED on,
|
|
||||||
turning the interface down will cause a kernel panic on MT798X.
|
|
||||||
|
|
||||||
Previously, cb_priv was freed in mtk_wed_setup_tc_block() without
|
|
||||||
marking NULL,and mtk_wed_setup_tc_block_cb() didn't check the value, too.
|
|
||||||
|
|
||||||
Assign NULL after free cb_priv in mtk_wed_setup_tc_block() and check NULL
|
|
||||||
in mtk_wed_setup_tc_block_cb().
|
|
||||||
|
|
||||||
----------
|
|
||||||
Unable to handle kernel paging request at virtual address 0072460bca32b4f5
|
|
||||||
Call trace:
|
|
||||||
mtk_wed_setup_tc_block_cb+0x4/0x38
|
|
||||||
0xffffffc0794084bc
|
|
||||||
tcf_block_playback_offloads+0x70/0x1e8
|
|
||||||
tcf_block_unbind+0x6c/0xc8
|
|
||||||
...
|
|
||||||
---------
|
|
||||||
|
|
||||||
Fixes: 799684448e3e ("net: ethernet: mtk_wed: introduce wed wo support")
|
|
||||||
Signed-off-by: Zheng Zhang <everything411@qq.com>
|
|
||||||
---
|
|
||||||
drivers/net/ethernet/mediatek/mtk_wed.c | 6 ++++--
|
|
||||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_wed.c
|
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_wed.c
|
|
||||||
@@ -2685,14 +2685,15 @@ mtk_wed_setup_tc_block_cb(enum tc_setup_
|
|
||||||
{
|
|
||||||
struct mtk_wed_flow_block_priv *priv = cb_priv;
|
|
||||||
struct flow_cls_offload *cls = type_data;
|
|
||||||
- struct mtk_wed_hw *hw = priv->hw;
|
|
||||||
+ struct mtk_wed_hw *hw = NULL;
|
|
||||||
|
|
||||||
- if (!tc_can_offload(priv->dev))
|
|
||||||
+ if (!priv || !tc_can_offload(priv->dev))
|
|
||||||
return -EOPNOTSUPP;
|
|
||||||
|
|
||||||
if (type != TC_SETUP_CLSFLOWER)
|
|
||||||
return -EOPNOTSUPP;
|
|
||||||
|
|
||||||
+ hw = priv->hw;
|
|
||||||
return mtk_flow_offload_cmd(hw->eth, cls, hw->index);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -2748,6 +2749,7 @@ mtk_wed_setup_tc_block(struct mtk_wed_hw
|
|
||||||
flow_block_cb_remove(block_cb, f);
|
|
||||||
list_del(&block_cb->driver_list);
|
|
||||||
kfree(block_cb->cb_priv);
|
|
||||||
+ block_cb->cb_priv = NULL;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
default:
|
|
Loading…
Reference in New Issue
Block a user