tree 1b0ad81b8cf846513ba03536d855e6d9183cac64
parent 3daf37260e965aa4bb060db99c2ed10b28109e04
author Tony Prisk <linux@prisktech.co.nz> 1364965031 +1300
committer Tony Prisk <linux@prisktech.co.nz> 1365051558 +1300

of: Remove duplicated code for validating property and value

Several functions in of/base.c have the same code duplicated for
finding and validating a property and value.

struct property *prop = of_find_property(np, propname, NULL);
if (!prop)
	return -EINVAL;
if (!prop->value)
	return -ENODATA;
if (<some length> > prop->length)
	return -EOVERFLOW;

This patch adds of_find_property_value_of_size() which performs the
equivalent of the above code and removes the instances where it was
duplicated in several functions.

Reported-by: Rob Herring <robherring2@gmail.com>
Signed-off-by: Tony Prisk <linux@prisktech.co.nz>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Rob Herring <rob.herring@calxeda.com>
