diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
index 7fecc78..ecb6942 100644
--- a/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -303,9 +303,18 @@ static struct request *nbd_find_request(struct nbd_device *nbd,
 	struct request *req, *tmp;
 	int err;
 
+wait:
 	err = wait_event_interruptible(nbd->active_wq, nbd->active_req != xreq);
-	if (unlikely(err))
+	if (unlikely(err)) {
+		if (err == -ERESTARTSYS) {
+			siginfo_t s;
+			dequeue_signal_lock(current, &current->blocked, &s);
+			printk(KERN_ERR "got ERESTARTSYS: sig:%d code:%d sender:%d\n",
+				s.si_signo, s.si_code, s.si_pid);
+			goto wait;
+		}
 		goto out;
+	}
 
 	spin_lock(&nbd->queue_lock);
 	list_for_each_entry_safe(req, tmp, &nbd->queue_head, queuelist) {
