[PATCH v6 10/12] watchdog: add gpio watchdog driver

Rasmus Villemoes rasmus.villemoes at prevas.dk
Thu Aug 19 14:09:24 CEST 2021


On 19/08/2021 13.46, Wolfgang Denk wrote:
> Dear Rasmus,
> 
> again: error handling.
> 
> In message <20210819095706.3585923-11-rasmus.villemoes at prevas.dk> you wrote:
>>
>> diff --git a/drivers/watchdog/gpio_wdt.c b/drivers/watchdog/gpio_wdt.c
>> new file mode 100644
>> index 0000000000..982a66b3f9
>> --- /dev/null
>> +++ b/drivers/watchdog/gpio_wdt.c
>> @@ -0,0 +1,68 @@
>> +// SPDX-License-Identifier: GPL-2.0+
>> +
>> +#include <dm.h>
>> +#include <dm/device_compat.h>
>> +#include <wdt.h>
>> +#include <asm/gpio.h>
>> +
>> +struct gpio_wdt_priv {
>> +	struct gpio_desc gpio;
>> +	bool always_running;
>> +	int state;
>> +};
>> +
>> +static int gpio_wdt_reset(struct udevice *dev)
>> +{
>> +	struct gpio_wdt_priv *priv = dev_get_priv(dev);
>> +
>> +	priv->state = !priv->state;
> 
> Potential NULL pointer dereference.

No, no and no. If allocation of the (driver or uclass) private data
fails, the device probe would have failed, so this code can never get
called with such a struct udevice.

Perhaps try doing a

git grep -10 -E 'dev_get(_uclass)?_priv'

and see how many cases you can find where that is followed by a NULL check?

Rasmus


More information about the U-Boot mailing list