From owner-freebsd-current@FreeBSD.ORG Sat Jun 25 00:11:56 2005 Return-Path: X-Original-To: freebsd-current@freebsd.org Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id EA35E16A41C for ; Sat, 25 Jun 2005 00:11:55 +0000 (GMT) (envelope-from Maksim.Yevmenkin@savvis.net) Received: from mailgate1b.savvis.net (mailgate1b.savvis.net [216.91.182.6]) by mx1.FreeBSD.org (Postfix) with ESMTP id B079543D1F for ; Sat, 25 Jun 2005 00:11:55 +0000 (GMT) (envelope-from Maksim.Yevmenkin@savvis.net) Received: from localhost (localhost.localdomain [127.0.0.1]) by mailgate1b.savvis.net (Postfix) with ESMTP id 635BF3BEE6 for ; Fri, 24 Jun 2005 19:11:55 -0500 (CDT) Received: from mailgate1b.savvis.net ([127.0.0.1]) by localhost (mailgate1b.savvis.net [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 27739-01-22 for ; Fri, 24 Jun 2005 19:11:55 -0500 (CDT) Received: from out001.email.savvis.net (out001.apptix.savvis.net [216.91.32.44]) by mailgate1b.savvis.net (Postfix) with ESMTP id 370273BE2D for ; Fri, 24 Jun 2005 19:11:55 -0500 (CDT) Received: from s228130hz1ew031.apptix-01.savvis.net ([10.146.4.28]) by out001.email.savvis.net with Microsoft SMTPSVC(6.0.3790.211); Fri, 24 Jun 2005 19:11:52 -0500 Received: from [10.254.186.111] ([64.14.1.106]) by s228130hz1ew031.apptix-01.savvis.net with Microsoft SMTPSVC(6.0.3790.211); Fri, 24 Jun 2005 19:11:40 -0500 Message-ID: <42BCA13B.2020006@savvis.net> Date: Fri, 24 Jun 2005 17:11:39 -0700 From: Maksim Yevmenkin User-Agent: Mozilla Thunderbird 1.0.2 (X11/20050404) X-Accept-Language: en-us, en MIME-Version: 1.0 To: freebsd-current@freebsd.org Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 25 Jun 2005 00:11:40.0190 (UTC) FILETIME=[75C543E0:01C5791A] X-Virus-Scanned: amavisd-new at savvis.net Subject: [patch] lor with an(4) pcmcia card on detach X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jun 2005 00:11:56 -0000 Dear Hackers, the following lor was observed on -current when i detach my an(4) pcmcia adapter Jun 24 16:20:10 beetle kernel: taskqueue_drain with the following non-sleepable locks held: Jun 24 16:20:10 beetle kernel: exclusive sleep mutex an0 (network driver) r = 0 (0xc59af168) locked @ /usr/src/sys/dev/an/if_an.c:2836 Jun 24 16:20:10 beetle kernel: KDB: stack backtrace: Jun 24 16:20:10 beetle kernel: kdb_backtrace(1,c2412a50,c59ae000,c23d0300,e5083c34) at kdb_backtrace+0x29 Jun 24 16:20:10 beetle kernel: witness_warn(5,0,c0852219,c2412800,c59ae000) at witness_warn+0x18e Jun 24 16:20:10 beetle kernel: taskqueue_drain(c23d0300,c2412a50,c2412800,c59ae000,c2412800) at taskqueue_drain+0x1a Jun 24 16:20:10 beetle kernel: if_detach(c2412800,c2412800) at if_detach+0x1a Jun 24 16:20:10 beetle kernel: ether_ifdetach(c2412800,c59af190,c59ae000,c59af168,0) at ether_ifdetach+0x28 Jun 24 16:20:10 beetle kernel: an_detach(c2a73d00) at an_detach+0x68 Jun 24 16:20:10 beetle kernel: device_detach(c2a73d00) at device_detach+0x70 Jun 24 16:20:10 beetle kernel: pccard_detach_card(c23f8d80) at pccard_detach_card+0x41 Jun 24 16:20:10 beetle kernel: exca_removal(c23c6804) at exca_removal+0x46 Jun 24 16:20:10 beetle kernel: cbb_removal(c23c6800) at cbb_removal+0x2c Jun 24 16:20:10 beetle kernel: cbb_event_thread(c23c6800,e5083d38,c23c6800,c0575a00,0) at cbb_event_thread+0x9a Jun 24 16:20:10 beetle kernel: fork_exit(c0575a00,c23c6800,e5083d38) at fork_exit+0xa0 Jun 24 16:20:10 beetle kernel: fork_trampoline() at fork_trampoline+0x8 Jun 24 16:20:10 beetle kernel: --- trap 0x1, eip = 0, esp = 0xe5083d6c, ebp = 0 --- Jun 24 16:20:10 beetle kernel: an0: detached the following is one possible patch --- if_an.c.orig Fri Jun 24 16:29:33 2005 +++ if_an.c Fri Jun 24 16:33:38 2005 @@ -826,18 +826,19 @@ struct an_softc *sc = device_get_softc(dev); struct ifnet *ifp = sc->an_ifp; + AN_LOCK(sc); if (sc->an_gone) { + AN_UNLOCK(sc); device_printf(dev,"already unloaded\n"); return(0); } - AN_LOCK(sc); an_stop(sc); + sc->an_gone = 1; ifmedia_removeall(&sc->an_ifmedia); ifp->if_flags &= ~IFF_RUNNING; + AN_UNLOCK(sc); ether_ifdetach(ifp); if_free(ifp); - sc->an_gone = 1; - AN_UNLOCK(sc); bus_teardown_intr(dev, sc->irq_res, sc->irq_handle); an_release_resources(dev); mtx_destroy(&sc->an_mtx); thanks, max