-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

On 10/21/10 04:46, John Baldwin wrote:
> On Thursday, October 21, 2010 4:57:25 am Xin LI wrote:
>> Author: delphij
>> Date: Thu Oct 21 08:57:25 2010
>> New Revision: 214125
>> URL: http://svn.freebsd.org/changeset/base/214125
>>
>> Log:
>>   In syscall_module_handler(): all switch branches return, remove
>>   unreached code as pointed out in a Chinese forum [1].
>>   
>>   [1] http://www.freebsdchina.org/forum/viewtopic.php?t=50619
>>   
>>   Pointed out by:            btw616 <btw s qq com>
>>   MFC after:         1 month
> 
> I think this exposes a bug though in that the default case doesn't pass 
> through to chainevh.  The default case should look more like the removed code 
> (except returning EOPNOTSUPP instead of 0 if there is no chainevh).

Hmm...  It sounds reasonable in theory (so that modules can handle
events other than MOD_LOAD/UNLOAD) at least, while I don't think it's
really being used anywhere.

Will the attached patch look reasonable?  (If data->chainevh is NULL
then operation is not supported, if not then delegate to the module).

Cheers,
- -- 
Xin LI <delp...@delphij.net>    http://www.delphij.net/
FreeBSD - The Power to Serve!          Live free or die
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.16 (FreeBSD)

iQEcBAEBCAAGBQJMwI+cAAoJEATO+BI/yjfBADUH/21dtdgSziij8hNi8ef5xOZH
QMbGRoHNUREVfuAnAevGNDotSonaRv+VEs5k9raRqqYFdtst6KzNjVQuumJsskmq
+6j7rSPXQvAmgEf6JgEZmjU/WzRbs4lozMjUOx0TW6ZSTtiXq+PSvmMe7q9iydiT
YKOj8E/itVFjKY2qMGNkAQ893qzIWvptDR9QGJP+m+8usTnYvAlk8vQw3XhfR/ws
MNE726rDNwD2sblH2IZI0dt/xy8i6mD5Ef1aM4KEkeussBjGlLAktSS6qFB71lql
JpGC9SCelhJRci6gLTvAbAyIe9hoFf8C7P+AbFXgVNMQxYWIHSzQr5BktwxSpc0=
=C6jc
-----END PGP SIGNATURE-----
Index: sys/kern/kern_syscalls.c
===================================================================
--- sys/kern/kern_syscalls.c    (revision 214146)
+++ sys/kern/kern_syscalls.c    (working copy)
@@ -181,7 +181,9 @@
                error = syscall_deregister(data->offset, &data->old_sysent);
                return (error);
        default:
-               return EOPNOTSUPP;
+               if (data->chainevh)
+                       return (data->chainevh(mod, what, data->chainarg));
+               return (EOPNOTSUPP);
        }
 
        /* NOTREACHED */
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to