From 89df6bfc04059716de2eb2fe529f05b3e124fafd Mon Sep 17 00:00:00 2001 From: Eduard-Gabriel Munteanu Date: Sun, 15 Jul 2007 23:38:51 -0700 Subject: uml: DEBUG_SHIRQ fixes DEBUG_SHIRQ generates spurious interrupts, triggering handlers such as mconsole_interrupt() or line_interrupt(). They expect data to be available to be read from their sockets/pipes, but in the case of spurious interrupts, the host didn't actually send anything, so UML hangs in read() and friends. Setting those fd's as O_NONBLOCK makes DEBUG_SHIRQ-enabled UML kernels boot and run correctly. Signed-off-by: Eduard-Gabriel Munteanu Signed-off-by: Jeff Dike Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- arch/um/drivers/mconsole_user.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'arch/um/drivers/mconsole_user.c') diff --git a/arch/um/drivers/mconsole_user.c b/arch/um/drivers/mconsole_user.c index 62e5ad63181..f31e71546e5 100644 --- a/arch/um/drivers/mconsole_user.c +++ b/arch/um/drivers/mconsole_user.c @@ -86,8 +86,9 @@ int mconsole_get_request(int fd, struct mc_request *req) int len; req->originlen = sizeof(req->origin); - req->len = recvfrom(fd, &req->request, sizeof(req->request), 0, - (struct sockaddr *) req->origin, &req->originlen); + req->len = recvfrom(fd, &req->request, sizeof(req->request), + MSG_DONTWAIT, (struct sockaddr *) req->origin, + &req->originlen); if (req->len < 0) return 0; -- cgit v1.2.3-70-g09d2