On Wed, Jul 25, 2012 at 7:23 PM, Ben Chan <benchan@xxxxxxxxxxxx> wrote: > Hi Devendra, > > Thanks for cleaning up the driver. If I understand the code > correctly, the original author wanted to initialize wm_event once and > reuse it for multiple devices, and thus reference counted it with > ref_cnt. > > For instance, each time gdm_usb_probe() is called, it may call > register_wimax_device() / gdm_wimax_event_init(). wm_event is > initialized the first time when wm_event.ref_cnt == 0 (alternatively, > the code could check !wm_event.sock). Subsequent calls to > gdm_wimax_event_init() will simply increase the ref count. Similarly, > gdm_usb_disconnect() calls unregister_wimax_device() / > gdm_wimax_event_exit(), which decreases the ref count and disposes > wm_event when ref_cnt becomes zero. > > The code change in commit 8df858ea76b76dde9a39d4edd9aaded983582cfe > only prevents ref_cnt from increasing beyond one. So the code no > longer work when there are multiple devices (i.e. wm_event could be > disposed even when there is an active device). > > Thanks, > Ben > > Sorry Ben, I didn't saw the mail for a long time, Thanks a lot for the long explanation, i will keep in mind of these problems, and also i think your patch is ok. Thanks, Devendra. _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel