Message ID | 1440620445-14413-1-git-send-email-linux@roeck-us.net |
---|---|
State | Superseded, archived |
Delegated to: | David Miller |
Headers | show |
On 08/26/2015 04:37 PM, Rafael J. Wysocki wrote: > On Wednesday, August 26, 2015 01:20:44 PM Guenter Roeck wrote: >> Return -ENXIO if device property array access functions don't find >> a suitable firmware interface. >> >> This lets drivers decide if they should use available platform data >> instead. >> >> Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com> >> Signed-off-by: Guenter Roeck <linux@roeck-us.net> >> --- >> v2: Added patch >> >> drivers/base/property.c | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/drivers/base/property.c b/drivers/base/property.c >> index 287704d680bf..9600b824d138 100644 >> --- a/drivers/base/property.c >> +++ b/drivers/base/property.c >> @@ -69,6 +69,9 @@ static int pset_prop_read_array(struct property_set *pset, const char *name, >> struct property_entry *prop; >> unsigned int item_size; >> >> + if (!pset) >> + return -ENXIO; >> + > > This isn't exactly straightforward, because it relies on the fact that > pset_prop_read_array() is the last thing tried by FWNODE_PROP_READ_ARRAY() > and fwnode_property_read_string_array(). A comment about that might be > helpful. > I see two options: Add a comment above, or change the calling code to ... else if (is_pset(fwnode)) return pset_prop_read_array(to_pset(fwnode), propname, DEV_PROP_STRING, val, nval); return -ENXIO; which would make it obvious and avoid side effects if the code is changed later on. Would you be ok with this ? Thanks, Guenter -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wednesday, August 26, 2015 01:20:44 PM Guenter Roeck wrote: > Return -ENXIO if device property array access functions don't find > a suitable firmware interface. > > This lets drivers decide if they should use available platform data > instead. > > Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > Signed-off-by: Guenter Roeck <linux@roeck-us.net> > --- > v2: Added patch > > drivers/base/property.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/base/property.c b/drivers/base/property.c > index 287704d680bf..9600b824d138 100644 > --- a/drivers/base/property.c > +++ b/drivers/base/property.c > @@ -69,6 +69,9 @@ static int pset_prop_read_array(struct property_set *pset, const char *name, > struct property_entry *prop; > unsigned int item_size; > > + if (!pset) > + return -ENXIO; > + This isn't exactly straightforward, because it relies on the fact that pset_prop_read_array() is the last thing tried by FWNODE_PROP_READ_ARRAY() and fwnode_property_read_string_array(). A comment about that might be helpful. Thanks, Rafael -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wednesday, August 26, 2015 04:25:59 PM Guenter Roeck wrote: > On 08/26/2015 04:37 PM, Rafael J. Wysocki wrote: > > On Wednesday, August 26, 2015 01:20:44 PM Guenter Roeck wrote: > >> Return -ENXIO if device property array access functions don't find > >> a suitable firmware interface. > >> > >> This lets drivers decide if they should use available platform data > >> instead. > >> > >> Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > >> Signed-off-by: Guenter Roeck <linux@roeck-us.net> > >> --- > >> v2: Added patch > >> > >> drivers/base/property.c | 7 +++++++ > >> 1 file changed, 7 insertions(+) > >> > >> diff --git a/drivers/base/property.c b/drivers/base/property.c > >> index 287704d680bf..9600b824d138 100644 > >> --- a/drivers/base/property.c > >> +++ b/drivers/base/property.c > >> @@ -69,6 +69,9 @@ static int pset_prop_read_array(struct property_set *pset, const char *name, > >> struct property_entry *prop; > >> unsigned int item_size; > >> > >> + if (!pset) > >> + return -ENXIO; > >> + > > > > This isn't exactly straightforward, because it relies on the fact that > > pset_prop_read_array() is the last thing tried by FWNODE_PROP_READ_ARRAY() > > and fwnode_property_read_string_array(). A comment about that might be > > helpful. > > > I see two options: Add a comment above, or change the calling code to > > ... > else if (is_pset(fwnode)) > return pset_prop_read_array(to_pset(fwnode), propname, > DEV_PROP_STRING, val, nval); > return -ENXIO; > > which would make it obvious and avoid side effects if the code is changed > later on. Would you be ok with this ? The second option is obviously cleaner to me and I prefer cleaner code. :-) Thanks, Rafael -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/base/property.c b/drivers/base/property.c index 287704d680bf..9600b824d138 100644 --- a/drivers/base/property.c +++ b/drivers/base/property.c @@ -69,6 +69,9 @@ static int pset_prop_read_array(struct property_set *pset, const char *name, struct property_entry *prop; unsigned int item_size; + if (!pset) + return -ENXIO; + prop = pset_prop_get(pset, name); if (!prop) return -ENODATA; @@ -156,6 +159,7 @@ EXPORT_SYMBOL_GPL(fwnode_property_present); * %-ENODATA if the property does not have a value, * %-EPROTO if the property is not an array of numbers, * %-EOVERFLOW if the size of the property is not as expected. + * %-ENXIO if no suitable firmware interface is present. */ int device_property_read_u8_array(struct device *dev, const char *propname, u8 *val, size_t nval) @@ -180,6 +184,7 @@ EXPORT_SYMBOL_GPL(device_property_read_u8_array); * %-ENODATA if the property does not have a value, * %-EPROTO if the property is not an array of numbers, * %-EOVERFLOW if the size of the property is not as expected. + * %-ENXIO if no suitable firmware interface is present. */ int device_property_read_u16_array(struct device *dev, const char *propname, u16 *val, size_t nval) @@ -204,6 +209,7 @@ EXPORT_SYMBOL_GPL(device_property_read_u16_array); * %-ENODATA if the property does not have a value, * %-EPROTO if the property is not an array of numbers, * %-EOVERFLOW if the size of the property is not as expected. + * %-ENXIO if no suitable firmware interface is present. */ int device_property_read_u32_array(struct device *dev, const char *propname, u32 *val, size_t nval) @@ -228,6 +234,7 @@ EXPORT_SYMBOL_GPL(device_property_read_u32_array); * %-ENODATA if the property does not have a value, * %-EPROTO if the property is not an array of numbers, * %-EOVERFLOW if the size of the property is not as expected. + * %-ENXIO if no suitable firmware interface is present. */ int device_property_read_u64_array(struct device *dev, const char *propname, u64 *val, size_t nval)
Return -ENXIO if device property array access functions don't find a suitable firmware interface. This lets drivers decide if they should use available platform data instead. Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Signed-off-by: Guenter Roeck <linux@roeck-us.net> --- v2: Added patch drivers/base/property.c | 7 +++++++ 1 file changed, 7 insertions(+)