[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 2/2] tools/console: xenconsole tolerate tty errors



On Mon, 2014-03-17 at 16:24 +0000, Ian Jackson wrote:
> Since 28d386fc4341 (XSA-57), libxl writes an empty value for the
> console tty node, with read-only permission for the guest, when
> setting up pv console "frontends".  (The actual tty value is later set
> by xenconsoled.)   Writing an empty node is not strictly necessary to
> stop the frontend from writing dangerous values here, but it is a good
> belt-and-braces approach.
> 
> Unfortunately this confuses xenconsole.  It reads the empty value, and
> tries to open it as the tty.  xenconsole then exits.
> 
> Fix this by having xenconsole treat an empty value the same way as no
> value at all.
> 
> Also, make the error opening the tty be nonfatal: we just print a
> warning, but do not exit.  I think this is helpful in theoretical
> situations where xenconsole is racing with libxl and/or xenconsoled.
> 
> Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
> CC: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
> CC: George Dunlap <george.dunlap@xxxxxxxxxxxxx>
> ---
>  tools/console/client/main.c |    8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/console/client/main.c b/tools/console/client/main.c
> index 62159f6..b882345 100644
> --- a/tools/console/client/main.c
> +++ b/tools/console/client/main.c
> @@ -115,9 +115,11 @@ static int get_pty_fd(struct xs_handle *xs, char *path, 
> int seconds)
>                        * disambiguate: just read the pty path */
>                       pty_path = xs_read(xs, XBT_NULL, path, &len);
>                       if (pty_path != NULL) {
> -                             pty_fd = open(pty_path, O_RDWR | O_NOCTTY);
> -                             if (pty_fd == -1)
> -                                     err(errno, "Could not open tty `%s'", 
> pty_path);
> +                             if (pty_path[0] != '\0') {

Can the top-level condition not be
        if ( pty_path != NULL && pty_path[0] != '\0' )
avoiding the reindent?

Ack on the intent though.

> +                                     pty_fd = open(pty_path, O_RDWR | 
> O_NOCTTY);
> +                                     if (pty_fd == -1)
> +                                             warn("Could not open tty `%s'", 
> pty_path);
> +                             }
>                               free(pty_path);
>                       }
>               }



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.