On Sun, 29 May 2011, Greg KH wrote:
On Sun, May 29, 2011 at 07:21:10AM -0400, Robert P. J. Day wrote:
what is apparently *not* OK is to either call kfree() *before* calling put_device(), or to call kfree() and nothing else upon a failed device_register() call. some apparently broken code from the current drivers/ directory:
no, again, never call kfree, you already did that in your release callback that the final put_device() call called.
ah, that's the part i was missing -- that the enclosing structure would have been freed already via the kfree() in the release callback. i'll look at that code later.
so as you can see, there's numerous examples of failed calls to device_register() that never call put_device() and simply bail or call kfree(). do these examples represent bad code? because it's not hard to find lots of examples of it.
Yes, that's wrong. I'm sure you can write a spatch rule to catch and fix these automatically.
i was already looking into that. rday -- ======================================================================== Robert P. J. Day Ottawa, Ontario, CANADA http://crashcourse.ca Twitter: http://twitter.com/rpjday LinkedIn: http://ca.linkedin.com/in/rpjday ========================================================================