Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/xen/xen Check that xvif(4) is not already connected...



details:   https://anonhg.NetBSD.org/src/rev/63dc1eb59fea
branches:  trunk
changeset: 764475:63dc1eb59fea
user:      jym <jym%NetBSD.org@localhost>
date:      Mon Apr 25 00:14:06 2011 +0000

description:
Check that xvif(4) is not already connected before proceeding in the
XenbusStateConnected mode. Under rare occasions, the xenbus watcher
can fire multiple times, overwriting the I/O ring memory mappings with
invalid values. This will lead sooner or later to dom0 panic().

Will ask for pullup. FWIW, xbdback(4) is not affected.

diffstat:

 sys/arch/xen/xen/xennetback_xenbus.c |  4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diffs (18 lines):

diff -r 45ed46221fcc -r 63dc1eb59fea sys/arch/xen/xen/xennetback_xenbus.c
--- a/sys/arch/xen/xen/xennetback_xenbus.c      Mon Apr 25 00:00:50 2011 +0000
+++ b/sys/arch/xen/xen/xennetback_xenbus.c      Mon Apr 25 00:14:06 2011 +0000
@@ -1,4 +1,4 @@
-/*      $NetBSD: xennetback_xenbus.c,v 1.42 2011/04/21 13:06:20 jym Exp $      */
+/*      $NetBSD: xennetback_xenbus.c,v 1.43 2011/04/25 00:14:06 jym Exp $      */
 
 /*
  * Copyright (c) 2006 Manuel Bouyer.
@@ -445,6 +445,8 @@
                break;
 
        case XenbusStateConnected:
+               if (xneti->xni_status == CONNECTED)
+                       break;
                /* read comunication informations */
                err = xenbus_read_ul(NULL, xbusd->xbusd_otherend,
                    "tx-ring-ref", &tx_ring_ref, 10);



Home | Main Index | Thread Index | Old Index