Devres is a kernel facility helping the developer by automatically freeing the allocated resource in a driver. It simplifies errors handling in init/probe/open functions. With devres, each resource allocator has its managed version that will take care of resource release and freeing for you.
This section heavily relies on the Documentation/driver-model/devres.txt file in the kernel source tree, which deals with the devres API and lists supported functions along with their descriptions.
The memory allocated with resource-managed functions is associated with the device. devres consists of a linked list of arbitrarily sized memory areas associated with a struct device. Each devers resource allocator inserts the allocated resource in the list. The resource remains available until it is manually freed by the code, when the device is detached...