* [PATCH v5 0/7] PCI: Remove pcim_iounmap_regions()
@ 2024-08-29 14:16 Philipp Stanner
2024-08-29 14:16 ` [PATCH v5 1/7] PCI: Deprecate pcim_iounmap_regions() Philipp Stanner
` (6 more replies)
0 siblings, 7 replies; 14+ messages in thread
From: Philipp Stanner @ 2024-08-29 14:16 UTC (permalink / raw)
To: Jens Axboe, Wu Hao, Tom Rix, Moritz Fischer, Xu Yilun,
Andy Shevchenko, Linus Walleij, Bartosz Golaszewski,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Bjorn Helgaas, Alvaro Karsz, Michael S. Tsirkin, Jason Wang,
Xuan Zhuo, Eugenio Pérez, Richard Cochran, Damien Le Moal,
Hannes Reinecke, John Garry, Philipp Stanner
Cc: linux-block, linux-kernel, linux-fpga, linux-gpio, netdev,
linux-pci, virtualization
OK, so unfortunately it seems very challenging to reconcile the merge
conflict pointed up by Serge between net-next and pci-devres regarding
"ethernet: stmicro": A patch that applies to the net-next tree does not
apply anymore to pci-devres (and vice versa).
So I actually think that it would be best if we just drop the portation
of "ethernet: stmicro" for now and port it as the last user in v6.13.
Then we can also remove pcim_iounmap_regions() completely.
That should then be trivial.
Changes in v5:
- Patch "ethernet: cavium": Re-add accidentally removed
pcim_iounmap_region(). (Me)
- Add Jens's Reviewed-by to patch "block: mtip32xx". (Jens)
Changes in v4:
- Drop the "ethernet: stmicro: [...] patch since it doesn't apply to
net-next, and making it apply to that prevents it from being
applyable to PCI ._. (Serge, me)
- Instead, deprecate pcim_iounmap_regions() and keep "ethernet:
stimicro" as the last user for now.
- ethernet: cavium: Use PTR_ERR_OR_ZERO(). (Andy)
- vdpa: solidrun (Bugfix) Correct wrong printf string (was "psnet" instead of
"snet"). (Christophe)
- vdpa: solidrun (Bugfix): Add missing blank line. (Andy)
- vdpa: solidrun (Portation): Use PTR_ERR_OR_ZERO(). (Andy)
- Apply Reviewed-by's from Andy and Xu Yilun.
Changes in v3:
- fpga/dfl-pci.c: remove now surplus wrapper around
pcim_iomap_region(). (Andy)
- block: mtip32xx: remove now surplus label. (Andy)
- vdpa: solidrun: Bugfix: Include forgotten place where stack UB
occurs. (Andy, Christophe)
- Some minor wording improvements in commit messages. (Me)
Changes in v2:
- Add a fix for the UB stack usage bug in vdap/solidrun. Separate
patch, put stable kernel on CC. (Christophe, Andy).
- Drop unnecessary pcim_release_region() in mtip32xx (Andy)
- Consequently, drop patch "PCI: Make pcim_release_region() a public
function", since there's no user anymore. (obsoletes the squash
requested by Damien).
- vdap/solidrun:
• make 'i' an 'unsigned short' (Andy, me)
• Use 'continue' to simplify loop (Andy)
• Remove leftover blank line
- Apply given Reviewed- / acked-bys (Andy, Damien, Bartosz)
Important things first:
This series is based on [1] and [2] which Bjorn Helgaas has currently
queued for v6.12 in the PCI tree.
This series shall remove pcim_iounmap_regions() in order to make way to
remove its brother, pcim_iomap_regions().
@Bjorn: Feel free to squash the PCI commits.
Regards,
P.
[1] https://lore.kernel.org/all/20240729093625.17561-4-pstanner@redhat.com/
[2] https://lore.kernel.org/all/20240807083018.8734-2-pstanner@redhat.com/
Philipp Stanner (7):
PCI: Deprecate pcim_iounmap_regions()
fpga/dfl-pci.c: Replace deprecated PCI functions
block: mtip32xx: Replace deprecated PCI functions
gpio: Replace deprecated PCI functions
ethernet: cavium: Replace deprecated PCI functions
vdpa: solidrun: Fix UB bug with devres
vdap: solidrun: Replace deprecated PCI functions
drivers/block/mtip32xx/mtip32xx.c | 18 +++---
drivers/fpga/dfl-pci.c | 16 ++---
drivers/gpio/gpio-merrifield.c | 14 ++---
.../net/ethernet/cavium/common/cavium_ptp.c | 7 +--
drivers/pci/devres.c | 8 ++-
drivers/vdpa/solidrun/snet_main.c | 59 ++++++++-----------
include/linux/pci.h | 1 +
7 files changed, 53 insertions(+), 70 deletions(-)
--
2.46.0
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v5 1/7] PCI: Deprecate pcim_iounmap_regions()
2024-08-29 14:16 [PATCH v5 0/7] PCI: Remove pcim_iounmap_regions() Philipp Stanner
@ 2024-08-29 14:16 ` Philipp Stanner
2024-08-29 14:16 ` [PATCH v5 2/7] fpga/dfl-pci.c: Replace deprecated PCI functions Philipp Stanner
` (5 subsequent siblings)
6 siblings, 0 replies; 14+ messages in thread
From: Philipp Stanner @ 2024-08-29 14:16 UTC (permalink / raw)
To: Jens Axboe, Wu Hao, Tom Rix, Moritz Fischer, Xu Yilun,
Andy Shevchenko, Linus Walleij, Bartosz Golaszewski,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Bjorn Helgaas, Alvaro Karsz, Michael S. Tsirkin, Jason Wang,
Xuan Zhuo, Eugenio Pérez, Richard Cochran, Damien Le Moal,
Hannes Reinecke, John Garry, Philipp Stanner
Cc: linux-block, linux-kernel, linux-fpga, linux-gpio, netdev,
linux-pci, virtualization
The function pcim_iounmap_regions() is problematic because it uses a
bitmask mechanism to release / iounmap multiple BARs at once. It, thus,
prevents getting rid of the problematic iomap table mechanism which was
deprecated in commit e354bb84a4c1 ("PCI: Deprecate pcim_iomap_table(),
pcim_iomap_regions_request_all()").
Make pcim_iounmap_region() public as the successor of
pcim_iounmap_regions().
Mark pcim_iomap_regions() as deprecated.
Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
drivers/pci/devres.c | 8 ++++++--
include/linux/pci.h | 1 +
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/pci/devres.c b/drivers/pci/devres.c
index b97589e99fad..5f6f889249b0 100644
--- a/drivers/pci/devres.c
+++ b/drivers/pci/devres.c
@@ -771,7 +771,7 @@ EXPORT_SYMBOL(pcim_iomap_region);
* Unmap a BAR and release its region manually. Only pass BARs that were
* previously mapped by pcim_iomap_region().
*/
-static void pcim_iounmap_region(struct pci_dev *pdev, int bar)
+void pcim_iounmap_region(struct pci_dev *pdev, int bar)
{
struct pcim_addr_devres res_searched;
@@ -782,6 +782,7 @@ static void pcim_iounmap_region(struct pci_dev *pdev, int bar)
devres_release(&pdev->dev, pcim_addr_resource_release,
pcim_addr_resources_match, &res_searched);
}
+EXPORT_SYMBOL(pcim_iounmap_region);
/**
* pcim_iomap_regions - Request and iomap PCI BARs (DEPRECATED)
@@ -1013,11 +1014,14 @@ int pcim_iomap_regions_request_all(struct pci_dev *pdev, int mask,
EXPORT_SYMBOL(pcim_iomap_regions_request_all);
/**
- * pcim_iounmap_regions - Unmap and release PCI BARs
+ * pcim_iounmap_regions - Unmap and release PCI BARs (DEPRECATED)
* @pdev: PCI device to map IO resources for
* @mask: Mask of BARs to unmap and release
*
* Unmap and release regions specified by @mask.
+ *
+ * This function is DEPRECATED. Do not use it in new code.
+ * Use pcim_iounmap_region() instead.
*/
void pcim_iounmap_regions(struct pci_dev *pdev, int mask)
{
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 01b9f1a351be..9625d8a7b655 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -2297,6 +2297,7 @@ void __iomem * const *pcim_iomap_table(struct pci_dev *pdev);
int pcim_request_region(struct pci_dev *pdev, int bar, const char *name);
void __iomem *pcim_iomap_region(struct pci_dev *pdev, int bar,
const char *name);
+void pcim_iounmap_region(struct pci_dev *pdev, int bar);
int pcim_iomap_regions(struct pci_dev *pdev, int mask, const char *name);
int pcim_iomap_regions_request_all(struct pci_dev *pdev, int mask,
const char *name);
--
2.46.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v5 2/7] fpga/dfl-pci.c: Replace deprecated PCI functions
2024-08-29 14:16 [PATCH v5 0/7] PCI: Remove pcim_iounmap_regions() Philipp Stanner
2024-08-29 14:16 ` [PATCH v5 1/7] PCI: Deprecate pcim_iounmap_regions() Philipp Stanner
@ 2024-08-29 14:16 ` Philipp Stanner
2024-08-29 14:16 ` [PATCH v5 3/7] block: mtip32xx: " Philipp Stanner
` (4 subsequent siblings)
6 siblings, 0 replies; 14+ messages in thread
From: Philipp Stanner @ 2024-08-29 14:16 UTC (permalink / raw)
To: Jens Axboe, Wu Hao, Tom Rix, Moritz Fischer, Xu Yilun,
Andy Shevchenko, Linus Walleij, Bartosz Golaszewski,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Bjorn Helgaas, Alvaro Karsz, Michael S. Tsirkin, Jason Wang,
Xuan Zhuo, Eugenio Pérez, Richard Cochran, Damien Le Moal,
Hannes Reinecke, John Garry, Philipp Stanner
Cc: linux-block, linux-kernel, linux-fpga, linux-gpio, netdev,
linux-pci, virtualization
pcim_iomap_regions() and pcim_iomap_table() have been deprecated by the
PCI subsystem in commit e354bb84a4c1 ("PCI: Deprecate
pcim_iomap_table(), pcim_iomap_regions_request_all()").
Port dfl-pci.c to the successor, pcim_iomap_region().
Consistently, replace pcim_iounmap_regions() with pcim_iounmap_region().
Signed-off-by: Philipp Stanner <pstanner@redhat.com>
Reviewed-by: Andy Shevchenko <andy@kernel.org>
Acked-by: Xu Yilun <yilun.xu@intel.com>
---
drivers/fpga/dfl-pci.c | 16 ++++------------
1 file changed, 4 insertions(+), 12 deletions(-)
diff --git a/drivers/fpga/dfl-pci.c b/drivers/fpga/dfl-pci.c
index 80cac3a5f976..602807d6afcc 100644
--- a/drivers/fpga/dfl-pci.c
+++ b/drivers/fpga/dfl-pci.c
@@ -39,14 +39,6 @@ struct cci_drvdata {
struct dfl_fpga_cdev *cdev; /* container device */
};
-static void __iomem *cci_pci_ioremap_bar0(struct pci_dev *pcidev)
-{
- if (pcim_iomap_regions(pcidev, BIT(0), DRV_NAME))
- return NULL;
-
- return pcim_iomap_table(pcidev)[0];
-}
-
static int cci_pci_alloc_irq(struct pci_dev *pcidev)
{
int ret, nvec = pci_msix_vec_count(pcidev);
@@ -235,9 +227,9 @@ static int find_dfls_by_default(struct pci_dev *pcidev,
u64 v;
/* start to find Device Feature List from Bar 0 */
- base = cci_pci_ioremap_bar0(pcidev);
- if (!base)
- return -ENOMEM;
+ base = pcim_iomap_region(pcidev, 0, DRV_NAME);
+ if (IS_ERR(base))
+ return PTR_ERR(base);
/*
* PF device has FME and Ports/AFUs, and VF device only has one
@@ -296,7 +288,7 @@ static int find_dfls_by_default(struct pci_dev *pcidev,
}
/* release I/O mappings for next step enumeration */
- pcim_iounmap_regions(pcidev, BIT(0));
+ pcim_iounmap_region(pcidev, 0);
return ret;
}
--
2.46.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v5 3/7] block: mtip32xx: Replace deprecated PCI functions
2024-08-29 14:16 [PATCH v5 0/7] PCI: Remove pcim_iounmap_regions() Philipp Stanner
2024-08-29 14:16 ` [PATCH v5 1/7] PCI: Deprecate pcim_iounmap_regions() Philipp Stanner
2024-08-29 14:16 ` [PATCH v5 2/7] fpga/dfl-pci.c: Replace deprecated PCI functions Philipp Stanner
@ 2024-08-29 14:16 ` Philipp Stanner
2024-08-29 14:16 ` [PATCH v5 4/7] gpio: " Philipp Stanner
` (3 subsequent siblings)
6 siblings, 0 replies; 14+ messages in thread
From: Philipp Stanner @ 2024-08-29 14:16 UTC (permalink / raw)
To: Jens Axboe, Wu Hao, Tom Rix, Moritz Fischer, Xu Yilun,
Andy Shevchenko, Linus Walleij, Bartosz Golaszewski,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Bjorn Helgaas, Alvaro Karsz, Michael S. Tsirkin, Jason Wang,
Xuan Zhuo, Eugenio Pérez, Richard Cochran, Damien Le Moal,
Hannes Reinecke, John Garry, Philipp Stanner
Cc: linux-block, linux-kernel, linux-fpga, linux-gpio, netdev,
linux-pci, virtualization
pcim_iomap_regions() and pcim_iomap_table() have been deprecated by the
PCI subsystem in commit e354bb84a4c1 ("PCI: Deprecate
pcim_iomap_table(), pcim_iomap_regions_request_all()").
In mtip32xx, these functions can easily be replaced by their respective
successors, pcim_request_region() and pcim_iomap(). Moreover, the
driver's calls to pcim_iounmap_regions() in probe()'s error path and in
remove() are not necessary. Cleanup can be performed by PCI devres
automatically.
Replace pcim_iomap_regions() and pcim_iomap_table().
Remove the calls to pcim_iounmap_regions().
Signed-off-by: Philipp Stanner <pstanner@redhat.com>
Reviewed-by: Andy Shevchenko <andy@kernel.org>
Reviewed-by: Jens Axboe <axboe@kernel.dk>
---
drivers/block/mtip32xx/mtip32xx.c | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/drivers/block/mtip32xx/mtip32xx.c b/drivers/block/mtip32xx/mtip32xx.c
index c6ef0546ffc9..e4331b065a5e 100644
--- a/drivers/block/mtip32xx/mtip32xx.c
+++ b/drivers/block/mtip32xx/mtip32xx.c
@@ -2716,7 +2716,9 @@ static int mtip_hw_init(struct driver_data *dd)
int rv;
unsigned long timeout, timetaken;
- dd->mmio = pcim_iomap_table(dd->pdev)[MTIP_ABAR];
+ dd->mmio = pcim_iomap(dd->pdev, MTIP_ABAR, 0);
+ if (!dd->mmio)
+ return -ENOMEM;
mtip_detect_product(dd);
if (dd->product_type == MTIP_PRODUCT_UNKNOWN) {
@@ -3722,14 +3724,14 @@ static int mtip_pci_probe(struct pci_dev *pdev,
rv = pcim_enable_device(pdev);
if (rv < 0) {
dev_err(&pdev->dev, "Unable to enable device\n");
- goto iomap_err;
+ goto setmask_err;
}
- /* Map BAR5 to memory. */
- rv = pcim_iomap_regions(pdev, 1 << MTIP_ABAR, MTIP_DRV_NAME);
+ /* Request BAR5. */
+ rv = pcim_request_region(pdev, MTIP_ABAR, MTIP_DRV_NAME);
if (rv < 0) {
- dev_err(&pdev->dev, "Unable to map regions\n");
- goto iomap_err;
+ dev_err(&pdev->dev, "Unable to request regions\n");
+ goto setmask_err;
}
rv = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
@@ -3849,9 +3851,6 @@ static int mtip_pci_probe(struct pci_dev *pdev,
drop_cpu(dd->work[2].cpu_binding);
}
setmask_err:
- pcim_iounmap_regions(pdev, 1 << MTIP_ABAR);
-
-iomap_err:
kfree(dd);
pci_set_drvdata(pdev, NULL);
return rv;
@@ -3925,7 +3924,6 @@ static void mtip_pci_remove(struct pci_dev *pdev)
pci_disable_msi(pdev);
- pcim_iounmap_regions(pdev, 1 << MTIP_ABAR);
pci_set_drvdata(pdev, NULL);
put_disk(dd->disk);
--
2.46.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v5 4/7] gpio: Replace deprecated PCI functions
2024-08-29 14:16 [PATCH v5 0/7] PCI: Remove pcim_iounmap_regions() Philipp Stanner
` (2 preceding siblings ...)
2024-08-29 14:16 ` [PATCH v5 3/7] block: mtip32xx: " Philipp Stanner
@ 2024-08-29 14:16 ` Philipp Stanner
2024-08-29 14:16 ` [PATCH v5 5/7] ethernet: cavium: " Philipp Stanner
` (2 subsequent siblings)
6 siblings, 0 replies; 14+ messages in thread
From: Philipp Stanner @ 2024-08-29 14:16 UTC (permalink / raw)
To: Jens Axboe, Wu Hao, Tom Rix, Moritz Fischer, Xu Yilun,
Andy Shevchenko, Linus Walleij, Bartosz Golaszewski,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Bjorn Helgaas, Alvaro Karsz, Michael S. Tsirkin, Jason Wang,
Xuan Zhuo, Eugenio Pérez, Richard Cochran, Damien Le Moal,
Hannes Reinecke, John Garry, Philipp Stanner
Cc: linux-block, linux-kernel, linux-fpga, linux-gpio, netdev,
linux-pci, virtualization, Bartosz Golaszewski
pcim_iomap_regions() and pcim_iomap_table() have been deprecated by the
PCI subsystem in commit e354bb84a4c1 ("PCI: Deprecate
pcim_iomap_table(), pcim_iomap_regions_request_all()").
Replace those functions with calls to pcim_iomap_region().
Signed-off-by: Philipp Stanner <pstanner@redhat.com>
Reviewed-by: Andy Shevchenko <andy@kernel.org>
Acked-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/gpio/gpio-merrifield.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/gpio/gpio-merrifield.c b/drivers/gpio/gpio-merrifield.c
index 421d7e3a6c66..274afcba31e6 100644
--- a/drivers/gpio/gpio-merrifield.c
+++ b/drivers/gpio/gpio-merrifield.c
@@ -78,24 +78,24 @@ static int mrfld_gpio_probe(struct pci_dev *pdev, const struct pci_device_id *id
if (retval)
return retval;
- retval = pcim_iomap_regions(pdev, BIT(1) | BIT(0), pci_name(pdev));
- if (retval)
- return dev_err_probe(dev, retval, "I/O memory mapping error\n");
-
- base = pcim_iomap_table(pdev)[1];
+ base = pcim_iomap_region(pdev, 1, pci_name(pdev));
+ if (IS_ERR(base))
+ return dev_err_probe(dev, PTR_ERR(base), "I/O memory mapping error\n");
irq_base = readl(base + 0 * sizeof(u32));
gpio_base = readl(base + 1 * sizeof(u32));
/* Release the IO mapping, since we already get the info from BAR1 */
- pcim_iounmap_regions(pdev, BIT(1));
+ pcim_iounmap_region(pdev, 1);
priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
return -ENOMEM;
priv->dev = dev;
- priv->reg_base = pcim_iomap_table(pdev)[0];
+ priv->reg_base = pcim_iomap_region(pdev, 0, pci_name(pdev));
+ if (IS_ERR(priv->reg_base))
+ return dev_err_probe(dev, PTR_ERR(base), "I/O memory mapping error\n");
priv->pin_info.pin_ranges = mrfld_gpio_ranges;
priv->pin_info.nranges = ARRAY_SIZE(mrfld_gpio_ranges);
--
2.46.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v5 5/7] ethernet: cavium: Replace deprecated PCI functions
2024-08-29 14:16 [PATCH v5 0/7] PCI: Remove pcim_iounmap_regions() Philipp Stanner
` (3 preceding siblings ...)
2024-08-29 14:16 ` [PATCH v5 4/7] gpio: " Philipp Stanner
@ 2024-08-29 14:16 ` Philipp Stanner
2024-08-29 14:16 ` [PATCH v5 6/7] vdpa: solidrun: Fix UB bug with devres Philipp Stanner
2024-08-29 14:16 ` [PATCH v5 7/7] vdap: solidrun: Replace deprecated PCI functions Philipp Stanner
6 siblings, 0 replies; 14+ messages in thread
From: Philipp Stanner @ 2024-08-29 14:16 UTC (permalink / raw)
To: Jens Axboe, Wu Hao, Tom Rix, Moritz Fischer, Xu Yilun,
Andy Shevchenko, Linus Walleij, Bartosz Golaszewski,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Bjorn Helgaas, Alvaro Karsz, Michael S. Tsirkin, Jason Wang,
Xuan Zhuo, Eugenio Pérez, Richard Cochran, Damien Le Moal,
Hannes Reinecke, John Garry, Philipp Stanner
Cc: linux-block, linux-kernel, linux-fpga, linux-gpio, netdev,
linux-pci, virtualization
pcim_iomap_regions() and pcim_iomap_table() have been deprecated by
the PCI subsystem in commit e354bb84a4c1 ("PCI: Deprecate
pcim_iomap_table(), pcim_iomap_regions_request_all()").
Furthermore, the driver contains an unneeded call to
pcim_iounmap_regions() in its probe() function's error unwind path.
Replace the deprecated PCI functions with pcim_iomap_region().
Remove the unnecessary call to pcim_iounmap_regions().
Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
drivers/net/ethernet/cavium/common/cavium_ptp.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/cavium/common/cavium_ptp.c b/drivers/net/ethernet/cavium/common/cavium_ptp.c
index 9fd717b9cf69..984f0dd7b62e 100644
--- a/drivers/net/ethernet/cavium/common/cavium_ptp.c
+++ b/drivers/net/ethernet/cavium/common/cavium_ptp.c
@@ -239,12 +239,11 @@ static int cavium_ptp_probe(struct pci_dev *pdev,
if (err)
goto error_free;
- err = pcim_iomap_regions(pdev, 1 << PCI_PTP_BAR_NO, pci_name(pdev));
+ clock->reg_base = pcim_iomap_region(pdev, PCI_PTP_BAR_NO, pci_name(pdev));
+ err = PTR_ERR_OR_ZERO(clock->reg_base);
if (err)
goto error_free;
- clock->reg_base = pcim_iomap_table(pdev)[PCI_PTP_BAR_NO];
-
spin_lock_init(&clock->spin_lock);
cc = &clock->cycle_counter;
@@ -292,7 +291,7 @@ static int cavium_ptp_probe(struct pci_dev *pdev,
clock_cfg = readq(clock->reg_base + PTP_CLOCK_CFG);
clock_cfg &= ~PTP_CLOCK_CFG_PTP_EN;
writeq(clock_cfg, clock->reg_base + PTP_CLOCK_CFG);
- pcim_iounmap_regions(pdev, 1 << PCI_PTP_BAR_NO);
+ pcim_iounmap_region(pdev, PCI_PTP_BAR_NO);
error_free:
devm_kfree(dev, clock);
--
2.46.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v5 6/7] vdpa: solidrun: Fix UB bug with devres
2024-08-29 14:16 [PATCH v5 0/7] PCI: Remove pcim_iounmap_regions() Philipp Stanner
` (4 preceding siblings ...)
2024-08-29 14:16 ` [PATCH v5 5/7] ethernet: cavium: " Philipp Stanner
@ 2024-08-29 14:16 ` Philipp Stanner
2024-08-29 14:23 ` Michael S. Tsirkin
2024-08-29 14:16 ` [PATCH v5 7/7] vdap: solidrun: Replace deprecated PCI functions Philipp Stanner
6 siblings, 1 reply; 14+ messages in thread
From: Philipp Stanner @ 2024-08-29 14:16 UTC (permalink / raw)
To: Jens Axboe, Wu Hao, Tom Rix, Moritz Fischer, Xu Yilun,
Andy Shevchenko, Linus Walleij, Bartosz Golaszewski,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Bjorn Helgaas, Alvaro Karsz, Michael S. Tsirkin, Jason Wang,
Xuan Zhuo, Eugenio Pérez, Richard Cochran, Damien Le Moal,
Hannes Reinecke, John Garry, Philipp Stanner
Cc: linux-block, linux-kernel, linux-fpga, linux-gpio, netdev,
linux-pci, virtualization, stable, Christophe JAILLET
In psnet_open_pf_bar() and snet_open_vf_bar() a string later passed to
pcim_iomap_regions() is placed on the stack. Neither
pcim_iomap_regions() nor the functions it calls copy that string.
Should the string later ever be used, this, consequently, causes
undefined behavior since the stack frame will by then have disappeared.
Fix the bug by allocating the strings on the heap through
devm_kasprintf().
Cc: stable@vger.kernel.org # v6.3
Fixes: 51a8f9d7f587 ("virtio: vdpa: new SolidNET DPU driver.")
Reported-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Closes: https://lore.kernel.org/all/74e9109a-ac59-49e2-9b1d-d825c9c9f891@wanadoo.fr/
Suggested-by: Andy Shevchenko <andy@kernel.org>
Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
drivers/vdpa/solidrun/snet_main.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/drivers/vdpa/solidrun/snet_main.c b/drivers/vdpa/solidrun/snet_main.c
index 99428a04068d..c8b74980dbd1 100644
--- a/drivers/vdpa/solidrun/snet_main.c
+++ b/drivers/vdpa/solidrun/snet_main.c
@@ -555,7 +555,7 @@ static const struct vdpa_config_ops snet_config_ops = {
static int psnet_open_pf_bar(struct pci_dev *pdev, struct psnet *psnet)
{
- char name[50];
+ char *name;
int ret, i, mask = 0;
/* We don't know which BAR will be used to communicate..
* We will map every bar with len > 0.
@@ -573,7 +573,10 @@ static int psnet_open_pf_bar(struct pci_dev *pdev, struct psnet *psnet)
return -ENODEV;
}
- snprintf(name, sizeof(name), "psnet[%s]-bars", pci_name(pdev));
+ name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "psnet[%s]-bars", pci_name(pdev));
+ if (!name)
+ return -ENOMEM;
+
ret = pcim_iomap_regions(pdev, mask, name);
if (ret) {
SNET_ERR(pdev, "Failed to request and map PCI BARs\n");
@@ -590,10 +593,13 @@ static int psnet_open_pf_bar(struct pci_dev *pdev, struct psnet *psnet)
static int snet_open_vf_bar(struct pci_dev *pdev, struct snet *snet)
{
- char name[50];
+ char *name;
int ret;
- snprintf(name, sizeof(name), "snet[%s]-bar", pci_name(pdev));
+ name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "snet[%s]-bars", pci_name(pdev));
+ if (!name)
+ return -ENOMEM;
+
/* Request and map BAR */
ret = pcim_iomap_regions(pdev, BIT(snet->psnet->cfg.vf_bar), name);
if (ret) {
--
2.46.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v5 7/7] vdap: solidrun: Replace deprecated PCI functions
2024-08-29 14:16 [PATCH v5 0/7] PCI: Remove pcim_iounmap_regions() Philipp Stanner
` (5 preceding siblings ...)
2024-08-29 14:16 ` [PATCH v5 6/7] vdpa: solidrun: Fix UB bug with devres Philipp Stanner
@ 2024-08-29 14:16 ` Philipp Stanner
6 siblings, 0 replies; 14+ messages in thread
From: Philipp Stanner @ 2024-08-29 14:16 UTC (permalink / raw)
To: Jens Axboe, Wu Hao, Tom Rix, Moritz Fischer, Xu Yilun,
Andy Shevchenko, Linus Walleij, Bartosz Golaszewski,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Bjorn Helgaas, Alvaro Karsz, Michael S. Tsirkin, Jason Wang,
Xuan Zhuo, Eugenio Pérez, Richard Cochran, Damien Le Moal,
Hannes Reinecke, John Garry, Philipp Stanner
Cc: linux-block, linux-kernel, linux-fpga, linux-gpio, netdev,
linux-pci, virtualization
solidrun utilizes pcim_iomap_regions(), which has been deprecated by the
PCI subsystem in commit e354bb84a4c1 ("PCI: Deprecate
pcim_iomap_table(), pcim_iomap_regions_request_all()"), among other
things because it forces usage of quite a complicated bitmask mechanism.
The bitmask handling code can entirely be removed by replacing
pcim_iomap_regions() and pcim_iomap_table().
Replace pcim_iomap_regions() and pcim_iomap_table() with
pcim_iomap_region().
Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
drivers/vdpa/solidrun/snet_main.c | 53 +++++++++++--------------------
1 file changed, 18 insertions(+), 35 deletions(-)
diff --git a/drivers/vdpa/solidrun/snet_main.c b/drivers/vdpa/solidrun/snet_main.c
index c8b74980dbd1..2b7ff071aab9 100644
--- a/drivers/vdpa/solidrun/snet_main.c
+++ b/drivers/vdpa/solidrun/snet_main.c
@@ -556,36 +556,25 @@ static const struct vdpa_config_ops snet_config_ops = {
static int psnet_open_pf_bar(struct pci_dev *pdev, struct psnet *psnet)
{
char *name;
- int ret, i, mask = 0;
+ unsigned short i;
+
+ name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "psnet[%s]-bars", pci_name(pdev));
+ if (!name)
+ return -ENOMEM;
+
/* We don't know which BAR will be used to communicate..
* We will map every bar with len > 0.
*
* Later, we will discover the BAR and unmap all other BARs.
*/
for (i = 0; i < PCI_STD_NUM_BARS; i++) {
- if (pci_resource_len(pdev, i))
- mask |= (1 << i);
- }
-
- /* No BAR can be used.. */
- if (!mask) {
- SNET_ERR(pdev, "Failed to find a PCI BAR\n");
- return -ENODEV;
- }
-
- name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "psnet[%s]-bars", pci_name(pdev));
- if (!name)
- return -ENOMEM;
-
- ret = pcim_iomap_regions(pdev, mask, name);
- if (ret) {
- SNET_ERR(pdev, "Failed to request and map PCI BARs\n");
- return ret;
- }
-
- for (i = 0; i < PCI_STD_NUM_BARS; i++) {
- if (mask & (1 << i))
- psnet->bars[i] = pcim_iomap_table(pdev)[i];
+ if (!pci_resource_len(pdev, i))
+ continue;
+ psnet->bars[i] = pcim_iomap_region(pdev, i, name);
+ if (IS_ERR(psnet->bars[i])) {
+ SNET_ERR(pdev, "Failed to request and map PCI BARs\n");
+ return PTR_ERR(psnet->bars[i]);
+ }
}
return 0;
@@ -594,21 +583,18 @@ static int psnet_open_pf_bar(struct pci_dev *pdev, struct psnet *psnet)
static int snet_open_vf_bar(struct pci_dev *pdev, struct snet *snet)
{
char *name;
- int ret;
name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "snet[%s]-bars", pci_name(pdev));
if (!name)
return -ENOMEM;
/* Request and map BAR */
- ret = pcim_iomap_regions(pdev, BIT(snet->psnet->cfg.vf_bar), name);
- if (ret) {
+ snet->bar = pcim_iomap_region(pdev, snet->psnet->cfg.vf_bar, name);
+ if (IS_ERR(snet->bar)) {
SNET_ERR(pdev, "Failed to request and map PCI BAR for a VF\n");
- return ret;
+ return PTR_ERR(snet->bar);
}
- snet->bar = pcim_iomap_table(pdev)[snet->psnet->cfg.vf_bar];
-
return 0;
}
@@ -656,15 +642,12 @@ static int psnet_detect_bar(struct psnet *psnet, u32 off)
static void psnet_unmap_unused_bars(struct pci_dev *pdev, struct psnet *psnet)
{
- int i, mask = 0;
+ unsigned short i;
for (i = 0; i < PCI_STD_NUM_BARS; i++) {
if (psnet->bars[i] && i != psnet->barno)
- mask |= (1 << i);
+ pcim_iounmap_region(pdev, i);
}
-
- if (mask)
- pcim_iounmap_regions(pdev, mask);
}
/* Read SNET config from PCI BAR */
--
2.46.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v5 6/7] vdpa: solidrun: Fix UB bug with devres
2024-08-29 14:16 ` [PATCH v5 6/7] vdpa: solidrun: Fix UB bug with devres Philipp Stanner
@ 2024-08-29 14:23 ` Michael S. Tsirkin
2024-08-29 14:26 ` Andy Shevchenko
0 siblings, 1 reply; 14+ messages in thread
From: Michael S. Tsirkin @ 2024-08-29 14:23 UTC (permalink / raw)
To: Philipp Stanner
Cc: Jens Axboe, Wu Hao, Tom Rix, Moritz Fischer, Xu Yilun,
Andy Shevchenko, Linus Walleij, Bartosz Golaszewski,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Bjorn Helgaas, Alvaro Karsz, Jason Wang, Xuan Zhuo,
Eugenio Pérez, Richard Cochran, Damien Le Moal,
Hannes Reinecke, John Garry, linux-block, linux-kernel,
linux-fpga, linux-gpio, netdev, linux-pci, virtualization, stable,
Christophe JAILLET
On Thu, Aug 29, 2024 at 04:16:25PM +0200, Philipp Stanner wrote:
> In psnet_open_pf_bar() and snet_open_vf_bar() a string later passed to
> pcim_iomap_regions() is placed on the stack. Neither
> pcim_iomap_regions() nor the functions it calls copy that string.
>
> Should the string later ever be used, this, consequently, causes
> undefined behavior since the stack frame will by then have disappeared.
>
> Fix the bug by allocating the strings on the heap through
> devm_kasprintf().
>
> Cc: stable@vger.kernel.org # v6.3
> Fixes: 51a8f9d7f587 ("virtio: vdpa: new SolidNET DPU driver.")
> Reported-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> Closes: https://lore.kernel.org/all/74e9109a-ac59-49e2-9b1d-d825c9c9f891@wanadoo.fr/
> Suggested-by: Andy Shevchenko <andy@kernel.org>
> Signed-off-by: Philipp Stanner <pstanner@redhat.com>
Post this separately, so I can apply?
> ---
> drivers/vdpa/solidrun/snet_main.c | 14 ++++++++++----
> 1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/vdpa/solidrun/snet_main.c b/drivers/vdpa/solidrun/snet_main.c
> index 99428a04068d..c8b74980dbd1 100644
> --- a/drivers/vdpa/solidrun/snet_main.c
> +++ b/drivers/vdpa/solidrun/snet_main.c
> @@ -555,7 +555,7 @@ static const struct vdpa_config_ops snet_config_ops = {
>
> static int psnet_open_pf_bar(struct pci_dev *pdev, struct psnet *psnet)
> {
> - char name[50];
> + char *name;
> int ret, i, mask = 0;
> /* We don't know which BAR will be used to communicate..
> * We will map every bar with len > 0.
> @@ -573,7 +573,10 @@ static int psnet_open_pf_bar(struct pci_dev *pdev, struct psnet *psnet)
> return -ENODEV;
> }
>
> - snprintf(name, sizeof(name), "psnet[%s]-bars", pci_name(pdev));
> + name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "psnet[%s]-bars", pci_name(pdev));
> + if (!name)
> + return -ENOMEM;
> +
> ret = pcim_iomap_regions(pdev, mask, name);
> if (ret) {
> SNET_ERR(pdev, "Failed to request and map PCI BARs\n");
> @@ -590,10 +593,13 @@ static int psnet_open_pf_bar(struct pci_dev *pdev, struct psnet *psnet)
>
> static int snet_open_vf_bar(struct pci_dev *pdev, struct snet *snet)
> {
> - char name[50];
> + char *name;
> int ret;
>
> - snprintf(name, sizeof(name), "snet[%s]-bar", pci_name(pdev));
> + name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "snet[%s]-bars", pci_name(pdev));
> + if (!name)
> + return -ENOMEM;
> +
> /* Request and map BAR */
> ret = pcim_iomap_regions(pdev, BIT(snet->psnet->cfg.vf_bar), name);
> if (ret) {
> --
> 2.46.0
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v5 6/7] vdpa: solidrun: Fix UB bug with devres
2024-08-29 14:23 ` Michael S. Tsirkin
@ 2024-08-29 14:26 ` Andy Shevchenko
2024-08-29 14:41 ` Michael S. Tsirkin
0 siblings, 1 reply; 14+ messages in thread
From: Andy Shevchenko @ 2024-08-29 14:26 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Philipp Stanner, Jens Axboe, Wu Hao, Tom Rix, Moritz Fischer,
Xu Yilun, Andy Shevchenko, Linus Walleij, Bartosz Golaszewski,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Bjorn Helgaas, Alvaro Karsz, Jason Wang, Xuan Zhuo,
Eugenio Pérez, Richard Cochran, Damien Le Moal,
Hannes Reinecke, John Garry, linux-block, linux-kernel,
linux-fpga, linux-gpio, netdev, linux-pci, virtualization, stable,
Christophe JAILLET
On Thu, Aug 29, 2024 at 5:23 PM Michael S. Tsirkin <mst@redhat.com> wrote:
>
> On Thu, Aug 29, 2024 at 04:16:25PM +0200, Philipp Stanner wrote:
> > In psnet_open_pf_bar() and snet_open_vf_bar() a string later passed to
> > pcim_iomap_regions() is placed on the stack. Neither
> > pcim_iomap_regions() nor the functions it calls copy that string.
> >
> > Should the string later ever be used, this, consequently, causes
> > undefined behavior since the stack frame will by then have disappeared.
> >
> > Fix the bug by allocating the strings on the heap through
> > devm_kasprintf().
> >
> > Cc: stable@vger.kernel.org # v6.3
> > Fixes: 51a8f9d7f587 ("virtio: vdpa: new SolidNET DPU driver.")
> > Reported-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> > Closes: https://lore.kernel.org/all/74e9109a-ac59-49e2-9b1d-d825c9c9f891@wanadoo.fr/
> > Suggested-by: Andy Shevchenko <andy@kernel.org>
> > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
>
> Post this separately, so I can apply?
Don't you use `b4`? With it it as simple as
b4 am -P 6 $MSG_ID_OF_THIS_SERIES
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v5 6/7] vdpa: solidrun: Fix UB bug with devres
2024-08-29 14:26 ` Andy Shevchenko
@ 2024-08-29 14:41 ` Michael S. Tsirkin
2024-08-29 14:49 ` Philipp Stanner
0 siblings, 1 reply; 14+ messages in thread
From: Michael S. Tsirkin @ 2024-08-29 14:41 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Philipp Stanner, Jens Axboe, Wu Hao, Tom Rix, Moritz Fischer,
Xu Yilun, Andy Shevchenko, Linus Walleij, Bartosz Golaszewski,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Bjorn Helgaas, Alvaro Karsz, Jason Wang, Xuan Zhuo,
Eugenio Pérez, Richard Cochran, Damien Le Moal,
Hannes Reinecke, John Garry, linux-block, linux-kernel,
linux-fpga, linux-gpio, netdev, linux-pci, virtualization, stable,
Christophe JAILLET
On Thu, Aug 29, 2024 at 05:26:39PM +0300, Andy Shevchenko wrote:
> On Thu, Aug 29, 2024 at 5:23 PM Michael S. Tsirkin <mst@redhat.com> wrote:
> >
> > On Thu, Aug 29, 2024 at 04:16:25PM +0200, Philipp Stanner wrote:
> > > In psnet_open_pf_bar() and snet_open_vf_bar() a string later passed to
> > > pcim_iomap_regions() is placed on the stack. Neither
> > > pcim_iomap_regions() nor the functions it calls copy that string.
> > >
> > > Should the string later ever be used, this, consequently, causes
> > > undefined behavior since the stack frame will by then have disappeared.
> > >
> > > Fix the bug by allocating the strings on the heap through
> > > devm_kasprintf().
> > >
> > > Cc: stable@vger.kernel.org # v6.3
> > > Fixes: 51a8f9d7f587 ("virtio: vdpa: new SolidNET DPU driver.")
> > > Reported-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> > > Closes: https://lore.kernel.org/all/74e9109a-ac59-49e2-9b1d-d825c9c9f891@wanadoo.fr/
> > > Suggested-by: Andy Shevchenko <andy@kernel.org>
> > > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> >
> > Post this separately, so I can apply?
>
> Don't you use `b4`? With it it as simple as
>
> b4 am -P 6 $MSG_ID_OF_THIS_SERIES
>
> --
> With Best Regards,
> Andy Shevchenko
I can do all kind of things, but if it's posted as part of a patchset,
it is not clear to me this has been tested outside of the patchset.
--
MST
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v5 6/7] vdpa: solidrun: Fix UB bug with devres
2024-08-29 14:41 ` Michael S. Tsirkin
@ 2024-08-29 14:49 ` Philipp Stanner
2024-08-29 15:10 ` Michael S. Tsirkin
0 siblings, 1 reply; 14+ messages in thread
From: Philipp Stanner @ 2024-08-29 14:49 UTC (permalink / raw)
To: Michael S. Tsirkin, Andy Shevchenko
Cc: Jens Axboe, Wu Hao, Tom Rix, Moritz Fischer, Xu Yilun,
Andy Shevchenko, Linus Walleij, Bartosz Golaszewski,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Bjorn Helgaas, Alvaro Karsz, Jason Wang, Xuan Zhuo,
Eugenio Pérez, Richard Cochran, Damien Le Moal,
Hannes Reinecke, John Garry, linux-block, linux-kernel,
linux-fpga, linux-gpio, netdev, linux-pci, virtualization, stable,
Christophe JAILLET
On Thu, 2024-08-29 at 10:41 -0400, Michael S. Tsirkin wrote:
> On Thu, Aug 29, 2024 at 05:26:39PM +0300, Andy Shevchenko wrote:
> > On Thu, Aug 29, 2024 at 5:23 PM Michael S. Tsirkin <mst@redhat.com>
> > wrote:
> > >
> > > On Thu, Aug 29, 2024 at 04:16:25PM +0200, Philipp Stanner wrote:
> > > > In psnet_open_pf_bar() and snet_open_vf_bar() a string later
> > > > passed to
> > > > pcim_iomap_regions() is placed on the stack. Neither
> > > > pcim_iomap_regions() nor the functions it calls copy that
> > > > string.
> > > >
> > > > Should the string later ever be used, this, consequently,
> > > > causes
> > > > undefined behavior since the stack frame will by then have
> > > > disappeared.
> > > >
> > > > Fix the bug by allocating the strings on the heap through
> > > > devm_kasprintf().
> > > >
> > > > Cc: stable@vger.kernel.org # v6.3
> > > > Fixes: 51a8f9d7f587 ("virtio: vdpa: new SolidNET DPU driver.")
> > > > Reported-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> > > > Closes:
> > > > https://lore.kernel.org/all/74e9109a-ac59-49e2-9b1d-d825c9c9f891@wanadoo.fr/
> > > > Suggested-by: Andy Shevchenko <andy@kernel.org>
> > > > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > >
> > > Post this separately, so I can apply?
> >
> > Don't you use `b4`? With it it as simple as
> >
> > b4 am -P 6 $MSG_ID_OF_THIS_SERIES
> >
> > --
> > With Best Regards,
> > Andy Shevchenko
>
> I can do all kind of things, but if it's posted as part of a
> patchset,
> it is not clear to me this has been tested outside of the patchset.
>
Separating it from the series would lead to merge conflicts, because
patch 7 depends on it.
If you're responsible for vdpa in general I could send patches 6 and 7
separately to you.
But number 7 depends on number 1, because pcim_iounmap_region() needs
to be public. So if patches 1-5 enter through a different tree than
yours, that could be a problem.
P.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v5 6/7] vdpa: solidrun: Fix UB bug with devres
2024-08-29 14:49 ` Philipp Stanner
@ 2024-08-29 15:10 ` Michael S. Tsirkin
2024-08-30 8:05 ` Philipp Stanner
0 siblings, 1 reply; 14+ messages in thread
From: Michael S. Tsirkin @ 2024-08-29 15:10 UTC (permalink / raw)
To: Philipp Stanner
Cc: Andy Shevchenko, Jens Axboe, Wu Hao, Tom Rix, Moritz Fischer,
Xu Yilun, Andy Shevchenko, Linus Walleij, Bartosz Golaszewski,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Bjorn Helgaas, Alvaro Karsz, Jason Wang, Xuan Zhuo,
Eugenio Pérez, Richard Cochran, Damien Le Moal,
Hannes Reinecke, John Garry, linux-block, linux-kernel,
linux-fpga, linux-gpio, netdev, linux-pci, virtualization, stable,
Christophe JAILLET
On Thu, Aug 29, 2024 at 04:49:50PM +0200, Philipp Stanner wrote:
> On Thu, 2024-08-29 at 10:41 -0400, Michael S. Tsirkin wrote:
> > On Thu, Aug 29, 2024 at 05:26:39PM +0300, Andy Shevchenko wrote:
> > > On Thu, Aug 29, 2024 at 5:23 PM Michael S. Tsirkin <mst@redhat.com>
> > > wrote:
> > > >
> > > > On Thu, Aug 29, 2024 at 04:16:25PM +0200, Philipp Stanner wrote:
> > > > > In psnet_open_pf_bar() and snet_open_vf_bar() a string later
> > > > > passed to
> > > > > pcim_iomap_regions() is placed on the stack. Neither
> > > > > pcim_iomap_regions() nor the functions it calls copy that
> > > > > string.
> > > > >
> > > > > Should the string later ever be used, this, consequently,
> > > > > causes
> > > > > undefined behavior since the stack frame will by then have
> > > > > disappeared.
> > > > >
> > > > > Fix the bug by allocating the strings on the heap through
> > > > > devm_kasprintf().
> > > > >
> > > > > Cc: stable@vger.kernel.org # v6.3
> > > > > Fixes: 51a8f9d7f587 ("virtio: vdpa: new SolidNET DPU driver.")
> > > > > Reported-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> > > > > Closes:
> > > > > https://lore.kernel.org/all/74e9109a-ac59-49e2-9b1d-d825c9c9f891@wanadoo.fr/
> > > > > Suggested-by: Andy Shevchenko <andy@kernel.org>
> > > > > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > > >
> > > > Post this separately, so I can apply?
> > >
> > > Don't you use `b4`? With it it as simple as
> > >
> > > b4 am -P 6 $MSG_ID_OF_THIS_SERIES
> > >
> > > --
> > > With Best Regards,
> > > Andy Shevchenko
> >
> > I can do all kind of things, but if it's posted as part of a
> > patchset,
> > it is not clear to me this has been tested outside of the patchset.
> >
>
> Separating it from the series would lead to merge conflicts, because
> patch 7 depends on it.
>
> If you're responsible for vdpa in general I could send patches 6 and 7
> separately to you.
>
> But number 7 depends on number 1, because pcim_iounmap_region() needs
> to be public. So if patches 1-5 enter through a different tree than
> yours, that could be a problem.
>
>
> P.
Defer 1/7 until after the merge window, this is what is normally done.
Adding new warnings is not nice, anyway.
--
MST
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v5 6/7] vdpa: solidrun: Fix UB bug with devres
2024-08-29 15:10 ` Michael S. Tsirkin
@ 2024-08-30 8:05 ` Philipp Stanner
0 siblings, 0 replies; 14+ messages in thread
From: Philipp Stanner @ 2024-08-30 8:05 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Andy Shevchenko, Jens Axboe, Wu Hao, Tom Rix, Moritz Fischer,
Xu Yilun, Andy Shevchenko, Linus Walleij, Bartosz Golaszewski,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Bjorn Helgaas, Alvaro Karsz, Jason Wang, Xuan Zhuo,
Eugenio Pérez, Richard Cochran, Damien Le Moal,
Hannes Reinecke, John Garry, linux-block, linux-kernel,
linux-fpga, linux-gpio, netdev, linux-pci, virtualization, stable,
Christophe JAILLET
On Thu, 2024-08-29 at 11:10 -0400, Michael S. Tsirkin wrote:
> On Thu, Aug 29, 2024 at 04:49:50PM +0200, Philipp Stanner wrote:
> > On Thu, 2024-08-29 at 10:41 -0400, Michael S. Tsirkin wrote:
> > > On Thu, Aug 29, 2024 at 05:26:39PM +0300, Andy Shevchenko wrote:
> > > > On Thu, Aug 29, 2024 at 5:23 PM Michael S. Tsirkin
> > > > <mst@redhat.com>
> > > > wrote:
> > > > >
> > > > > On Thu, Aug 29, 2024 at 04:16:25PM +0200, Philipp Stanner
> > > > > wrote:
> > > > > > In psnet_open_pf_bar() and snet_open_vf_bar() a string
> > > > > > later
> > > > > > passed to
> > > > > > pcim_iomap_regions() is placed on the stack. Neither
> > > > > > pcim_iomap_regions() nor the functions it calls copy that
> > > > > > string.
> > > > > >
> > > > > > Should the string later ever be used, this, consequently,
> > > > > > causes
> > > > > > undefined behavior since the stack frame will by then have
> > > > > > disappeared.
> > > > > >
> > > > > > Fix the bug by allocating the strings on the heap through
> > > > > > devm_kasprintf().
> > > > > >
> > > > > > Cc: stable@vger.kernel.org # v6.3
> > > > > > Fixes: 51a8f9d7f587 ("virtio: vdpa: new SolidNET DPU
> > > > > > driver.")
> > > > > > Reported-by: Christophe JAILLET
> > > > > > <christophe.jaillet@wanadoo.fr>
> > > > > > Closes:
> > > > > > https://lore.kernel.org/all/74e9109a-ac59-49e2-9b1d-d825c9c9f891@wanadoo.fr/
> > > > > > Suggested-by: Andy Shevchenko <andy@kernel.org>
> > > > > > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > > > >
> > > > > Post this separately, so I can apply?
> > > >
> > > > Don't you use `b4`? With it it as simple as
> > > >
> > > > b4 am -P 6 $MSG_ID_OF_THIS_SERIES
> > > >
> > > > --
> > > > With Best Regards,
> > > > Andy Shevchenko
> > >
> > > I can do all kind of things, but if it's posted as part of a
> > > patchset,
> > > it is not clear to me this has been tested outside of the
> > > patchset.
> > >
> >
> > Separating it from the series would lead to merge conflicts,
> > because
> > patch 7 depends on it.
> >
> > If you're responsible for vdpa in general I could send patches 6
> > and 7
> > separately to you.
> >
> > But number 7 depends on number 1, because pcim_iounmap_region()
> > needs
> > to be public. So if patches 1-5 enter through a different tree than
> > yours, that could be a problem.
> >
> >
> > P.
>
> Defer 1/7 until after the merge window, this is what is normally
> done.
1 cannot be deferred. Take a look what 1 does.
Your message is not comprehensible. Be so kind and write some more
sentences.
*What* is normally done? Sending patches? It's up to subsystem
maintainers to queue them for the right cycle.
> Adding new warnings is not nice, anyway.
What?
>
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2024-08-30 8:06 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-29 14:16 [PATCH v5 0/7] PCI: Remove pcim_iounmap_regions() Philipp Stanner
2024-08-29 14:16 ` [PATCH v5 1/7] PCI: Deprecate pcim_iounmap_regions() Philipp Stanner
2024-08-29 14:16 ` [PATCH v5 2/7] fpga/dfl-pci.c: Replace deprecated PCI functions Philipp Stanner
2024-08-29 14:16 ` [PATCH v5 3/7] block: mtip32xx: " Philipp Stanner
2024-08-29 14:16 ` [PATCH v5 4/7] gpio: " Philipp Stanner
2024-08-29 14:16 ` [PATCH v5 5/7] ethernet: cavium: " Philipp Stanner
2024-08-29 14:16 ` [PATCH v5 6/7] vdpa: solidrun: Fix UB bug with devres Philipp Stanner
2024-08-29 14:23 ` Michael S. Tsirkin
2024-08-29 14:26 ` Andy Shevchenko
2024-08-29 14:41 ` Michael S. Tsirkin
2024-08-29 14:49 ` Philipp Stanner
2024-08-29 15:10 ` Michael S. Tsirkin
2024-08-30 8:05 ` Philipp Stanner
2024-08-29 14:16 ` [PATCH v5 7/7] vdap: solidrun: Replace deprecated PCI functions Philipp Stanner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).