On Fri, Jul 20, 2018 at 3:39 PM, Greg KH <greg@xxxxxxxxx> wrote: > On Fri, Jul 20, 2018 at 03:33:22PM -0300, Helen Koike wrote: >> Hi, >> >> I am simulating hotplugging a platform device (to the >> media/platform/vimc driver), so I register it using >> platform_device_register, then I unregister it with >> platform_device_unregister, then I register it again, but the code >> doesn't allow me to register something that was registered before due >> to this line: >> >> https://github.com/torvalds/linux/blob/master/lib/kobject.c#L334 >> >> The variable kobj->state_initialized is set to 1 at >> >> https://github.com/torvalds/linux/blob/master/lib/kobject.c#L194 >> >> but it is never set to 0 again. > > Yes, do not do that, that is why we wrote that code. Never "recycle" a > struct device, or a kobject, as you never really know if it is still in > use or not. That is why it needs to be dynamically created, not > statically created. > >> Is this how it is supposed to work? Or kobj->state_initialized is set >> to 0 somewhere else I couldn't find? > > Nope, don't do this please. Again, never recycle these objects, bad > things will happen as the code is not designed to do that for good > reasons (think object lifetimes, you do not control them fully, other > things do which you have no control over.) > > hope this helps, > > greg k-h Yes, this helps a lot, thank you! Helen _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies