> From: Ertman, David M <david.m.ertman@xxxxxxxxx> > Sent: Thursday, October 8, 2020 10:24 PM > > From: Parav Pandit <parav@xxxxxxxxxx> > > 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