From owner-freebsd-ports-bugs@FreeBSD.ORG Sun Jan 22 04:50:10 2006 Return-Path: X-Original-To: freebsd-ports-bugs@hub.freebsd.org Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5548416A420 for ; Sun, 22 Jan 2006 04:50:10 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9F69043D5C for ; Sun, 22 Jan 2006 04:50:03 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id k0M4o37C099159 for ; Sun, 22 Jan 2006 04:50:03 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id k0M4o3mW099158; Sun, 22 Jan 2006 04:50:03 GMT (envelope-from gnats) Resent-Date: Sun, 22 Jan 2006 04:50:03 GMT Resent-Message-Id: <200601220450.k0M4o3mW099158@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, "Stepan Zastupov [RedChrom]" Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7E4B016A426 for ; Sun, 22 Jan 2006 04:43:29 +0000 (GMT) (envelope-from redchrom@gmail.com) Received: from uproxy.gmail.com (uproxy.gmail.com [66.249.92.193]) by mx1.FreeBSD.org (Postfix) with ESMTP id BFE2D43D58 for ; Sun, 22 Jan 2006 04:43:28 +0000 (GMT) (envelope-from redchrom@gmail.com) Received: by uproxy.gmail.com with SMTP id o2so474417uge for ; Sat, 21 Jan 2006 20:43:27 -0800 (PST) Received: by 10.66.222.2 with SMTP id u2mr1006357ugg; Sat, 21 Jan 2006 20:43:27 -0800 (PST) Received: from localhost ( [195.46.115.10]) by mx.gmail.com with ESMTP id j3sm2698987ugd.2006.01.21.20.43.11; Sat, 21 Jan 2006 20:43:22 -0800 (PST) Message-Id: <20060122044519.GA655@asylum> Date: Sun, 22 Jan 2006 12:45:19 +0800 From: "Stepan Zastupov [RedChrom]" To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: Subject: ports/92131: [PATCH] comms/ltmdm fix kernel panic on recent current X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2006 04:50:10 -0000 >Number: 92131 >Category: ports >Synopsis: [PATCH] comms/ltmdm fix kernel panic on recent current >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: update >Submitter-Id: current-users >Arrival-Date: Sun Jan 22 04:50:03 GMT 2006 >Closed-Date: >Last-Modified: >Originator: RedChrom >Release: FreeBSD 7.0-CURRENT i386 >Organization: RedChrom >Environment: >Description: System: FreeBSD asylum 7.0-CURRENT FreeBSD 7.0-CURRENT #0: Tue Jan 17 15:45:23 IRKT 2006 root@asylum:/usr/obj/usr/src/sys/ASYLUM i386 Ltmdm using ttymalloc() but in recent current this function replaced by ttyalloc(). In terms of this we have kernel panic. >How-To-Repeat: Please apply the patch >Fix: diff -urN ltmdm.orig/Makefile ltmdm/Makefile --- ltmdm.orig/Makefile Sat Jan 21 19:44:30 2006 +++ ltmdm/Makefile Sat Jan 21 19:45:50 2006 @@ -7,7 +7,7 @@ PORTNAME= ltmdm PORTVERSION= 1.4 -PORTREVISION= 15 +PORTREVISION= 16 CATEGORIES= comms MASTER_SITES= http://www.dons.net.au/~darius/ EXTRACT_SUFX= .tgz diff -urN ltmdm.orig/files/patch-sys-dev-ltmdm-ltmdmsio.c ltmdm/files/patch-sys-dev-ltmdm-ltmdmsio.c --- ltmdm.orig/files/patch-sys-dev-ltmdm-ltmdmsio.c Sat Jan 21 19:44:30 2006 +++ ltmdm/files/patch-sys-dev-ltmdm-ltmdmsio.c Sat Jan 21 19:39:50 2006 @@ -1,5 +1,5 @@ ---- sys/dev/ltmdm/ltmdmsio.c.orig Tue Mar 12 04:47:31 2002 -+++ sys/dev/ltmdm/ltmdmsio.c Sat Nov 5 07:27:48 2005 +--- ltmdmsio.c.orig Tue Mar 12 09:47:31 2002 ++++ ltmdmsio.c Sat Jan 21 19:36:48 2006 @@ -60,7 +60,9 @@ #include #include @@ -286,7 +286,19 @@ { struct com_s *com; int error; -@@ -1610,7 +1690,11 @@ +@@ -1488,7 +1568,11 @@ + return (ENXIO); + if (mynor & CONTROL_MASK) + return (0); ++#if __FreeBSD_version >= 700013 ++ tp = dev->si_tty = com->tp = ttyalloc(); ++#else + tp = dev->si_tty = com->tp = ttymalloc(com->tp); ++#endif + s = splfunc(); + /* + * We jump to this label after all non-interrupted sleeps to pick +@@ -1610,7 +1694,11 @@ * the true carrier. */ if (com->prev_modem_status & MSR_DCD || mynor & CALLOUT_MASK) @@ -298,7 +310,7 @@ } /* * Wait for DCD if necessary. -@@ -1626,7 +1710,11 @@ +@@ -1626,7 +1714,11 @@ goto out; goto open_top; } @@ -310,7 +322,7 @@ disc_optim(tp, &tp->t_termios, com); if (tp->t_state & TS_ISOPEN && mynor & CALLOUT_MASK) com->active_out = TRUE; -@@ -1639,7 +1727,11 @@ +@@ -1639,7 +1731,11 @@ } static int @@ -322,7 +334,7 @@ { struct com_s *com; int mynor; -@@ -1654,11 +1746,19 @@ +@@ -1654,11 +1750,19 @@ return (ENODEV); tp = com->tp; s = splfunc(); @@ -342,7 +354,7 @@ siosettimeout(); splx(s); if (com->gone) { -@@ -1685,7 +1785,9 @@ +@@ -1685,7 +1789,9 @@ s = splfunc(); com->do_timestamp = FALSE; com->do_dcd_timestamp = FALSE; @@ -352,7 +364,7 @@ write_vuart_port(UART_CFCR, com->cfcr_image &= ~CFCR_SBREAK); { write_vuart_port(UART_IER, 0); -@@ -1724,7 +1826,11 @@ +@@ -1724,7 +1830,11 @@ } static int @@ -364,7 +376,7 @@ { int mynor; struct com_s *com; -@@ -1735,11 +1841,19 @@ +@@ -1735,11 +1845,19 @@ com = com_addr(MINOR_TO_UNIT(mynor)); if (com == NULL || com->gone) return (ENODEV); @@ -384,7 +396,7 @@ { int mynor; struct com_s *com; -@@ -1754,7 +1868,11 @@ +@@ -1754,7 +1872,11 @@ if (com == NULL || com->gone) return (ENODEV); @@ -396,7 +408,7 @@ } static void -@@ -1860,7 +1978,11 @@ +@@ -1860,7 +1982,11 @@ if (line_status & LSR_PE) recv_data |= TTY_PE; } @@ -408,7 +420,7 @@ lt_disable_intr(); } while (buf < com->iptr); } -@@ -1894,23 +2016,34 @@ +@@ -1894,23 +2020,34 @@ u_char recv_data; u_char int_ctl; u_char int_ctl_new; @@ -443,7 +455,7 @@ line_status = read_vuart_port(UART_LSR); /* input event? (check first to help avoid overruns) */ -@@ -1948,7 +2081,11 @@ +@@ -1948,7 +2085,11 @@ recv_data = 0; } ++com->bytes_in; @@ -455,7 +467,7 @@ setsofttty(); ioptr = com->iptr; if (ioptr >= com->ibufend) -@@ -2053,7 +2190,11 @@ +@@ -2053,7 +2194,11 @@ } static int @@ -467,7 +479,7 @@ { struct com_s *com; int error; -@@ -2103,6 +2244,7 @@ +@@ -2103,6 +2248,7 @@ } } tp = com->tp; @@ -475,7 +487,7 @@ #if defined(COMPAT_43) || defined(COMPAT_SUNOS) term = tp->t_termios; oldcmd = cmd; -@@ -2112,6 +2254,7 @@ +@@ -2112,6 +2258,7 @@ if (cmd != oldcmd) data = (caddr_t)&term; #endif @@ -483,7 +495,7 @@ if (cmd == TIOCSETA || cmd == TIOCSETAW || cmd == TIOCSETAF) { int cc; struct termios *dt = (struct termios *)data; -@@ -2134,7 +2277,11 @@ +@@ -2134,7 +2281,11 @@ if (lt->c_ospeed != 0) dt->c_ospeed = tp->t_ospeed; } @@ -495,7 +507,7 @@ if (error != ENOIOCTL) return (error); s = splfunc(); -@@ -2189,13 +2336,17 @@ +@@ -2189,13 +2340,17 @@ com->do_timestamp = TRUE; *(struct timeval *)data = com->timestamp; break; @@ -513,7 +525,7 @@ if (error == ENODEV) error = ENOTTY; return (error); -@@ -2257,8 +2408,13 @@ +@@ -2257,8 +2412,13 @@ com->state &= ~CS_CHECKMSR; lt_enable_intr(); if (delta_modem_status & MSR_DCD) @@ -527,7 +539,7 @@ } if (com->state & CS_ODONE) { lt_disable_intr(); -@@ -2270,7 +2426,11 @@ +@@ -2270,7 +2430,11 @@ sio_busycheck_handle = timeout(siobusycheck, com, hz / 100); com->extra_state |= CSE_BUSYCHECK; } @@ -539,7 +551,7 @@ } if (com_events == 0) break; -@@ -2769,11 +2929,21 @@ +@@ -2769,11 +2933,21 @@ && (!(t->c_iflag & PARMRK) || (t->c_iflag & (IGNPAR | IGNBRK)) == (IGNPAR | IGNBRK)) && !(t->c_lflag & (ECHO | ICANON | IEXTEN | ISIG | PENDIN)) @@ -561,7 +573,7 @@ } #ifdef KLD_MODULE -@@ -2796,7 +2966,7 @@ +@@ -2796,7 +2970,7 @@ #endif DRIVER_MODULE(ltmdm, pci, ltmdm_pci_driver, ltmdm_devclass, ltmdm_event, 0); >Release-Note: >Audit-Trail: >Unformatted: