首页 > 解决方案 > 检查地址在 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 之前检查传递的地址是否有效?

标签: clinux-kernellinux-device-driverdevice-driver

解决方案


推荐阅读