On Wed, Mar 24, 2021 at 12:58 PM Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote: > > On Wed, Mar 24, 2021 at 10:01:42AM -0700, Dan Williams wrote: > > On Wed, Mar 24, 2021 at 9:52 AM Jason Gunthorpe <jgg@xxxxxxxxxx> wrote: > > > > > > On Wed, Mar 24, 2021 at 09:13:35AM -0700, Dan Williams wrote: > > > > > > > Which is just: > > > > > > > > device_initialize() > > > > dev_set_name() > > > > > > > > ...then the name is set as early as the device is ready to filled in > > > > with other details. Just checking for dev_set_name() failures does not > > > > move the api forward in my opinion. > > > > > > This doesn't work either as the release function must be set after > > > initialize but before dev_set_name(), otherwise we both can't and must > > > call put_device() after something like this fails. > > > > Ugh, true. > > > > > > > > I can't see an option other than bite the bullet and fix things. > > > > > > A static tool to look for these special lifetime rules around the > > > driver core would be nice. > > > > It would... it would also trip over the fact the core itself fails to > > check for dev_set_name() failures and also relies on !dev_name() as a > check after-the-fact. > > Where can I find the !dev_name() check? https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/base/core.c#n3153