Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 26 Jun 1999 08:20:03 -0700 (PDT)
From:      "A.Yu.Isupov" <isupov@moonhe.jinr.ru>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: kern/12239
Message-ID:  <199906261520.IAA97321@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/12239; it has been noted by GNATS.

From: "A.Yu.Isupov" <isupov@moonhe.jinr.ru>
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199906261520.IAA97321>