Re: [PATCH] pwm-backlight: add regulator and GPIO support

From: Alex Courbot
Date: Wed Jul 04 2012 - 08:25:02 EST


Hi Sascha,

On 07/04/2012 07:48 PM, Sascha Hauer wrote:>> +
>> + pb->power_reg = devm_regulator_get(&pdev->dev, "power");
>> + if (IS_ERR(pb->power_reg))
>> + return PTR_ERR(pb->power_reg);
>
> This looses several resources allocated earlier, like the enable gpio
> and the pwm. This is really bad here since I have no regulator specified
> and devm_regulator_get returns with -EPROBE_DEFER. Next time the core
> tries to probe the driver the driver bails out because the gpio and the
> pwm is already requested.

That's very bad indeed. I assumed that the kernel would free devm-allocated resources after probe returned -EPROBE_DEFER, so that probe could reallocate them the next time it is called. Apparently that was wrong. Do you know what would the right approach be in this case? Does the kernel preserve the device structure and its associated data between the two calls to probe? If so, I could just check whether the private data has already been constructed to know which state we are in and continue from there.

Thanks,
Alex.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/