2022-08-02 19:41:36

by Andy Shevchenko

[permalink] [raw]
Subject: [PATCH v1 1/1] ACPI: VIOT: Do not dereference fwnode in struct device

In order to make the underneath API easier to change in the future,
prevent users from dereferencing fwnode from struct device.
Instead, use the specific dev_fwnode() and device_match_fwnode()
APIs for that.

Signed-off-by: Andy Shevchenko <[email protected]>
---
drivers/acpi/viot.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/acpi/viot.c b/drivers/acpi/viot.c
index 647f11cf165d..6132092dab2a 100644
--- a/drivers/acpi/viot.c
+++ b/drivers/acpi/viot.c
@@ -88,7 +88,7 @@ static int __init viot_get_pci_iommu_fwnode(struct viot_iommu *viommu,
return -ENODEV;
}

- fwnode = pdev->dev.fwnode;
+ fwnode = dev_fwnode(&pdev->dev);
if (!fwnode) {
/*
* PCI devices aren't necessarily described by ACPI. Create a
@@ -101,7 +101,7 @@ static int __init viot_get_pci_iommu_fwnode(struct viot_iommu *viommu,
}
set_primary_fwnode(&pdev->dev, fwnode);
}
- viommu->fwnode = pdev->dev.fwnode;
+ viommu->fwnode = dev_fwnode(&pdev->dev);
pci_dev_put(pdev);
return 0;
}
@@ -314,7 +314,7 @@ static int viot_dev_iommu_init(struct device *dev, struct viot_iommu *viommu,
return -ENODEV;

/* We're not translating ourself */
- if (viommu->fwnode == dev->fwnode)
+ if (device_match_fwnode(dev, viommu->fwnode))
return -EINVAL;

ops = iommu_ops_from_fwnode(viommu->fwnode);
--
2.35.1



2022-08-03 10:29:48

by Eric Auger

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] ACPI: VIOT: Do not dereference fwnode in struct device

Hi Andy,

On 8/2/22 21:35, Andy Shevchenko wrote:
> In order to make the underneath API easier to change in the future,
> prevent users from dereferencing fwnode from struct device.
> Instead, use the specific dev_fwnode() and device_match_fwnode()
> APIs for that.
>
> Signed-off-by: Andy Shevchenko <[email protected]>
Reviewed-by: Eric Auger <[email protected]>

Thanks

Eric
> ---
> drivers/acpi/viot.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/acpi/viot.c b/drivers/acpi/viot.c
> index 647f11cf165d..6132092dab2a 100644
> --- a/drivers/acpi/viot.c
> +++ b/drivers/acpi/viot.c
> @@ -88,7 +88,7 @@ static int __init viot_get_pci_iommu_fwnode(struct viot_iommu *viommu,
> return -ENODEV;
> }
>
> - fwnode = pdev->dev.fwnode;
> + fwnode = dev_fwnode(&pdev->dev);
> if (!fwnode) {
> /*
> * PCI devices aren't necessarily described by ACPI. Create a
> @@ -101,7 +101,7 @@ static int __init viot_get_pci_iommu_fwnode(struct viot_iommu *viommu,
> }
> set_primary_fwnode(&pdev->dev, fwnode);
> }
> - viommu->fwnode = pdev->dev.fwnode;
> + viommu->fwnode = dev_fwnode(&pdev->dev);
> pci_dev_put(pdev);
> return 0;
> }
> @@ -314,7 +314,7 @@ static int viot_dev_iommu_init(struct device *dev, struct viot_iommu *viommu,
> return -ENODEV;
>
> /* We're not translating ourself */
> - if (viommu->fwnode == dev->fwnode)
> + if (device_match_fwnode(dev, viommu->fwnode))
> return -EINVAL;
>
> ops = iommu_ops_from_fwnode(viommu->fwnode);


2022-08-08 17:38:30

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] ACPI: VIOT: Do not dereference fwnode in struct device

On Wed, Aug 3, 2022 at 12:03 PM Eric Auger <[email protected]> wrote:
>
> Hi Andy,
>
> On 8/2/22 21:35, Andy Shevchenko wrote:
> > In order to make the underneath API easier to change in the future,
> > prevent users from dereferencing fwnode from struct device.
> > Instead, use the specific dev_fwnode() and device_match_fwnode()
> > APIs for that.
> >
> > Signed-off-by: Andy Shevchenko <[email protected]>
> Reviewed-by: Eric Auger <[email protected]>

Applied, thanks!

> > ---
> > drivers/acpi/viot.c | 6 +++---
> > 1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/acpi/viot.c b/drivers/acpi/viot.c
> > index 647f11cf165d..6132092dab2a 100644
> > --- a/drivers/acpi/viot.c
> > +++ b/drivers/acpi/viot.c
> > @@ -88,7 +88,7 @@ static int __init viot_get_pci_iommu_fwnode(struct viot_iommu *viommu,
> > return -ENODEV;
> > }
> >
> > - fwnode = pdev->dev.fwnode;
> > + fwnode = dev_fwnode(&pdev->dev);
> > if (!fwnode) {
> > /*
> > * PCI devices aren't necessarily described by ACPI. Create a
> > @@ -101,7 +101,7 @@ static int __init viot_get_pci_iommu_fwnode(struct viot_iommu *viommu,
> > }
> > set_primary_fwnode(&pdev->dev, fwnode);
> > }
> > - viommu->fwnode = pdev->dev.fwnode;
> > + viommu->fwnode = dev_fwnode(&pdev->dev);
> > pci_dev_put(pdev);
> > return 0;
> > }
> > @@ -314,7 +314,7 @@ static int viot_dev_iommu_init(struct device *dev, struct viot_iommu *viommu,
> > return -ENODEV;
> >
> > /* We're not translating ourself */
> > - if (viommu->fwnode == dev->fwnode)
> > + if (device_match_fwnode(dev, viommu->fwnode))
> > return -EINVAL;
> >
> > ops = iommu_ops_from_fwnode(viommu->fwnode);
>