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