From owner-freebsd-bugs@FreeBSD.ORG Mon Sep 15 10:30:17 2003 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id E830516A4BF for ; Mon, 15 Sep 2003 10:30:16 -0700 (PDT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8CAAA43FDD for ; Mon, 15 Sep 2003 10:30:15 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.12.9/8.12.9) with ESMTP id h8FHUFUp030655 for ; Mon, 15 Sep 2003 10:30:15 -0700 (PDT) (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.12.9/8.12.9/Submit) id h8FHUFBe030654; Mon, 15 Sep 2003 10:30:15 -0700 (PDT) Resent-Date: Mon, 15 Sep 2003 10:30:15 -0700 (PDT) Resent-Message-Id: <200309151730.h8FHUFBe030654@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Ryuichiro Imura Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7269A16A4BF for ; Mon, 15 Sep 2003 10:25:34 -0700 (PDT) Received: from mail.ryu16.org (YahooBB219005044040.bbtec.net [219.5.44.40]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4E6AB43FDD for ; Mon, 15 Sep 2003 10:25:32 -0700 (PDT) (envelope-from imura@ryu16.org) Received: from redeye.xt.ryu16.org (localhost [127.0.0.1]) by mail.ryu16.org (8.12.9/8.12.9) with ESMTP id h8FHPUCL052936 for ; Tue, 16 Sep 2003 02:25:30 +0900 (JST) (envelope-from imura@redeye.xt.ryu16.org) Received: (from imura@localhost) by redeye.xt.ryu16.org (8.12.9/8.12.9/Submit) id h8FHPUYE052935; Tue, 16 Sep 2003 02:25:30 +0900 (JST) Message-Id: <200309151725.h8FHPUYE052935@redeye.xt.ryu16.org> Date: Tue, 16 Sep 2003 02:25:30 +0900 (JST) From: Ryuichiro Imura To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Subject: kern/56897: kern_linker.c: prefversion != module's version causes panic X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Ryuichiro Imura List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Sep 2003 17:30:17 -0000 >Number: 56897 >Category: kern >Synopsis: kern_linker.c: prefversion != module's version causes panic >Confidential: no >Severity: serious >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Sep 15 10:30:14 PDT 2003 >Closed-Date: >Last-Modified: >Originator: Ryuichiro Imura >Release: FreeBSD 5.1-CURRENT i386 >Organization: >Environment: System: FreeBSD bluewind.xt.ryu16.org 5.1-CURRENT FreeBSD 5.1-CURRENT #1: Tue Sep 16 02:05:33 JST 2003 root@bluewind.xt.ryu16.org:/usr/src/sys/i386/compile/BLUE i386 >Description: In kern_linker.c, "bestmod" is initialized as NULL in modlist_lookup2(), "ver > bestmod->version" causes system panic, when md_ver_preferred != the module's version. >How-To-Repeat: Edit one of prefversion in MODULE_DEPEND() in the tree, and load it. >Fix: I don't know the case that found_modules has two modules these name are the same, I just remove "ver > bestmod->version"... Index: kern_linker.c =================================================================== RCS file: /home/ncvs/src/sys/kern/kern_linker.c,v retrieving revision 1.107 diff -u -u -9 -r1.107 kern_linker.c --- kern_linker.c 27 Jul 2003 17:04:55 -0000 1.107 +++ kern_linker.c 15 Sep 2003 17:08:24 -0000 @@ -1079,20 +1079,19 @@ bestmod = NULL; for (mod = TAILQ_FIRST(&found_modules); mod; mod = TAILQ_NEXT(mod, link)) { if (strcmp(mod->name, name) != 0) continue; ver = mod->version; if (ver == verinfo->md_ver_preferred) return (mod); if (ver >= verinfo->md_ver_minimum && - ver <= verinfo->md_ver_maximum && - ver > bestmod->version) + ver <= verinfo->md_ver_maximum) bestmod = mod; } return (bestmod); } static modlist_t modlist_newmodule(const char *modname, int version, linker_file_t container) { modlist_t mod; >Release-Note: >Audit-Trail: >Unformatted: