Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Thu, 14 Mar 2002 20:11:19 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Thu, 14 Mar 2002 20:11:10 -0500 Received: from exchange.macrolink.com ([64.173.88.99]:49159 "EHLO exchange.macrolink.com") by vger.kernel.org with ESMTP id ; Thu, 14 Mar 2002 20:11:03 -0500 Message-ID: <11E89240C407D311958800A0C9ACF7D13A7705@EXCHANGE> From: Ed Vance To: "'Alan Cox'" Cc: "'linux-serial'" , "'linux-kernel'" , "'Russell King'" Subject: [PATCH] serial driver procfs Date: Thu, 14 Mar 2002 17:11:01 -0800 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: text/plain; charset="iso-8859-1" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Please pummel this patch into the next 2.4.19-preX. Serial driver procfs patch This patch changes text generated by the generic serial driver for the /proc/tty/driver/serial interface. Now generates correct address and port statistics fields for memory mapped devices. Displays only ports claimed by driver. Prevents kudzu crash at pciserial.c:78 when memory mapped devices are present, due to missing fields in text line and missing check of string search result in kudzu. Example - before: "1: uart:16550A port:02F8 irq:3 tx:0 rx:0 " (I/O space) "4: uart:16C950/954 port:0 irq:14" (memory space) "44: uart:unknown port:0 irq:0" (not claimed) Example - after: "1: uart:16550A port:02F8 irq:3 tx:0 rx:0 " (I/O port) "4: uart:16C950/954 port:C4800000 irq:14 tx:0 rx:0 " (memory space) Created on kernel files rev 2.4.19-pre3 Contributor: Ed Vance [serial24@macrolink.com] diff -urN -X dontdiff.txt linux-2.4.19-pre3/drivers/char/serial.c patched/drivers/char/serial.c --- linux-2.4.19-pre3/drivers/char/serial.c Sat Mar 2 10:38:11 2002 +++ patched/drivers/char/serial.c Thu Mar 14 15:05:52 2002 @@ -3258,14 +3258,17 @@ int ret; unsigned long flags; + /* + * Return zero characters for ports not claimed by driver. + */ + if (state->type == PORT_UNKNOWN) { + return 0; /* ignore unused ports */ + } + ret = sprintf(buf, "%d: uart:%s port:%lX irq:%d", state->line, uart_config[state->type].name, - state->port, state->irq); - - if (!state->port || (state->type == PORT_UNKNOWN)) { - ret += sprintf(buf+ret, "\n"); - return ret; - } + (state->port ? state->port : (long)state->iomem_base), + state->irq); /* * Figure out the current RS-232 lines ---------------------------------------------------------------- Ed Vance edv@macrolink.com Software Development Manager Macrolink, Inc. 1500 N. Kellogg Dr Anaheim, CA 92807 PH 714.777.8800 x335 Fax 714.777.8807 http://www.macrolink.com ---------------------------------------------------------------- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/