Re: [PATCH] gpio: swnode: Don't use __free() on result of swnode_get_gpio_device()

From: Dan Carpenter
Date: Tue Mar 05 2024 - 09:14:53 EST


On Mon, Mar 04, 2024 at 04:03:20PM +0000, Charles Keepax wrote:
> swnode_get_gpio_device() can return an error pointer, however
> gpio_device_put() is not able to accept error values. Thus using
> __free() will result in dereferencing an invalid pointer.
>

No, this code works as-is. The gpio_device_put() won't be called
directly, it will be called by a wrapper that checks for error pointers.
The __free() stuff is defined like this:

include/linux/gpio/driver.h
655 DEFINE_FREE(gpio_device_put, struct gpio_device *,
656 if (!IS_ERR_OR_NULL(_T)) gpio_device_put(_T))

So it handles error pointers correctly.

regards,
dan carpenter