From: Ertman, David M david.m.ertman@intel.com Sent: Thursday, October 8, 2020 10:24 PM
From: Parav Pandit parav@nvidia.com Sent: Wednesday, October 7, 2020 9:56 PM
/**
- ancillar_device_register() - register an ancillary device
- NOTE: __never directly free @adev after calling this function, even
if it returned
- an error. Always use ancillary_device_put() to give up the
reference initialized by this function.
- This note matches with the core and caller knows exactly what to be
done.
*/ ancillary_device_register() { device_initialize(&adev->dev); if (!dev->parent || !adev->name) return -EINVAL; if (!dev->release && !(dev->type && dev->type->release)) { /* core is already capable and throws the warning when
release
callback is not set. * It is done at drivers/base/core.c:1798. * For NULL release it says, "does not have a release()
function, it
is broken and must be fixed" */ return -EINVAL; }
That code is in device_release(). Because of this check we will never hit that code.
We either need to leave the error message here, or if we are going to rely on the core to find this condition at the end of the process, then we need to completely remove this check from the registration flow.
Yes. Since the core is checking it, ancillary bus doesn't need to check here and release callback check can be removed.
-DaveE