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

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



   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


 


Rackspace

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