-----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-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"