c - 检查地址在 Linux 内核中是否有效(NULL 检查除外)
问题描述
例如,我使用 4096 字节分配了一个内存vmalloc
,我有一个计数器来跟踪在中断上下文中写入的分配内存,例如:
if (data_to_read >= 4) {
readdata();
data_to_read -= 4;
} else if (data_to_read < 4) {
memcpy();
}
不知何故,计数器损坏并将剩余字节的读取值更新为 1 (data_to_read),内核尝试写入内存并崩溃。在这种情况下,有没有办法在 memcpy 之前检查传递的地址是否有效?
解决方案
推荐阅读
- typescript - typescript 动态导入与 tsconfig.json 中的 webpack.config 冲突?
- python - 从包含python中字典的嵌套列表创建字典
- python-3.x - 单个轮廓的边界框,一种颜色除外
- reactjs - 无法正确地将值从父母传递给孩子和孩子传递给父母
- julia - 如何使用DifferentialEquations.jl消除具有不确定形式的微分方程的解中的振荡
- caching - 在 Apache Ignite 中获取数据区域的 maxSize
- c - 我在哪里可以找到 GCC 源代码中的数学例程?数学函数是如何工作的?
- rust - 如何在 Rust 中配置默认堆栈大小
- typescript - 如何使函数的两个参数匹配已定义接口的联合?
- java - 2 参数 PreparedStatement 抛出语法错误,SQL 状态 42601,靠近第二个参数