vfio: platform: reset: calxedaxgmac: fix ioaddr leak
In the current code the vfio_platform_region is copied on the stack. As a consequence the ioaddr address is not iounmapped in the vfio platform driver (vfio_platform_regions_cleanup). The patch uses the pointer to the region instead. Signed-off-by: Eric Auger <eric.auger@linaro.org> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
parent
705e60bae3
commit
daac3bbedb
1 changed files with 7 additions and 7 deletions
|
@ -59,20 +59,20 @@ static inline void xgmac_mac_disable(void __iomem *ioaddr)
|
||||||
|
|
||||||
int vfio_platform_calxedaxgmac_reset(struct vfio_platform_device *vdev)
|
int vfio_platform_calxedaxgmac_reset(struct vfio_platform_device *vdev)
|
||||||
{
|
{
|
||||||
struct vfio_platform_region reg = vdev->regions[0];
|
struct vfio_platform_region *reg = &vdev->regions[0];
|
||||||
|
|
||||||
if (!reg.ioaddr) {
|
if (!reg->ioaddr) {
|
||||||
reg.ioaddr =
|
reg->ioaddr =
|
||||||
ioremap_nocache(reg.addr, reg.size);
|
ioremap_nocache(reg->addr, reg->size);
|
||||||
if (!reg.ioaddr)
|
if (!reg->ioaddr)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* disable IRQ */
|
/* disable IRQ */
|
||||||
writel(0, reg.ioaddr + XGMAC_DMA_INTR_ENA);
|
writel(0, reg->ioaddr + XGMAC_DMA_INTR_ENA);
|
||||||
|
|
||||||
/* Disable the MAC core */
|
/* Disable the MAC core */
|
||||||
xgmac_mac_disable(reg.ioaddr);
|
xgmac_mac_disable(reg->ioaddr);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue