On 09/07/14 12:52, Julia Lawall wrote:
On Wed, 9 Jul 2014, Rob Jones wrote:
Please note that I submitted a patch on 02/07/14 to create this function which was acked by Linus Walleij on 05/07/14.
Great minds think alike, and all that.
However, I think that the version I submitted better replicates the original (non devm) functionality, see below.
<snip>
+int devm_gpio_request_array(struct device *dev, const struct gpio *array,
size_t num)
+{
- int i, err;
- for (i = 0; i < num; i++, array++) {
err = devm_gpio_request_one(dev, array->gpio, array->flags,
array->label);
if (err)
return err;
The failure path in the version I submitted frees up any already allocated gpios on the first failure.
Himangi first proposed doing that, but I thought it was not really in the spirit of devm functions, which is to leave that implicit. No strong opinion on the matter, though.
Interestingly, we came at it from the other direction: I originally didn't have the unwind in and our internal review guys suggested that it was in the original function so putting it in would:
1. make this a better analogue of the original 2. help avoid deadlocks 3. allow the driver to retry, perhaps requesting reduced functionality.
julia
<snip>