【发布时间】:2011-11-18 02:21:22
【问题描述】:
在 Linux 内核源代码中 futex.c 的futex_wake_op function 中,我试图了解控件是如何到达this 点的。这发生在上述函数中,futex_atomic_op_inuser 返回-EFAULT,并且但是uaddr2 是可写的。
但从futex_atomic_op_inuser 的source 中,我看到它仅在if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int))) 上返回-EFAULT。
futex_atomic_op_inuser反过来调用__futex_atomic_op宏,我在代码中看到-EFAULT,但我被告知EFAULT的路径不涉及调用__futex_atomic_op
控件如何达到上述点(即if (!fshared)goto retry_private;)那么?
提前致谢!
【问题讨论】:
-
这是两个问题。 EFAULT 的路径不涉及调用
__futex_atomic_op。 -
@Igor 我已经修改了问题。
标签: kernel arm inline-assembly futex