3 messages in com.xensource.lists.xen-devel[Xen-devel] [PATCH][TOOLS] Fix xencon...
FromSent OnAttachments
Jimi Xenidis24 Aug 2006 11:03 
Jimi Xenidis27 Aug 2006 15:00 
Keir Fraser28 Aug 2006 01:20 
Subject:[Xen-devel] [PATCH][TOOLS] Fix xenconsoled SEGV if domain is destroyed while connected.
From:Jimi Xenidis (jim@watson.ibm.com)
Date:08/24/2006 11:03:40 AM
List:com.xensource.lists.xen-devel

The following patch fixes a bug where xenconsoled will can SEGV because it uses FD_ISSET(-1,xxx). Since the code is written that any ring/tty handler can set d->tty_fd to -1 it has to be checked _every_time_.

Signed-off-by: Jimi Xenidis <jim@watson.ibm.com>

diff -r 00c47d5766100994d1b936873629256874a8d5ba -r
d2087a16bc5153d6abc4d28b3bcc39904a6c65b6 tools/console/daemon/io.c --- a/tools/console/daemon/io.c Wed Aug 23 05:49:29 2006 -0400 +++ b/tools/console/daemon/io.c Thu Aug 24 13:42:05 2006 -0400 @@ -584,16 +584,14 @@ void handle_io(void) FD_ISSET(xc_evtchn_fd(d->xce_handle), &readfds)) handle_ring_read(d);

- if (d->tty_fd != -1) { - if (FD_ISSET(d->tty_fd, &readfds)) - handle_tty_read(d); - - if (FD_ISSET(d->tty_fd, &writefds)) - handle_tty_write(d); - - if (d->is_dead) - cleanup_domain(d); - } + if (d->tty_fd != -1 && FD_ISSET(d->tty_fd, &readfds)) + handle_tty_read(d); + + if (d->tty_fd != -1 && FD_ISSET(d->tty_fd, &writefds)) + handle_tty_write(d); + + if (d->is_dead) + cleanup_domain(d); } } while (ret > -1); }