簡體   English   中英

Linux 塊系統調用

[英]Linux Block System Calls

我正在嘗試在 linux 2.6.32.60 x86 內核中實現功能,該功能允許我根據我在任務結構中添加的字段阻止所有系統調用。 這基本上是以下形式:

task_struct ts;
if(ts-> added_field == 0)
    //do system call normally
else
   //don't do system call

我想知道我是否應該直接在 entry_32.S 中執行此操作,或者我是否能夠修改在其他地方調用 syscall 表的方式。 直接修改 entry_32.S 的問題是我不知道我是否可以訪問正在調用的任務結構。

謝謝您的幫助!

如果我要這樣做,我會掛接到__kernel_vsyscall()並且如果任務結構按照上面的邏輯如此指示就停止調度。

具體來說, arch/i386/kernel/vsyscall-sysenter.S在每個進程的地址空間之間共享,並且是所有系統調用通過的入口點。 這是在調度實際系統調用之前的位置,在我看來,這是放置鈎子的地方。 您位於進程的地址空間中,因此您應該可以訪問任務結構的mm->current (另見arch/sh/kernel/vsyscall/vsyscall.c

內核已經有一個非常相似的特性,稱為seccompLWN 文章)。 您可能需要考慮將您的功能建立在此基礎上,而不是實施新的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM