[PATCH v2] cxl: prevent read/write to AFU config space while AFU not configured
Frederic Barrat
fbarrat at linux.vnet.ibm.com
Sat Dec 10 03:30:40 AEDT 2016
> diff --git a/drivers/misc/cxl/vphb.c b/drivers/misc/cxl/vphb.c
> index 3519ace..639a343 100644
> --- a/drivers/misc/cxl/vphb.c
> +++ b/drivers/misc/cxl/vphb.c
> @@ -76,23 +76,22 @@ static int cxl_pcie_cfg_record(u8 bus, u8 devfn)
> return (bus << 8) + devfn;
> }
>
> -static int cxl_pcie_config_info(struct pci_bus *bus, unsigned int devfn,
> - struct cxl_afu **_afu, int *_record)
> +static inline struct cxl_afu *pci_bus_to_afu(struct pci_bus *bus)
> {
> - struct pci_controller *phb;
> - struct cxl_afu *afu;
> - int record;
> + struct pci_controller *phb = bus ? pci_bus_to_host(bus) : NULL;
>
> - phb = pci_bus_to_host(bus);
> - if (phb == NULL)
> - return PCIBIOS_DEVICE_NOT_FOUND;
> + return phb ? phb->private_data : NULL;
> +}
> +
> +static inline int cxl_pcie_config_info(struct pci_bus *bus, unsigned int devfn,
> + struct cxl_afu *afu, int *_record)
> +{
> + int record;
>
> - afu = (struct cxl_afu *)phb->private_data;
> record = cxl_pcie_cfg_record(bus->number, devfn);
> if (record > afu->crs_num)
> return PCIBIOS_DEVICE_NOT_FOUND;
>
> - *_afu = afu;
> *_record = record;
> return 0;
> }
There's no reason to pass the afu parameter to that function, is it?
Pushing it further, do we need cxl_pcie_config_info()? It's now a simple
wrapper around cxl_pcie_cfg_record()
Fred
More information about the Linuxppc-dev
mailing list