ядро 4.17 передает аргумент новому системному вызову struct pt_regs * не работает - PullRequest
1 голос
/ 16 марта 2020

Я написал простой хук, который заменяет системный вызов kill на мой, а также создает новый и добавляет его в конец указателя sys_call_table, все работает нормально, за исключением того, что когда я вызываю системный вызов, но не могу передать аргумент к нему, а также я не могу вызвать системный вызов kill из пространства ядра, он просто ничего не делает. Я должен сказать, что в ядре 4.15 это работало хорошо, но в ядре 4.17 мне пришлось изменить несколько вещей в любом случае, это код моего нового системного вызова

asmlinkage long comu(struct pt_regs *t)
{
    printk("%d\n",t.bx);
}

и когда я вызываю его с python с помощью ctypes и отправляю ему номер 0 или 1, он печатает очень высокий номер, и это моя версия sys_kill

asmlinkage long our_sys_kill(struct pt_regs *t)
 {
    printk("process was killed%ld\n",t->bx);

    for( i=0;i<10;i++)
    { 
        if(p[i]==t->bx&&t->cx!=2)
        {
            return 0;
        }
    }
    return orig_kill(t);

 }
...