summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_syscalls.c
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>1999-06-27 09:38:44 +0000
committerdfr <dfr@FreeBSD.org>1999-06-27 09:38:44 +0000
commit87df68dfcdb0a70706b226032245a525196e2a34 (patch)
treeb1a14b5b54ffbd38e1e10b4494bf429932b8f374 /sys/kern/kern_syscalls.c
parent320f4b564f393ae55af2124a46158318a41aecce (diff)
downloadFreeBSD-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.c17
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
OpenPOWER on IntegriCloud