Index: kernel/generic/src/ipc/ops/pagein.c
===================================================================
--- kernel/generic/src/ipc/ops/pagein.c	(revision 5a97302e0639d7fe6966a3b622197dd1731522b7)
+++ kernel/generic/src/ipc/ops/pagein.c	(revision 6eda732ba8d96df367a3cabf0837e6ef849f6568)
@@ -44,4 +44,18 @@
 #include <arch.h>
 
+static int pagein_request_process(call_t *call, answerbox_t *box)
+{
+	/*
+	 * Allow only requests from numerically higher task IDs to
+	 * numerically lower task IDs to prevent deadlock in
+	 * pagein_answer_preprocess() that could happen if two tasks
+	 * wanted to be each other's pager.
+	 */
+	if (call->sender->taskid <= TASK->taskid)
+		return ENOTSUP;
+	else
+		return EOK;
+}
+
 static int pagein_answer_preprocess(call_t *answer, ipc_data_t *olddata)
 {
@@ -85,5 +99,5 @@
 	.request_preprocess = null_request_preprocess,
 	.request_forget = null_request_forget,
-	.request_process = null_request_process,
+	.request_process = pagein_request_process,
 	.answer_cleanup = null_answer_cleanup,
 	.answer_preprocess = pagein_answer_preprocess,
