From owner-freebsd-bugs Sat Jun 26 8:20:29 1999 Delivered-To: freebsd-bugs@freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (Postfix) with ESMTP id 3E4771586B for ; Sat, 26 Jun 1999 08:20:03 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.9.3/8.9.2) id IAA97321; Sat, 26 Jun 1999 08:20:03 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Date: Sat, 26 Jun 1999 08:20:03 -0700 (PDT) Message-Id: <199906261520.IAA97321@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org Cc: From: "A.Yu.Isupov" Subject: Re: kern/12239 Reply-To: "A.Yu.Isupov" Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org The following reply was made to PR kern/12239; it has been noted by GNATS. From: "A.Yu.Isupov" To: freebsd-gnats-submit@freebsd.org Cc: Subject: Re: kern/12239 Date: Sat, 26 Jun 1999 19:19:06 +0400 Hi ! Following fixes problem with MOD_UNLOAD for syscalls (more serious, as I think) (now kern_syscalls.c:syscall_module_handler() will be very close to kern_conf.c:[bc]devsw_module_handler(), which was already patched for the same reasons :) Patch produced for v 1.3 of kern_syscalls.c ------------------------------------------------- *** kern_syscalls.c.orig Sat Jun 26 18:57:46 1999 --- kern_syscalls.c Sat Jun 26 18:39:22 1999 *************** *** 95,107 **** return error; ms.intval = *data->offset; module_setspecific(mod, &ms); ! break; case MOD_UNLOAD : error = syscall_deregister(data->offset, &data->old_sysent); ! if (error) ! return error; ! break; } if (data->chainevh) return data->chainevh(mod, what, data->chainarg); else --- 95,114 ---- return error; ms.intval = *data->offset; module_setspecific(mod, &ms); ! if (data->chainevh) ! error = data->chainevh(mod, what, data->chainarg); ! return error; ! case MOD_UNLOAD : + if (data->chainevh) { + error = data->chainevh(mod, what, data->chainarg); + if (error) + return error; + } error = syscall_deregister(data->offset, &data->old_sysent); ! return error; } + if (data->chainevh) return data->chainevh(mod, what, data->chainarg); else ------------------------------------------------- But what about kern_module.c:module_register_init() and kern_linker.c:linker_file_sysinit() , which still void in both -stable and -current ? Isupov A. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message