> + bus = mdiobus_alloc_size(sizeof(u32 *)); > + if (!bus) > + return -ENOMEM; > + > + bus->priv = pci_iomap_range(pdev, 0, ENETC_MDIO_REG_OFFSET, 0); This got me confused for a while. You allocate space for a u32 pointer. bus->priv will point to this space. However, you are not using this space, you {ab}use the pointer to directly hold the return from pci_iomap_range(). This works, but sparse is probably unhappy, and you are wasting the space the u32 pointer takes. Andrew