From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Williamson Subject: [PATCH] xencons missing string allocation Date: Fri, 09 Dec 2005 11:37:31 -0700 Message-ID: <1134153451.6136.14.camel@tdi> Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel List-Id: xen-devel@lists.xenproject.org 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 --- 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; }