staging: gdm72xx: fix reference counting in gdm_wimax_event_init
authorBen Chan <benchan@chromium.org>
Tue, 24 Jul 2012 14:49:42 +0000 (07:49 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 14 Aug 2012 02:18:39 +0000 (19:18 -0700)
This patch fixes the commit "staging/gdm72xx: cleanup little at
gdm_wimax_event_rcv" (8df858ea76b76dde9a39d4edd9aaded983582cfe),
which mishandles the reference counting of wm_event.

Signed-off-by: Ben Chan <benchan@chromium.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/gdm72xx/gdm_wimax.c

index 0716efc..6cb8107 100644 (file)
@@ -258,12 +258,16 @@ static int gdm_wimax_event_init(void)
        if (!wm_event.ref_cnt) {
                wm_event.sock = netlink_init(NETLINK_WIMAX,
                                                gdm_wimax_event_rcv);
-               if (wm_event.sock)
-                       wm_event.ref_cnt++;
-               INIT_LIST_HEAD(&wm_event.evtq);
-               INIT_LIST_HEAD(&wm_event.freeq);
-               INIT_WORK(&wm_event.ws, __gdm_wimax_event_send);
-               spin_lock_init(&wm_event.evt_lock);
+               if (wm_event.sock) {
+                       INIT_LIST_HEAD(&wm_event.evtq);
+                       INIT_LIST_HEAD(&wm_event.freeq);
+                       INIT_WORK(&wm_event.ws, __gdm_wimax_event_send);
+                       spin_lock_init(&wm_event.evt_lock);
+               }
+       }
+
+       if (wm_event.sock) {
+               wm_event.ref_cnt++;
                return 0;
        }