Программа BPF, прикрепленная к getname, не будет вызываться при вызове системного вызова renameat2.Linux

Ответить Пред. темаСлед. тема
Anonymous
 Программа BPF, прикрепленная к getname, не будет вызываться при вызове системного вызова renameat2.

Сообщение Anonymous »

Я работаю с программой BPF, которой необходимо подключиться к двум функциям "getname", которые вызываются из системного вызова renameat2, определенного в linux/fs/namei.c как:

Код: Выделить всё

SYSCALL_DEFINE5(renameat2, int, olddfd, const char __user *, oldname,
int, newdfd, const char __user *, newname, unsigned int, flags)
{
return do_renameat2(olddfd, getname(oldname), newdfd, getname(newname),
flags);
}
вызывает getname_flags, который, в свою очередь, вызывает strncpy_from_user. Мне нужен доступ к параметру char __user * name, поэтому я попытался создать kprobes, fentries и fexits (с помощью простой программы печати), чтобы попытаться перехватить все три из этих функций.
С помощью getname* , я получаю много выходных данных, означающих, что моя программа BPF действительно выполняется. Хотя при вызове «renameat2» (например, при использовании команды linux mv) я вообще не получаю никаких результатов.
По сути, это программа, которую я использую. используется в настоящее время, который не вызывается при использовании команды mv:

Код: Выделить всё

SEC("fentry/getname_flags")
int BPF_PROG(hijack_getname, char *filename) {
uid_t uid = bpf_get_current_uid_gid() & 0xFFFFFFFF;
if (uid == 1002) { //hardcoded uid
bpf_printk(" [%s]", filename);
}
}
Если я создаю программу трассировки BPF, которая подключается к входу и выходу renameat2, я ясно вижу, что между входом и выходом нет вызова «getname».
Как я уже сказал, я также пробовал использовать kprobe и fexit. Мне не удается подключиться к strncpy_from_user, не получая при этом странных ошибок о «Os: 22 — неверный аргумент».
Я действительно не могу понять, что происходит, поэтому любые помощь будет оценена по достоинству :,)

Подробнее здесь: https://stackoverflow.com/questions/792 ... -renameat2
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»