- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
来自/urs/src/linux-header-#version/arch/x86/include/asm/uaccess.h 的以下代码定义了宏 access_ok,并将“type”作为参数。但是,这个宏的定义并没有在任何地方使用这个参数。
#define access_ok(type, addr, size) (likely(__range_not_ok(addr, size) == 0))
我错过了什么吗?“类型”应该有 2 个可能的值: #define VERIFY_READ 0 #define VERIFY_WRITE 1
我唯一的解释是这是为了保持一致性。 (在不同的平台上,access_ok的实现可能会考虑“类型”)。
最佳答案
宏的这个实现没有使用它是一个实现细节。 access_ok
逻辑上 所做的是根据所有三个参数给出的答案;恰好 x86(和大多数其他平台)的答案实际上不需要考虑 type
。 (在某些平台上,实现不考虑任何参数,只返回 1。在其他平台上,例如 UML,确实使用了 type
。 ) access_ok
是抽象API的一部分,应该是跨平台一致的,而type
是Linux对其抽象模型中内存的一个属性,所以该参数是必须的。
“一致性”是一个正确的结论,但却是从错误的前提得出的:API 由系统的抽象、可移植模型决定,该模型包括 type
。在这种情况下,实现的责任是符合 API,而不是 API 屈服于实现的细节。
关于c - 为什么 uaccess.h 中的 access_ok 宏的实现没有使用它的所有参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22919884/
尝试将老式驱动程序从内核 2.6 合并到最新的内核 5.8。 并遇到以下错误: macro "access_ok" passed 3 arguments, but takes just 2 acces
在下面的代码中(char 驱动程序的read 实现),MMU TLB 条目是否有可能在wait_event_interruptible 期间发生变化,这样__put_user 导致异常,即使 acce
编辑: 关于我为什么会在这里失败,我还没有一个好的答案......所以让我稍微改一下。我什至需要 verify_area() 检查吗?那有什么意义呢?我已经测试了我的结构已成功传递给此 ioctl 的
我一直在做一些研究,我对这个宏有点困惑。希望有人能给我一些指导。我有一些 ioctl 代码(这是我继承的,而不是编写的),如果在继续从用户空间复制数据之前检查 access_ok() ,它做的第一件事
来自/urs/src/linux-header-#version/arch/x86/include/asm/uaccess.h 的以下代码定义了宏 access_ok,并将“type”作为参数。但是,
我们知道为了安全问题,如果我们想在用户空间和内核空间之间进行内存复制,我们应该使用copy_to_user()/copy_from_user()。 我的问题是,memcpy() 应该比 copy_to
我是一名优秀的程序员,十分优秀!