On Mon, 20 Nov 2017, I wrote:
You need to free up the memory allocated, and I don't see that happening here ... The kernel should yell at you ...
WARN(1, KERN_ERR "Device '%s' does not have a release() " "function, it is broken and must be fixed.\n", dev_name(dev)); This won't fire unless device_del() is called, right?
Sorry, I should have written, "This won't fire unless device_unregister() is called, right?" -- though I guess it could be any call to put_device(). If need be I can add code to cleanly tear down the bus devices and the associated linked lists and procfs structures, just prior to kernel termination, as a kernel exitcall. But I don't see this pattern in use. It's not clear to me that the extra complexity is worth it. This may explain the other devices which never get unregistered (e.g. rtc_device, rtc_efi_dev, etc.) I've read Documentation/driver-model/ and watched your presentations on this topic but it's unclear to me whether you are saying in this thread that calling device_unregister() is mandatory. It sounds like you are saying that a non-NULL device.release method is mandatory (which is easily solved with an empty function). But Documentation/driver-model/porting.txt says the release method is optional. If device_unregister() is never called, the release method seems to be pointless. Would you clarify your objection please? -- -- To unsubscribe from this list: send the line "unsubscribe linux-m68k" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html