kernel: bump 5.15 to 5.15.111
Removed upstreamed: 01. backport-5.15/424-v6.4-0001-mtd-core-provide-unique-name-for-nvmem-device-take-t.patch 02. backport-5.15/424-v6.4-0002-mtd-core-fix-nvmem-error-reporting.patch 03. generic-backport/424-v6.4-0003-mtd-core-fix-error-path-for-nvmem-provider.patch 04. generic-backport/828-v6.4-0001-of-Fix-modalias-string-generation.patch 05. bcm4908/patches-5.15/031-v5.17-0002-arm64-dts-broadcom-bcm4908-add-DT-for-Netgear-RAXE50.patch 06. bcm4908/patches-5.15/033-v6.0-0001-arm64-dts-Add-DTS-files-for-bcmbca-SoC-BCM63158.patchgit 07. bcm4908/patches-5.15/033-v6.0-0002-arm64-dts-Add-DTS-files-for-bcmbca-SoC-BCM4912.patchgita 08. bcm4908/patches-5.15/033-v6.0-0010-arm64-dts-Add-base-DTS-file-for-bcmbca-device-Asus-G.patchgit 09. bcm4908/patches-5.15/034-v6.1-0005-arm64-dts-Move-BCM4908-dts-to-bcmbca-folder.patch 10. bcm4908/patches-5.15/036-v6.4-0002-arm64-dts-broadcom-bcmbca-bcm4908-fix-NAND-interrupt.patch 11. bcm4908/patches-5.15/036-v6.4-0004-arm64-dts-broadcom-bcmbca-bcm4908-fix-procmon-nodena.patch 12. ipq806x/patches-5.15/104-v6.0-06-ARM-dts-qcom-ipq8064-reduce-pci-IO-size-to-64K.patch Manually rebased: bcm27xx/patches-5.15/950-0078-BCM2708-Add-core-Device-Tree-support.patch bcm27xx/patches-5.15/950-0547-ARM-dts-Add-Pi-Zero-2-support.patch bcm4908/patches-5.15/033-v6.0-0001-arm64-dts-Add-DTS-files-for-bcmbca-SoC-BCM63158.patchgit bcm4908/patches-5.15/033-v6.0-0002-arm64-dts-Add-DTS-files-for-bcmbca-SoC-BCM4912.patchgit bcm4908/patches-5.15/030-v5.16-0001-arm64-dts-broadcom-bcm4908-Fix-NAND-node-name.patch bcm4908/patches-5.15/032-v5.18-0002-arm64-dts-broadcom-bcm4908-add-pinctrl-binding.patch bcm4908/patches-5.15/032-v5.18-0003-arm64-dts-broadcom-bcm4908-add-watchdog-block.patch bcm4908/patches-5.15/032-v5.18-0004-arm64-dts-broadcom-bcm4908-add-I2C-block.patch bcm4908/patches-5.15/033-v6.0-0003-ARM64-dts-Add-DTS-files-for-bcmbca-SoC-BCM6858.patchgit bcm4908/patches-5.15/033-v6.0-0008-arm64-dts-broadcom-bcm4908-Fix-timer-node-for-BCM490.patchgit bcm4908/patches-5.15/034-v6.1-0001-arm64-dts-broadcom-bcm4908-add-remaining-LED-pins.patch bcm4908/patches-5.15/034-v6.1-0002-arm64-dts-broadcom-bcm4908-add-LEDs-controller-block.patch bcm4908/patches-5.15/034-v6.1-0003-arm64-dts-broadcom-bcm4908-add-Asus-GT-AC5300-LEDs.patch bcm4908/patches-5.15/034-v6.1-0004-arm64-dts-bcmbca-update-BCM4908-board-dts-files.patch All other patches automatically rebased. Build system: x86_64 Build-tested: bcm2711/RPi4B, ramips/tplink_archer-a6-v3, filogic/xiaomi_redmi-router-ax6000-ubootmod Run-tested: bcm2711/RPi4B, ramips/tplink_archer-a6-v3, filogic/xiaomi_redmi-router-ax6000-ubootmod 01. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.111&id=77112d23a671697f0f70695ab901f807e15d2093 02. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.111&id=fe07b3b5af01f42b291f5da0da09d047f50b33a6 03. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.111&id=273be36e420924237f6c9d43cdad96718c13dd52 04. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.111&id=fe8ab85ed4958e58e991bba0aa0a655b552b0273 05. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.111&id=6ae67829fa5e9e71f458f69db42f0e216225616a 06. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.111&id=1994284cb9226b65ca3a6744ce3320218b584f26 07. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.111&id=a46878476c5549a4fde15a31922ce80a50b23492 08. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.111&id=112ff0f2530549d50510f116474924f9c4fad590 09. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.111&id=7c253e98685e6d884d12e2618ef4d2ad90b4fbd7 10. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.111&id=8444b46e163aa9559a0af0381a1d230ec4146eb2 11. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.111&id=6d1af517817a760d7af3dee0fc4603645485495c 12. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.111&id=cc4f0e168a5630ad0491ac5328f1a89f3cf3d04e Signed-off-by: John Audia <therealgraysky@proton.me>
This commit is contained in:
committed by
Hauke Mehrtens
parent
9145c4fbcb
commit
228e0e1039
@@ -25,7 +25,7 @@ Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
|
||||
--- a/drivers/mtd/mtdcore.c
|
||||
+++ b/drivers/mtd/mtdcore.c
|
||||
@@ -1229,6 +1229,34 @@ int __get_mtd_device(struct mtd_info *mt
|
||||
@@ -1236,6 +1236,34 @@ int __get_mtd_device(struct mtd_info *mt
|
||||
EXPORT_SYMBOL_GPL(__get_mtd_device);
|
||||
|
||||
/**
|
||||
|
||||
@@ -31,7 +31,7 @@ Link: https://lore.kernel.org/linux-mtd/20220629125737.14418-2-kernel@kempniu.pl
|
||||
|
||||
--- a/drivers/mtd/mtdcore.c
|
||||
+++ b/drivers/mtd/mtdcore.c
|
||||
@@ -1669,6 +1669,9 @@ int mtd_read_oob(struct mtd_info *mtd, l
|
||||
@@ -1676,6 +1676,9 @@ int mtd_read_oob(struct mtd_info *mtd, l
|
||||
if (!master->_read_oob && (!master->_read || ops->oobbuf))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
@@ -41,7 +41,7 @@ Link: https://lore.kernel.org/linux-mtd/20220629125737.14418-2-kernel@kempniu.pl
|
||||
if (mtd->flags & MTD_SLC_ON_MLC_EMULATION)
|
||||
ret_code = mtd_io_emulated_slc(mtd, from, true, ops);
|
||||
else
|
||||
@@ -1686,6 +1689,8 @@ int mtd_read_oob(struct mtd_info *mtd, l
|
||||
@@ -1693,6 +1696,8 @@ int mtd_read_oob(struct mtd_info *mtd, l
|
||||
return ret_code;
|
||||
if (mtd->ecc_strength == 0)
|
||||
return 0; /* device lacks ecc */
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
From 1cd9ceaa5282ff10ea20a7fbadde5a476a1cc99e Mon Sep 17 00:00:00 2001
|
||||
From: Michael Walle <michael@walle.cc>
|
||||
Date: Wed, 8 Mar 2023 09:20:18 +0100
|
||||
Subject: [PATCH] mtd: core: provide unique name for nvmem device, take two
|
||||
|
||||
Commit c048b60d39e1 ("mtd: core: provide unique name for nvmem device")
|
||||
tries to give the nvmem device a unique name, but fails badly if the mtd
|
||||
device doesn't have a "struct device" associated with it, i.e. if
|
||||
CONFIG_MTD_PARTITIONED_MASTER is not set. This will result in the name
|
||||
"(null)-user-otp", which is not unique. It seems the best we can do is
|
||||
to use the compatible name together with a unique identifier added by
|
||||
the nvmem subsystem by using NVMEM_DEVID_AUTO.
|
||||
|
||||
Fixes: c048b60d39e1 ("mtd: core: provide unique name for nvmem device")
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Michael Walle <michael@walle.cc>
|
||||
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
Link: https://lore.kernel.org/linux-mtd/20230308082021.870459-1-michael@walle.cc
|
||||
---
|
||||
drivers/mtd/mtdcore.c | 5 ++---
|
||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/mtd/mtdcore.c
|
||||
+++ b/drivers/mtd/mtdcore.c
|
||||
@@ -895,8 +895,8 @@ static struct nvmem_device *mtd_otp_nvme
|
||||
|
||||
/* OTP nvmem will be registered on the physical device */
|
||||
config.dev = mtd->dev.parent;
|
||||
- config.name = kasprintf(GFP_KERNEL, "%s-%s", dev_name(&mtd->dev), compatible);
|
||||
- config.id = NVMEM_DEVID_NONE;
|
||||
+ config.name = compatible;
|
||||
+ config.id = NVMEM_DEVID_AUTO;
|
||||
config.owner = THIS_MODULE;
|
||||
config.type = NVMEM_TYPE_OTP;
|
||||
config.root_only = true;
|
||||
@@ -912,7 +912,6 @@ static struct nvmem_device *mtd_otp_nvme
|
||||
nvmem = NULL;
|
||||
|
||||
of_node_put(np);
|
||||
- kfree(config.name);
|
||||
|
||||
return nvmem;
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
From 8bd1d24e6ca3c599dd455b0e1b22f77bab8290eb Mon Sep 17 00:00:00 2001
|
||||
From: Michael Walle <michael@walle.cc>
|
||||
Date: Wed, 8 Mar 2023 09:20:19 +0100
|
||||
Subject: [PATCH] mtd: core: fix nvmem error reporting
|
||||
|
||||
The master MTD will only have an associated device if
|
||||
CONFIG_MTD_PARTITIONED_MASTER is set, thus we cannot use dev_err() on
|
||||
mtd->dev. Instead use the parent device which is the physical flash
|
||||
memory.
|
||||
|
||||
Fixes: 4b361cfa8624 ("mtd: core: add OTP nvmem provider support")
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Michael Walle <michael@walle.cc>
|
||||
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
Link: https://lore.kernel.org/linux-mtd/20230308082021.870459-2-michael@walle.cc
|
||||
---
|
||||
drivers/mtd/mtdcore.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/mtd/mtdcore.c
|
||||
+++ b/drivers/mtd/mtdcore.c
|
||||
@@ -946,6 +946,7 @@ static int mtd_nvmem_fact_otp_reg_read(v
|
||||
|
||||
static int mtd_otp_nvmem_add(struct mtd_info *mtd)
|
||||
{
|
||||
+ struct device *dev = mtd->dev.parent;
|
||||
struct nvmem_device *nvmem;
|
||||
ssize_t size;
|
||||
int err;
|
||||
@@ -959,7 +960,7 @@ static int mtd_otp_nvmem_add(struct mtd_
|
||||
nvmem = mtd_otp_nvmem_register(mtd, "user-otp", size,
|
||||
mtd_nvmem_user_otp_reg_read);
|
||||
if (IS_ERR(nvmem)) {
|
||||
- dev_err(&mtd->dev, "Failed to register OTP NVMEM device\n");
|
||||
+ dev_err(dev, "Failed to register OTP NVMEM device\n");
|
||||
return PTR_ERR(nvmem);
|
||||
}
|
||||
mtd->otp_user_nvmem = nvmem;
|
||||
@@ -977,7 +978,7 @@ static int mtd_otp_nvmem_add(struct mtd_
|
||||
nvmem = mtd_otp_nvmem_register(mtd, "factory-otp", size,
|
||||
mtd_nvmem_fact_otp_reg_read);
|
||||
if (IS_ERR(nvmem)) {
|
||||
- dev_err(&mtd->dev, "Failed to register OTP NVMEM device\n");
|
||||
+ dev_err(dev, "Failed to register OTP NVMEM device\n");
|
||||
err = PTR_ERR(nvmem);
|
||||
goto err;
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
From e0489f6e221f5ddee6cb3bd51b992b790c5fa4b9 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Walle <michael@walle.cc>
|
||||
Date: Wed, 8 Mar 2023 09:20:20 +0100
|
||||
Subject: [PATCH] mtd: core: fix error path for nvmem provider
|
||||
|
||||
If mtd_otp_nvmem_add() fails, the partitions won't be removed
|
||||
because there is simply no call to del_mtd_partitions().
|
||||
Unfortunately, add_mtd_partitions() will print all partitions to
|
||||
the kernel console. If mtd_otp_nvmem_add() returns -EPROBE_DEFER
|
||||
this would print the partitions multiple times to the kernel
|
||||
console. Instead move mtd_otp_nvmem_add() to the beginning of the
|
||||
function.
|
||||
|
||||
Fixes: 4b361cfa8624 ("mtd: core: add OTP nvmem provider support")
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Michael Walle <michael@walle.cc>
|
||||
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
Link: https://lore.kernel.org/linux-mtd/20230308082021.870459-3-michael@walle.cc
|
||||
---
|
||||
drivers/mtd/mtdcore.c | 13 ++++++++++---
|
||||
1 file changed, 10 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/mtd/mtdcore.c
|
||||
+++ b/drivers/mtd/mtdcore.c
|
||||
@@ -1031,10 +1031,14 @@ int mtd_device_parse_register(struct mtd
|
||||
|
||||
mtd_set_dev_defaults(mtd);
|
||||
|
||||
+ ret = mtd_otp_nvmem_add(mtd);
|
||||
+ if (ret)
|
||||
+ goto out;
|
||||
+
|
||||
if (IS_ENABLED(CONFIG_MTD_PARTITIONED_MASTER)) {
|
||||
ret = add_mtd_device(mtd);
|
||||
if (ret)
|
||||
- return ret;
|
||||
+ goto out;
|
||||
}
|
||||
|
||||
/* Prefer parsed partitions over driver-provided fallback */
|
||||
@@ -1069,9 +1073,12 @@ int mtd_device_parse_register(struct mtd
|
||||
register_reboot_notifier(&mtd->reboot_notifier);
|
||||
}
|
||||
|
||||
- ret = mtd_otp_nvmem_add(mtd);
|
||||
-
|
||||
out:
|
||||
+ if (ret) {
|
||||
+ nvmem_unregister(mtd->otp_user_nvmem);
|
||||
+ nvmem_unregister(mtd->otp_factory_nvmem);
|
||||
+ }
|
||||
+
|
||||
if (ret && device_is_registered(&mtd->dev))
|
||||
del_mtd_device(mtd);
|
||||
|
||||
@@ -901,7 +901,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
static void axienet_mac_pcs_get_state(struct phylink_config *config,
|
||||
--- a/drivers/net/pcs/pcs-xpcs.c
|
||||
+++ b/drivers/net/pcs/pcs-xpcs.c
|
||||
@@ -646,7 +646,7 @@ void xpcs_validate(struct dw_xpcs *xpcs,
|
||||
@@ -637,7 +637,7 @@ void xpcs_validate(struct dw_xpcs *xpcs,
|
||||
if (state->interface == PHY_INTERFACE_MODE_NA)
|
||||
return;
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
ret = stmmac_hw_setup(dev, true);
|
||||
if (ret < 0) {
|
||||
netdev_err(priv->dev, "%s: Hw setup failed\n", __func__);
|
||||
@@ -6424,6 +6417,7 @@ void stmmac_enable_rx_queue(struct stmma
|
||||
@@ -6430,6 +6423,7 @@ void stmmac_enable_rx_queue(struct stmma
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
stmmac_clear_rx_descriptors(priv, queue);
|
||||
|
||||
stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||
@@ -6485,6 +6479,7 @@ void stmmac_enable_tx_queue(struct stmma
|
||||
@@ -6491,6 +6485,7 @@ void stmmac_enable_tx_queue(struct stmma
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
stmmac_clear_tx_descriptors(priv, queue);
|
||||
|
||||
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||
@@ -7411,6 +7406,25 @@ int stmmac_suspend(struct device *dev)
|
||||
@@ -7417,6 +7412,25 @@ int stmmac_suspend(struct device *dev)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(stmmac_suspend);
|
||||
|
||||
@@ -113,7 +113,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
/**
|
||||
* stmmac_reset_queues_param - reset queue parameters
|
||||
* @priv: device pointer
|
||||
@@ -7421,22 +7435,11 @@ static void stmmac_reset_queues_param(st
|
||||
@@ -7427,22 +7441,11 @@ static void stmmac_reset_queues_param(st
|
||||
u32 tx_cnt = priv->plat->tx_queues_to_use;
|
||||
u32 queue;
|
||||
|
||||
|
||||
@@ -1116,7 +1116,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6398,7 +6402,7 @@ void stmmac_disable_rx_queue(struct stmm
|
||||
@@ -6404,7 +6408,7 @@ void stmmac_disable_rx_queue(struct stmm
|
||||
|
||||
void stmmac_enable_rx_queue(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
@@ -1125,7 +1125,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct stmmac_channel *ch = &priv->channel[queue];
|
||||
unsigned long flags;
|
||||
u32 buf_size;
|
||||
@@ -6435,7 +6439,7 @@ void stmmac_enable_rx_queue(struct stmma
|
||||
@@ -6441,7 +6445,7 @@ void stmmac_enable_rx_queue(struct stmma
|
||||
rx_q->queue_index);
|
||||
} else {
|
||||
stmmac_set_dma_bfsize(priv, priv->ioaddr,
|
||||
@@ -1134,7 +1134,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
rx_q->queue_index);
|
||||
}
|
||||
|
||||
@@ -6461,7 +6465,7 @@ void stmmac_disable_tx_queue(struct stmm
|
||||
@@ -6467,7 +6471,7 @@ void stmmac_disable_tx_queue(struct stmm
|
||||
|
||||
void stmmac_enable_tx_queue(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
@@ -1143,7 +1143,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct stmmac_channel *ch = &priv->channel[queue];
|
||||
unsigned long flags;
|
||||
int ret;
|
||||
@@ -6511,7 +6515,7 @@ void stmmac_xdp_release(struct net_devic
|
||||
@@ -6517,7 +6521,7 @@ void stmmac_xdp_release(struct net_devic
|
||||
stmmac_disable_all_queues(priv);
|
||||
|
||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||
@@ -1152,7 +1152,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
/* Free the IRQ lines */
|
||||
stmmac_free_irq(dev, REQ_IRQ_ERR_ALL, 0);
|
||||
@@ -6570,7 +6574,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
@@ -6576,7 +6580,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
|
||||
/* DMA RX Channel Configuration */
|
||||
for (chan = 0; chan < rx_cnt; chan++) {
|
||||
@@ -1161,7 +1161,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||
rx_q->dma_rx_phy, chan);
|
||||
@@ -6588,7 +6592,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
@@ -6594,7 +6598,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
rx_q->queue_index);
|
||||
} else {
|
||||
stmmac_set_dma_bfsize(priv, priv->ioaddr,
|
||||
@@ -1170,7 +1170,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
rx_q->queue_index);
|
||||
}
|
||||
|
||||
@@ -6597,7 +6601,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
@@ -6603,7 +6607,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
|
||||
/* DMA TX Channel Configuration */
|
||||
for (chan = 0; chan < tx_cnt; chan++) {
|
||||
@@ -1179,7 +1179,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||
tx_q->dma_tx_phy, chan);
|
||||
@@ -6630,7 +6634,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
@@ -6636,7 +6640,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
|
||||
irq_error:
|
||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||
@@ -1188,7 +1188,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
stmmac_hw_teardown(dev);
|
||||
init_error:
|
||||
@@ -6657,8 +6661,8 @@ int stmmac_xsk_wakeup(struct net_device
|
||||
@@ -6663,8 +6667,8 @@ int stmmac_xsk_wakeup(struct net_device
|
||||
queue >= priv->plat->tx_queues_to_use)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -1199,7 +1199,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
ch = &priv->channel[queue];
|
||||
|
||||
if (!rx_q->xsk_pool && !tx_q->xsk_pool)
|
||||
@@ -6918,8 +6922,8 @@ int stmmac_reinit_ringparam(struct net_d
|
||||
@@ -6924,8 +6928,8 @@ int stmmac_reinit_ringparam(struct net_d
|
||||
if (netif_running(dev))
|
||||
stmmac_release(dev);
|
||||
|
||||
@@ -1210,7 +1210,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
if (netif_running(dev))
|
||||
ret = stmmac_open(dev);
|
||||
@@ -7357,7 +7361,7 @@ int stmmac_suspend(struct device *dev)
|
||||
@@ -7363,7 +7367,7 @@ int stmmac_suspend(struct device *dev)
|
||||
stmmac_disable_all_queues(priv);
|
||||
|
||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||
@@ -1219,7 +1219,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
if (priv->eee_enabled) {
|
||||
priv->tx_path_in_lpi_mode = false;
|
||||
@@ -7408,7 +7412,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
|
||||
@@ -7414,7 +7418,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
|
||||
|
||||
static void stmmac_reset_rx_queue(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
@@ -1228,7 +1228,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
rx_q->cur_rx = 0;
|
||||
rx_q->dirty_rx = 0;
|
||||
@@ -7416,7 +7420,7 @@ static void stmmac_reset_rx_queue(struct
|
||||
@@ -7422,7 +7426,7 @@ static void stmmac_reset_rx_queue(struct
|
||||
|
||||
static void stmmac_reset_tx_queue(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
|
||||
@@ -1045,7 +1045,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
/* Disable the MAC Rx/Tx */
|
||||
stmmac_mac_set(priv, priv->ioaddr, false);
|
||||
@@ -6397,7 +6513,7 @@ void stmmac_disable_rx_queue(struct stmm
|
||||
@@ -6403,7 +6519,7 @@ void stmmac_disable_rx_queue(struct stmm
|
||||
spin_unlock_irqrestore(&ch->lock, flags);
|
||||
|
||||
stmmac_stop_rx_dma(priv, queue);
|
||||
@@ -1054,7 +1054,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
}
|
||||
|
||||
void stmmac_enable_rx_queue(struct stmmac_priv *priv, u32 queue)
|
||||
@@ -6408,21 +6524,21 @@ void stmmac_enable_rx_queue(struct stmma
|
||||
@@ -6414,21 +6530,21 @@ void stmmac_enable_rx_queue(struct stmma
|
||||
u32 buf_size;
|
||||
int ret;
|
||||
|
||||
@@ -1080,7 +1080,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||
rx_q->dma_rx_phy, rx_q->queue_index);
|
||||
@@ -6460,7 +6576,7 @@ void stmmac_disable_tx_queue(struct stmm
|
||||
@@ -6466,7 +6582,7 @@ void stmmac_disable_tx_queue(struct stmm
|
||||
spin_unlock_irqrestore(&ch->lock, flags);
|
||||
|
||||
stmmac_stop_tx_dma(priv, queue);
|
||||
@@ -1089,7 +1089,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
}
|
||||
|
||||
void stmmac_enable_tx_queue(struct stmmac_priv *priv, u32 queue)
|
||||
@@ -6470,21 +6586,21 @@ void stmmac_enable_tx_queue(struct stmma
|
||||
@@ -6476,21 +6592,21 @@ void stmmac_enable_tx_queue(struct stmma
|
||||
unsigned long flags;
|
||||
int ret;
|
||||
|
||||
@@ -1115,7 +1115,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||
tx_q->dma_tx_phy, tx_q->queue_index);
|
||||
@@ -6524,7 +6640,7 @@ void stmmac_xdp_release(struct net_devic
|
||||
@@ -6530,7 +6646,7 @@ void stmmac_xdp_release(struct net_devic
|
||||
stmmac_stop_all_dma(priv);
|
||||
|
||||
/* Release and free the Rx/Tx resources */
|
||||
@@ -1124,7 +1124,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
/* Disable the MAC Rx/Tx */
|
||||
stmmac_mac_set(priv, priv->ioaddr, false);
|
||||
@@ -6549,14 +6665,14 @@ int stmmac_xdp_open(struct net_device *d
|
||||
@@ -6555,14 +6671,14 @@ int stmmac_xdp_open(struct net_device *d
|
||||
u32 chan;
|
||||
int ret;
|
||||
|
||||
@@ -1141,7 +1141,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
if (ret < 0) {
|
||||
netdev_err(dev, "%s: DMA descriptors initialization failed\n",
|
||||
__func__);
|
||||
@@ -6638,7 +6754,7 @@ irq_error:
|
||||
@@ -6644,7 +6760,7 @@ irq_error:
|
||||
|
||||
stmmac_hw_teardown(dev);
|
||||
init_error:
|
||||
@@ -1150,7 +1150,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
dma_desc_error:
|
||||
return ret;
|
||||
}
|
||||
@@ -7503,7 +7619,7 @@ int stmmac_resume(struct device *dev)
|
||||
@@ -7509,7 +7625,7 @@ int stmmac_resume(struct device *dev)
|
||||
stmmac_reset_queues_param(priv);
|
||||
|
||||
stmmac_free_tx_skbufs(priv);
|
||||
|
||||
@@ -26,7 +26,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
return -ENODEV;
|
||||
|
||||
/* Name & Type */
|
||||
@@ -369,7 +369,7 @@ int of_device_uevent_modalias(struct dev
|
||||
@@ -372,7 +372,7 @@ int of_device_uevent_modalias(struct dev
|
||||
{
|
||||
int sl;
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/of/device.c
|
||||
+++ b/drivers/of/device.c
|
||||
@@ -378,6 +378,8 @@ int of_device_uevent_modalias(struct dev
|
||||
@@ -381,6 +381,8 @@ int of_device_uevent_modalias(struct dev
|
||||
|
||||
sl = of_device_get_modalias(dev, &env->buf[env->buflen-1],
|
||||
sizeof(env->buf) - env->buflen);
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
From b19a4266c52de78496fe40f0b37580a3b762e67d Mon Sep 17 00:00:00 2001
|
||||
From: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
Date: Tue, 4 Apr 2023 18:21:09 +0100
|
||||
Subject: [PATCH] of: Fix modalias string generation
|
||||
|
||||
The helper generating an OF based modalias (of_device_get_modalias())
|
||||
works fine, but due to the use of snprintf() internally it needs a
|
||||
buffer one byte longer than what should be needed just for the entire
|
||||
string (excluding the '\0'). Most users of this helper are sysfs hooks
|
||||
providing the modalias string to users. They all provide a PAGE_SIZE
|
||||
buffer which is way above the number of bytes required to fit the
|
||||
modalias string and hence do not suffer from this issue.
|
||||
|
||||
There is another user though, of_device_request_module(), which is only
|
||||
called by drivers/usb/common/ulpi.c. This request module function is
|
||||
faulty, but maybe because in most cases there is an alternative, ULPI
|
||||
driver users have not noticed it.
|
||||
|
||||
In this function, of_device_get_modalias() is called twice. The first
|
||||
time without buffer just to get the number of bytes required by the
|
||||
modalias string (excluding the null byte), and a second time, after
|
||||
buffer allocation, to fill the buffer. The allocation asks for an
|
||||
additional byte, in order to store the trailing '\0'. However, the
|
||||
buffer *length* provided to of_device_get_modalias() excludes this extra
|
||||
byte. The internal use of snprintf() with a length that is exactly the
|
||||
number of bytes to be written has the effect of using the last available
|
||||
byte to store a '\0', which then smashes the last character of the
|
||||
modalias string.
|
||||
|
||||
Provide the actual size of the buffer to of_device_get_modalias() to fix
|
||||
this issue.
|
||||
|
||||
Note: the "str[size - 1] = '\0';" line is not really needed as snprintf
|
||||
will anyway end the string with a null byte, but there is a possibility
|
||||
that this function might be called on a struct device_node without
|
||||
compatible, in this case snprintf() would not be executed. So we keep it
|
||||
just to avoid possible unbounded strings.
|
||||
|
||||
Cc: Stephen Boyd <sboyd@kernel.org>
|
||||
Cc: Peter Chen <peter.chen@kernel.org>
|
||||
Fixes: 9c829c097f2f ("of: device: Support loading a module with OF based modalias")
|
||||
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
Reviewed-by: Rob Herring <robh@kernel.org>
|
||||
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
Link: https://lore.kernel.org/r/20230404172148.82422-2-srinivas.kandagatla@linaro.org
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/of/device.c | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/of/device.c
|
||||
+++ b/drivers/of/device.c
|
||||
@@ -290,12 +290,15 @@ int of_device_request_module(struct devi
|
||||
if (size < 0)
|
||||
return size;
|
||||
|
||||
- str = kmalloc(size + 1, GFP_KERNEL);
|
||||
+ /* Reserve an additional byte for the trailing '\0' */
|
||||
+ size++;
|
||||
+
|
||||
+ str = kmalloc(size, GFP_KERNEL);
|
||||
if (!str)
|
||||
return -ENOMEM;
|
||||
|
||||
of_device_get_modalias(dev, str, size);
|
||||
- str[size] = '\0';
|
||||
+ str[size - 1] = '\0';
|
||||
ret = request_module(str);
|
||||
kfree(str);
|
||||
|
||||
@@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#define PACKET_FANOUT_LB 1
|
||||
--- a/net/packet/af_packet.c
|
||||
+++ b/net/packet/af_packet.c
|
||||
@@ -1825,6 +1825,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
@@ -1826,6 +1826,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
{
|
||||
struct sock *sk;
|
||||
struct sockaddr_pkt *spkt;
|
||||
@@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
/*
|
||||
* When we registered the protocol we saved the socket in the data
|
||||
@@ -1832,6 +1833,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
@@ -1833,6 +1834,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
*/
|
||||
|
||||
sk = pt->af_packet_priv;
|
||||
@@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
/*
|
||||
* Yank back the headers [hope the device set this
|
||||
@@ -1844,7 +1846,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
@@ -1845,7 +1847,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
* so that this procedure is noop.
|
||||
*/
|
||||
|
||||
@@ -55,7 +55,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
goto out;
|
||||
|
||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||
@@ -2092,12 +2094,12 @@ static int packet_rcv(struct sk_buff *sk
|
||||
@@ -2093,12 +2095,12 @@ static int packet_rcv(struct sk_buff *sk
|
||||
unsigned int snaplen, res;
|
||||
bool is_drop_n_account = false;
|
||||
|
||||
@@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||
goto drop;
|
||||
|
||||
@@ -2223,12 +2225,12 @@ static int tpacket_rcv(struct sk_buff *s
|
||||
@@ -2224,12 +2226,12 @@ static int tpacket_rcv(struct sk_buff *s
|
||||
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
|
||||
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
|
||||
|
||||
@@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||
goto drop;
|
||||
|
||||
@@ -3339,6 +3341,7 @@ static int packet_create(struct net *net
|
||||
@@ -3342,6 +3344,7 @@ static int packet_create(struct net *net
|
||||
mutex_init(&po->pg_vec_lock);
|
||||
po->rollover = NULL;
|
||||
po->prot_hook.func = packet_rcv;
|
||||
@@ -96,7 +96,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (sock->type == SOCK_PACKET)
|
||||
po->prot_hook.func = packet_rcv_spkt;
|
||||
@@ -3979,6 +3982,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
|
||||
WRITE_ONCE(po->xmit, val ? packet_direct_xmit : dev_queue_xmit);
|
||||
return 0;
|
||||
}
|
||||
+ case PACKET_RECV_TYPE:
|
||||
@@ -128,7 +128,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
break;
|
||||
--- a/net/packet/internal.h
|
||||
+++ b/net/packet/internal.h
|
||||
@@ -137,6 +137,7 @@ struct packet_sock {
|
||||
@@ -136,6 +136,7 @@ struct packet_sock {
|
||||
int (*xmit)(struct sk_buff *skb);
|
||||
struct packet_type prot_hook ____cacheline_aligned_in_smp;
|
||||
atomic_t tp_drops ____cacheline_aligned_in_smp;
|
||||
|
||||
Reference in New Issue
Block a user