Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit daac3bbe authored by Eric Auger's avatar Eric Auger Committed by Alex Williamson
Browse files

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: default avatarEric Auger <eric.auger@linaro.org>
Signed-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
parent 705e60ba
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -59,20 +59,20 @@ static inline void xgmac_mac_disable(void __iomem *ioaddr)

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) {
		reg.ioaddr =
			ioremap_nocache(reg.addr, reg.size);
		if (!reg.ioaddr)
	if (!reg->ioaddr) {
		reg->ioaddr =
			ioremap_nocache(reg->addr, reg->size);
		if (!reg->ioaddr)
			return -ENOMEM;
	}

	/* disable IRQ */
	writel(0, reg.ioaddr + XGMAC_DMA_INTR_ENA);
	writel(0, reg->ioaddr + XGMAC_DMA_INTR_ENA);

	/* Disable the MAC core */
	xgmac_mac_disable(reg.ioaddr);
	xgmac_mac_disable(reg->ioaddr);

	return 0;
}