On Mon, 6 Dec 2004, Steven Rostedt wrote:
I added the following to my sys_dsyscall routine. The routine that is
the only system call for a user process to access dynamic system calls
(at anytime), even if dynamic system calls are loaded.
static int is_tainted = 0;
if (tainted & TAINT_PROPRIETARY_MODULE) {
if (!is_tainted) {
printk(KERN_INFO "Sorry, can't use dynamic system calls with proprietary modules\n");
is_tainted = 1;
}
return -EINVAL;
}
Once a proprietary module is loaded then all dynamic system calls will
become useless.
This way, only systems that never loaded a proprietary module may be
able to use dynamic system calls. This may suck for those that have
NVidia cards, but this may be a start to overcome the problem of
allowing binary hooks into default kernels. It also is a way to motivate
end users to not use proprietary modules.
I didn't know we were on a crusade to end all binary modules at all costs.
Why not just make _all_ symbols in the kernel EXPORT_SYMBOL_GPL then? I
really believe this is taking things to new levels of silliness, we should
also possibly consider adding code in glibc to stop proprietary
libraries/applications from running. What do you think?
Zwane