WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH] xencons missing string allocation

To: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH] xencons missing string allocation
From: Alex Williamson <alex.williamson@xxxxxx>
Date: Fri, 09 Dec 2005 11:37:31 -0700
Delivery-date: Fri, 09 Dec 2005 18:36:40 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Organization: LOSL
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
   I was trying to boot dom0 w/ "xencons=ttyS1 console=ttyS1".  It gives
some weird error messages:

Warning: dev (ttyS2) tty->count(2) != #fd's(1) in release_dev
Warning: dev (ttyS2) tty->count(3) != #fd's(1) in tty_open

And blows up with a page fault.  The page fault is because we don't
actually allocate a buffer for the tty driver name.  The patch below
fixes that problem.  Using xencons=ttyS1 still doesn't quite work and
prints lots of the above error messages, but at least it doesn't crash
dom0 now.  Patch vs xen-unstable.hg.  Thanks,

        Alex

Signed-off-by: Alex Williamson <alex.williamson@xxxxxx>
---

diff -r 53cff3f88e45 linux-2.6-xen-sparse/drivers/xen/console/console.c
--- a/linux-2.6-xen-sparse/drivers/xen/console/console.c        Fri Dec  9 
11:05:06 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/console/console.c        Fri Dec  9 
11:12:04 2005
@@ -641,11 +641,23 @@
 
        if (xc_mode == XC_SERIAL)
        {
-               DRV(xencons_driver)->name        = "ttyS";
+               DRV(xencons_driver)->name = kmalloc(strlen("ttyS") + 1,
+                                                   GFP_KERNEL);
+               if (!DRV(xencons_driver)->name) {
+                       kfree(xencons_driver);
+                       return -ENOMEM;
+               }
+               strcpy(DRV(xencons_driver)->name, "ttyS");
                DRV(xencons_driver)->minor_start = 64 + xc_num;
                DRV(xencons_driver)->name_base   = 0 + xc_num;
        } else {
-               DRV(xencons_driver)->name        = "tty";
+               DRV(xencons_driver)->name = kmalloc(strlen("tty") + 1,
+                                                   GFP_KERNEL);
+               if (!DRV(xencons_driver)->name) {
+                       kfree(xencons_driver);
+                       return -ENOMEM;
+               }
+               strcpy(DRV(xencons_driver)->name, "tty");
                DRV(xencons_driver)->minor_start = xc_num;
                DRV(xencons_driver)->name_base   = xc_num;
        }



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel