diff mbox series

[v3,1/3] acpi: property: Let args be NULL in __acpi_node_get_property_reference

Message ID 20231102101316.1186215-2-sakari.ailus@linux.intel.com (mailing list archive)
State Superseded, archived
Headers show
Series Make fwnode_property_get_reference_args accept NULL args | expand

Commit Message

Sakari Ailus Nov. 2, 2023, 10:13 a.m. UTC
fwnode_get_property_reference_args() may not be called with args argument
NULL on ACPI, OF already supports this. Add the missing NULL checks and
document this.

The purpose is to be able to count the references.

Fixes: 977d5ad39f3e ("ACPI: Convert ACPI reference args to generic fwnode reference args")
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/acpi/property.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Comments

Andy Shevchenko Nov. 2, 2023, 1:12 p.m. UTC | #1
On Thu, Nov 02, 2023 at 12:13:14PM +0200, Sakari Ailus wrote:
> fwnode_get_property_reference_args() may not be called with args argument
> NULL on ACPI, OF already supports this. Add the missing NULL checks and
> document this.
> 
> The purpose is to be able to count the references.

...

> -		args->fwnode = acpi_fwnode_handle(device);
> -		args->nargs = 0;
> +		if (args) {
> +			args->fwnode = acpi_fwnode_handle(device);
> +			args->nargs = 0;
> +		}
>  		return 0;

In swnode case you used

	if (!args)
		return 0;

approach. Why not here? It also makes diff cleaner, no?
Sakari Ailus Nov. 2, 2023, 1:20 p.m. UTC | #2
Hi Andy,

On Thu, Nov 02, 2023 at 03:12:29PM +0200, Andy Shevchenko wrote:
> On Thu, Nov 02, 2023 at 12:13:14PM +0200, Sakari Ailus wrote:
> > fwnode_get_property_reference_args() may not be called with args argument
> > NULL on ACPI, OF already supports this. Add the missing NULL checks and
> > document this.
> > 
> > The purpose is to be able to count the references.
> 
> ...
> 
> > -		args->fwnode = acpi_fwnode_handle(device);
> > -		args->nargs = 0;
> > +		if (args) {
> > +			args->fwnode = acpi_fwnode_handle(device);
> > +			args->nargs = 0;
> > +		}
> >  		return 0;
> 
> In swnode case you used
> 
> 	if (!args)
> 		return 0;
> 
> approach. Why not here? It also makes diff cleaner, no?

I'll do that here, too.
diff mbox series

Patch

diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c
index 413e4fcadcaf..9ff24d9c19f1 100644
--- a/drivers/acpi/property.c
+++ b/drivers/acpi/property.c
@@ -851,6 +851,7 @@  static int acpi_get_ref_args(struct fwnode_reference_args *args,
  * @index: Index of the reference to return
  * @num_args: Maximum number of arguments after each reference
  * @args: Location to store the returned reference with optional arguments
+ *	  (may be NULL)
  *
  * Find property with @name, verifify that it is a package containing at least
  * one object reference and if so, store the ACPI device object pointer to the
@@ -907,8 +908,10 @@  int __acpi_node_get_property_reference(const struct fwnode_handle *fwnode,
 		if (!device)
 			return -EINVAL;
 
-		args->fwnode = acpi_fwnode_handle(device);
-		args->nargs = 0;
+		if (args) {
+			args->fwnode = acpi_fwnode_handle(device);
+			args->nargs = 0;
+		}
 		return 0;
 	case ACPI_TYPE_PACKAGE:
 		/*