views:

60

answers:

3

Can I add a systemcall from a module?

+1  A: 

Of course not!!

carlfilips
+3  A: 

In some kernel versions it is possible to add or modify a systemcall by changing the sys_call_table. But because this table is not intended to be changed at runtime, it has no protection. Changing the table will lead to race conditions. Even without the race conditions, there are problems related to removing the modules while they are in use or stacked. Because of the problems with changing sys_call_table from modules, the symbol is no longer exported in new kernels. In other words if you get "unresolved symbol sys_call_table" when trying to load a module, it means there is a bug in the module, and the kernel does no longer accept such buggy modules.

carlfilips
+1  A: 

Sounds like a really bad idea, regardless of whether you can. If your new system call will operate on files/devices, perhaps you could make it an ioctl or something similar rather than making it its own syscall?

R..