2010-07-31 110 views

回答

3

在某些內核版本中,可以通過更改sys_call_table來添加或修改systemcall。但是因爲這個表不打算在運行時改變,所以它沒有保護。改變表格會導致競爭狀況。即使沒有競賽條件,在使用或堆疊模塊時也會出現相關問題。由於從模塊更改sys_call_table時出現問題,該符號不再在新內核中導出。換句話說,如果在嘗試加載模塊時得到"unresolved symbol sys_call_table",這意味着模塊中存在一個錯誤,並且內核不再接受這樣的錯誤模塊。

1

聽起來像一個非常糟糕的主意,不管你是否可以。如果你的新系統調用將在文件/設備上運行,也許你可以使它成爲一個ioctl或類似的東西,而不是使它成爲自己的系統調用?

相關問題