我正在编写PCIe设备驱动程序,并想在内存映射空间中添加I / O地址有效性的健全性检查,即在驱动程序用户提供无效地址的情况下,读取/的驱动程序API写入PCI内存映射空间会返回错误。 PCI / PCIe规范没有定义哪些地址被认为是无效的。
驱动程序用户指的是另一个可能使用我通过SELECT *
FROM `votes`
WHERE ip = "1.1.1.1."
AND question_id BETWEEN 1 AND 5
公开的API的内核模块。
更新
我在PCI硬件上的内容如下:
BAR0寄存器EXPORT_SYMBOL()
(屏蔽BAR寄存器中的信息位)。现在得出BAR0指向的区域的大小:
大小值为0x100000,即1M,这使得所有偏移都为20位长,因此要验证偏移量,我们可以简单地应用掩码0xfffff:
0xCDE00000 & 0xFFFFFFF0 = 0xCDE00000