diff options
author | dfr <dfr@FreeBSD.org> | 1999-06-27 09:38:44 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 1999-06-27 09:38:44 +0000 |
commit | 87df68dfcdb0a70706b226032245a525196e2a34 (patch) | |
tree | b1a14b5b54ffbd38e1e10b4494bf429932b8f374 /sys/kern/kern_syscalls.c | |
parent | 320f4b564f393ae55af2124a46158318a41aecce (diff) | |
download | FreeBSD-src-87df68dfcdb0a70706b226032245a525196e2a34.zip FreeBSD-src-87df68dfcdb0a70706b226032245a525196e2a34.tar.gz |
Call the chained module handler before unregistering the syscall so that
errors can be detected.
Submitted by: "A.Yu.Isupov" <isupov@moonhe.jinr.ru>
PR: kern/12239
Diffstat (limited to 'sys/kern/kern_syscalls.c')
-rw-r--r-- | sys/kern/kern_syscalls.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/sys/kern/kern_syscalls.c b/sys/kern/kern_syscalls.c index e1192a9..562ad47 100644 --- a/sys/kern/kern_syscalls.c +++ b/sys/kern/kern_syscalls.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: kern_syscalls.c,v 1.2 1999/01/09 14:59:50 dfr Exp $ + * $Id: kern_syscalls.c,v 1.3 1999/01/17 18:58:04 peter Exp $ */ #include <sys/param.h> @@ -95,13 +95,20 @@ syscall_module_handler(struct module *mod, int what, void *arg) return error; ms.intval = *data->offset; module_setspecific(mod, &ms); - break; + 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); - if (error) - return error; - break; + return error; } + if (data->chainevh) return data->chainevh(mod, what, data->chainarg); else |