Author: mjg
Date: Sat Nov  1 22:36:40 2014
New Revision: 273953
URL: https://svnweb.freebsd.org/changeset/base/273953

Log:
  Fix up module unload for syscall_module_handler consumers.
  
  After r273707 it was registering syscalls as static.
  
  This fixes hwpmc module unload.
  
  Reported by: markj

Modified:
  head/sys/dev/hwpmc/hwpmc_mod.c
  head/sys/kern/kern_syscalls.c
  head/sys/sys/sysent.h

Modified: head/sys/dev/hwpmc/hwpmc_mod.c
==============================================================================
--- head/sys/dev/hwpmc/hwpmc_mod.c      Sat Nov  1 22:00:46 2014        
(r273952)
+++ head/sys/dev/hwpmc/hwpmc_mod.c      Sat Nov  1 22:36:40 2014        
(r273953)
@@ -320,7 +320,8 @@ static struct syscall_module_data pmc_sy
        NULL,
        &pmc_syscall_num,
        &pmc_sysent,
-       { 0, NULL }
+       { 0, NULL },
+       SY_THR_STATIC_KLD,
 };
 
 static moduledata_t pmc_mod = {

Modified: head/sys/kern/kern_syscalls.c
==============================================================================
--- head/sys/kern/kern_syscalls.c       Sat Nov  1 22:00:46 2014        
(r273952)
+++ head/sys/kern/kern_syscalls.c       Sat Nov  1 22:36:40 2014        
(r273953)
@@ -160,7 +160,7 @@ syscall_module_handler(struct module *mo
        switch (what) {
        case MOD_LOAD:
                error = syscall_register(data->offset, data->new_sysent,
-                   &data->old_sysent, SY_THR_STATIC_KLD);
+                   &data->old_sysent, data->flags);
                if (error) {
                        /* Leave a mark so we know to safely unload below. */
                        data->offset = NULL;

Modified: head/sys/sys/sysent.h
==============================================================================
--- head/sys/sys/sysent.h       Sat Nov  1 22:00:46 2014        (r273952)
+++ head/sys/sys/sysent.h       Sat Nov  1 22:36:40 2014        (r273953)
@@ -175,6 +175,7 @@ struct syscall_module_data {
        int     *offset;                /* offset into sysent */
        struct sysent *new_sysent;      /* new sysent */
        struct sysent old_sysent;       /* old sysent */
+       int     flags;                  /* flags for syscall_register */
 };
 
 #define        MAKE_SYSENT(syscallname)                                \
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to