/* Delete network device */
        unregister_netdev(dev);
 
+       /* Wakeup user-space polling for socket errors */
+       s->sock->sk->sk_err = EUNATCH;
+
+       wake_up_interruptible(s->sock->sk->sk_sleep);
+
        /* Release the socket */
        fput(s->sock->file);
 
 
                hid_free_device(session->hid);
        }
 
+       /* Wakeup user-space polling for socket errors */
+       session->intr_sock->sk->sk_err = EUNATCH;
+       session->ctrl_sock->sk->sk_err = EUNATCH;
+
+       hidp_schedule(session);
+
        fput(session->intr_sock->file);
 
        wait_event_timeout(*(ctrl_sk->sk_sleep),
                        skb_queue_purge(&session->ctrl_transmit);
                        skb_queue_purge(&session->intr_transmit);
 
+                       /* Wakeup user-space polling for socket errors */
+                       session->intr_sock->sk->sk_err = EUNATCH;
+                       session->ctrl_sock->sk->sk_err = EUNATCH;
+
                        /* Kill session thread */
                        atomic_inc(&session->terminate);
                        hidp_schedule(session);