g.r*_*ket 25 race-condition linux-device-driver linux-kernel sysfs
在Linux设备驱动程序中,创建sysfs属性probe过于活泼 - 特别是,它遇到了与用户空间的竞争条件.建议的解决方法是将属性添加到各种默认属性组,以便在探测之前自动创建它们.对于设备驱动程序,struct device_driver包含const struct attribute_group **groups此目的.
但是,在Linux 3.11中struct attribute_group只有二进制属性的字段.对于较旧的内核(特别是3.4),设备驱动程序如何在探测之前创建sysfs二进制属性?
引用(强调我的)Greg Kroah-Hartman从他对合并请求的评论(由Linus 合并为3.11开发周期的一部分):
以下是3.11-rc2的一些驱动核心补丁.它们不是真正的错误修正,而是一堆新的辅助宏,供驱动程序正确创建属性组,驱动程序和子系统需要修复大量的竞争问题,在用户空间被告知后错误地创建sysfs文件(二进制和普通)该设备存在.
此外,还可以创建二进制文件作为属性组,以解决竞争条件,这在此之前是不可能的,所以这是我的错,驱动程序被破坏了.
所以看起来真的没有办法在旧内核上解决这个问题.
| 归档时间: |
|
| 查看次数: |
633 次 |
| 最近记录: |