如何在内核驱动程序中分配用户空间缓冲区?

在一些混乱中我需要调用一个不假设从内核空间调用的内核函数,因为在参数中它从分配的用户空间中获取缓冲区.

const char __user *buf

但我需要调用它,所以如何分配用户空间缓冲区并使用该函数参数传递它.

如果可能的话,我需要在没有任何用户空间交互的情况下进行.
真的有可能吗?

我的目标是从内核驱动程序调用内核例程,该内核驱动程序接受参数const char __user * buf

最佳答案
可能还有另一种方法,具体取决于您实际尝试调用的系统调用.

这是一个article,它解释了一些关于系统调用机制的内容.有一节介绍如何从内核空间调用系统调用,使用内核内存并避免验证.

  mm_segment_t fs;

  fs = get_fs();     /* save previous value */
  set_fs (get_ds()); /* use kernel limit */

  /* system calls can be invoked */

  set_fs(fs); /* restore before returning to user space */

转载注明原文:如何在内核驱动程序中分配用户空间缓冲区? - 代码日志