Index: kernel/generic/src/ipc/ipc.c
===================================================================
--- kernel/generic/src/ipc/ipc.c	(revision 74965d2a10d31e1d5cabb27fcf0e17a3f3c257da)
+++ kernel/generic/src/ipc/ipc.c	(revision 43b7b35a05b81199637e43614792df8bdba726cf)
@@ -172,6 +172,8 @@
  * @param phone		Destination kernel phone structure.
  * @param request	Call structure with request.
- */
-void ipc_call_sync(phone_t *phone, call_t *request)
+ *
+ * @return		EOK on success or EINTR if the sleep was interrupted.
+ */
+int ipc_call_sync(phone_t *phone, call_t *request)
 {
 	answerbox_t sync_box; 
@@ -183,5 +185,8 @@
 
 	ipc_call(phone, request);
-	ipc_wait_for_call(&sync_box, SYNCH_NO_TIMEOUT, SYNCH_FLAGS_NONE);
+	if (!ipc_wait_for_call(&sync_box, SYNCH_NO_TIMEOUT,
+	    SYNCH_FLAGS_INTERRUPTIBLE))
+		return EINTR;
+	return EOK;
 }
 
Index: kernel/generic/src/ipc/sysipc.c
===================================================================
--- kernel/generic/src/ipc/sysipc.c	(revision 74965d2a10d31e1d5cabb27fcf0e17a3f3c257da)
+++ kernel/generic/src/ipc/sysipc.c	(revision 43b7b35a05b81199637e43614792df8bdba726cf)
@@ -443,5 +443,7 @@
 
 	if (!(res = request_preprocess(&call))) {
-		ipc_call_sync(phone, &call);
+		rc = ipc_call_sync(phone, &call);
+		if (rc != EOK)
+			return rc;
 		process_answer(&call);
 	} else {
@@ -481,5 +483,7 @@
 
 	if (!(res = request_preprocess(&call))) {
-		ipc_call_sync(phone, &call);
+		rc = ipc_call_sync(phone, &call);
+		if (rc != EOK)
+			return rc;
 		process_answer(&call);
 	} else 
