Получение случайного нежелательного вывода из моего простого теста syscall - PullRequest
0 голосов
/ 10 марта 2020

Использование Ubuntu 18.04.3 LTS (GNU / Linux 5.0.21+ x86_64)

Я создал простой системный вызов и пытаюсь передать через него ввод (целое число 5), вызвав его в c запрограммируйте, а затем посмотрите, смогу ли я вернуть ввод. Я получаю случайный мусор как мой вывод, а не как ввод.

Простой системный вызов:

#include<linux/kernel.h>
#include<linux/init.h>
#include<linux/sched.h>
#include<linux/syscalls.h>
#include<linux/signal.h>
#include "tags.h"

asmlinkage int sys_get_tag(int pid)
{
  return pid;
}

мой тестовый код пользовательского пространства:

#define _GNU_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <linux/kernel.h>
#include <sys/syscall.h>
#include <unistd.h>
int main()
{
    int pid = syscall(335, 5); // 335 is the syscall number, 5 is the input to the syscall that I am trying to return
    printf("return: %d \n", pid);
    return 0;
}

мой вывод:

return: 4980568

Я заставляю его работать, когда возвращаю некоторое целое число в моем системном вызове, например return 5; например; так что я знаю, что системный вызов используется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...