From thomas@smtp.nordcom.net Sun Sep 7 11:53:15 2003 Return-Path: Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A20E816A4BF for ; Sun, 7 Sep 2003 11:53:15 -0700 (PDT) Received: from mail3.ewetel.de (mail3-126.ewetel.de [212.6.122.126]) by mx1.FreeBSD.org (Postfix) with ESMTP id C916143FE3 for ; Sun, 7 Sep 2003 11:53:13 -0700 (PDT) (envelope-from thomas@smtp.nordcom.net) Received: from kalak.lemur.nord.de (dialin-80-228-54-123.ewe-ip-backbone.de [80.228.54.123]) by mail3.ewetel.de (8.12.1/8.12.9) with ESMTP id h87IrA2g027105 for ; Sun, 7 Sep 2003 20:53:11 +0200 (MEST) Received: from lullog (lullog.lemur.nord.de [192.168.2.4]) by kalak.lemur.nord.de (8.12.3/8.12.3) with ESMTP id h87Ibw6p006112 for ; Sun, 7 Sep 2003 20:37:58 +0200 (CEST) (envelope-from thomas@lemur.nord.de) Message-Id: <20030907203347.U2378@lullog.lemur.nord.de> Date: Sun, 7 Sep 2003 20:37:57 +0200 (CEST) From: Thomas Wintergerst Reply-To: Thomas.Wintergerst@nord-com.net To: FreeBSD-gnats-submit@freebsd.org Subject: Possible kernel panic while loading kernel module >Number: 56570 >Category: kern >Synopsis: Possible kernel panic while loading kernel module >Confidential: no >Severity: serious >Priority: low >Responsible: freebsd-bugs >State: closed >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sun Sep 07 12:00:29 PDT 2003 >Closed-Date: Tue Sep 23 07:46:13 PDT 2003 >Last-Modified: Tue Sep 23 07:46:13 PDT 2003 >Originator: Thomas Wintergerst >Release: FreeBSD 5.1-RELEASE i386 >Organization: none >Environment: System: FreeBSD lullog.lemur.nord.de 5.1-RELEASE FreeBSD 5.1-RELEASE #3: Mon Jul 28 20:18:13 CEST 2003 operator@lullog.lemur.nord.de:/usr/src/sys/i386/compile/LULLOG i386 As shown above FreeBSD 5.1-RELEASE, i386 platform. >Description: Assume kernel module "othmod" depends on "basemod". "basemod" declares version number 2. "othmod" declares to depend on "basemod" between 1 and 3, 1 is preferred. The attempt to load "othmod" after "basemod" will cause a kernel panic. If "othmod" declared to depend only on "basemod" version 2 (exact match), this would be not problem. >How-To-Repeat: Just create a kernel module that depends on another. The dependency declaration must contain a preferred version other than the existing one, but the minimum and maximum version must contain the available version. >Fix: Just apply the following patch to "/usr/src/sys/kern/kern_linker.c": *** kern_linker.c.org Mon Mar 3 23:53:35 2003 --- kern_linker.c Mon Jul 28 20:16:57 2003 *************** *** 1085,1091 **** return (mod); if (ver >= verinfo->md_ver_minimum && ver <= verinfo->md_ver_maximum && ! ver > bestmod->version) bestmod = mod; } return (bestmod); --- 1085,1091 ---- return (mod); if (ver >= verinfo->md_ver_minimum && ver <= verinfo->md_ver_maximum && ! (bestmod == NULL || ver > bestmod->version)) bestmod = mod; } return (bestmod); >Release-Note: >Audit-Trail: State-Changed-From-To: open->closed State-Changed-By: fjoe State-Changed-When: Tue Sep 23 07:45:52 PDT 2003 State-Changed-Why: Thanks, committed! http://www.freebsd.org/cgi/query-pr.cgi?pr=56570 >Unformatted: