【发布时间】:2017-10-29 14:08:07
【问题描述】:
我正在通过系统调用执行copy_to_user()。
如何让它在出错时生成 segfault 或 sigbus,就像用户空间试图访问相同的内存一样?
【问题讨论】:
-
@Yunnosch 我完全支持 MCVE,但我基本上是在问如何触发与内核空间中地址 X 对应的段错误。我假设一个简单的问题,一个单行的答案。发布设置 linux 构建、连接系统调用、编译、在虚拟机中运行以及让虚拟机执行用户空间测试程序所需的几页代码似乎有点矫枉过正。
-
kill(getpid(), SIGSEGV);呢? -
通常,系统调用应该在出现此类错误时返回 -EFAULT,您确定要打破这种模式吗?否则,看看
send_sig_info() -
失分。我的目标是一些代码行,它们给出了一些概念的上下文。类似于几行伪代码(嵌入为实际代码中的 cmets)之类的东西,它们说明了您想要触发的情况和一些推理。除了散文(我的口味有点短)之外,我希望你对你的问题提供不同的看法。例如,我不明白您为什么要给人一种虚假的印象,即某些用户空间代码行为不端,而实际上内核空间存在某种问题。我承认 MCVE 是错误的术语。
标签: c linux linux-kernel signals