我正在Linux中实现系统调用 . 我有一个问题:无法从用户接收参数值 . 我的内核版本4.19.5

这是用户代码:

int main(){
    char *name = (char*)malloc(sizeof(char)*32);

    int fd1;
    char buf[128];
    fd1 = open("/usr/src/linux-4.19.5/abc", O_WRONLY);
    if (fd1 == -1) {
        printf("ERROR\n");
        return EXIT_FAILURE;
    }
    printf("Enter process to find: ");
    scanf (" %[^\n]", name);
    write(fd1, name, strlen(name));
    long int status = syscall(335, name);
    printf("System call returned %ld\n", status);
    close(fd1);

    return 0;}

但我无法在内核代码中收到'name'的值:这是内核代码:

asmlinkage long sys_process_name(char* process_name){

    struct task_struct *task;
    struct tty_struct *my_tty;
    my_tty = get_current_tty();
    char name[32];
    for_each_process(task){
        if(strcmp(task->comm,process_name) == 0){
            sprintf(name, "PID = %ld\n", (long)task_pid_nr(task));
            (my_tty->driver->ops->write) (my_tty, name, strlen(name)+1);
        }
    }
    return 0;}

process_name的值为null .