Index: uspace/srv/hid/input/proto/mousedev.c
===================================================================
--- uspace/srv/hid/input/proto/mousedev.c	(revision 7b5f4c9622ac5ee0a615f6ccd36e82921b997762)
+++ uspace/srv/hid/input/proto/mousedev.c	(revision 5288463b89a786a8137814785e4bf65913ea3171)
@@ -54,7 +54,4 @@
 	/** Link to generic mouse device */
 	mouse_dev_t *mouse_dev;
-	
-	/** Session to mouse device */
-	async_sess_t *sess;
 } mousedev_t;
 
@@ -72,7 +69,4 @@
 static void mousedev_destroy(mousedev_t *mousedev)
 {
-	if (mousedev->sess != NULL)
-		async_hangup(mousedev->sess);
-	
 	free(mousedev);
 }
@@ -89,5 +83,5 @@
 		
 		if (!IPC_GET_IMETHOD(call)) {
-			/* XXX Handle hangup */
+			mousedev_destroy(mousedev);
 			return;
 		}
@@ -129,8 +123,7 @@
 		printf("%s: Failed allocating device structure for '%s'.\n",
 		    NAME, mdev->svc_name);
+		async_hangup(sess);
 		return -1;
 	}
-	
-	mousedev->sess = sess;
 	
 	async_exch_t *exch = async_exchange_begin(sess);
@@ -139,4 +132,5 @@
 		    mdev->svc_name);
 		mousedev_destroy(mousedev);
+		async_hangup(sess);
 		return -1;
 	}
@@ -144,4 +138,5 @@
 	int rc = async_connect_to_me(exch, 0, 0, 0, mousedev_callback_conn, mousedev);
 	async_exchange_end(exch);
+	async_hangup(sess);
 	
 	if (rc != EOK) {
