Hi Bartosz, I'm struggling to figure out if this is the right way to count references for gpio descriptors. I cleared up the situation of why we don't want to add kref to gpio_chip in the previous message: I think we got that covered. (If I'm not wrong about it, and I am frequently wrong.) This mail is about contrasting the suggested gpio_desc kref with the existing managed resources, i.e. the devm_* mechanisms. devm_* macros are elusive because they do not use reference counting at all. Instead they put every devm_* requested resource with a destruction function on a list associated with the struct device. Functions get put on that list when we probe a device driver, and the list is iterated and all release functions are called when we exit .probe() with error or after calling the optional .remove() function on the module. (More or less.) This means anything devm_* managed lives and dies with the device driver attaching to the device. Documentation/driver-api/driver-model/devres.rst If the intention of the patch is that this action is associated with the detachment of the driver, then we are reinventing the wheel we already invented. E.g. to devm_* it doesn't really matter if someone else is using a struct gpio_desc, or not, but if the current driver is using it, it will be kept around until that driver detaches. No reference counting needed for that. So is this related to your problem or do I just get things wrong? Yours, Linus Walleij