On Wed, Jul 09, 2003 at 04:18:25PM -0400, Alan Stern wrote: > On Wed, 9 Jul 2003, Greg KH wrote: > > > On Mon, Jul 07, 2003 at 10:20:32AM -0400, Alan Stern wrote: > > > Greg: > > > > > > This fixes a minor error in usb-skeleton's disconnect() routine: if the > > > interface's private data is NULL, the current code exits without releasing > > > the disconnect_sem semaphore. > > > > Yeah, but if dev is null, then the semaphore is already released, right? > > Wrong. Here's an extract from the current version of the code: > > static void skel_disconnect(struct usb_interface *interface) > { > struct usb_skel *dev; > int minor; > > /* prevent races with open() */ > down (&disconnect_sem); > > dev = usb_get_intfdata (interface); > usb_set_intfdata (interface, NULL); > > if (!dev) > return; > > As you can see, disconnect_sem is acquired but not released if dev is > NULL.
Ah yes, that is a problem. > > So yes, the check is being paranoid, but I don't see a problem with > > being paranoid in this kind of situation, do you? > > Well, I sort of do. If the pointer really can never be NULL, then it > doesn't make much difference whether or not you check; the difference is > code size and speed is completely negligible. There is a difference in > clarity though. Seeing that check makes me wonder, "What's that doing > there? How could the pointer ever be NULL? Is someone just being > paranoid or can that really happen?" I don't like that kind of > distraction when trying to read code. I am tending to agree with you there. Ok, I'll go add your patch to my todo list of things I need to get off my butt and apply (been busy these past few days, working on a talk, and now am at a conference...) thanks, greg k-h ------------------------------------------------------- This SF.Net email sponsored by: Parasoft Error proof Web apps, automate testing & more. Download & eval WebKing and get a free book. www.parasoft.com/bulletproofapps _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel