从这个网页截图中,可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 漏洞类型:TPM(Trusted Platform Module)事务在TPM挂起(tpm_pm_suspend)函数中未加锁执行,可能导致与其他TPM访问者在系统中发生竞争。 - 具体问题:硬件随机TPM驱动程序使用tpm_get_random函数,并且该函数在kthread线程中被调用,这意味着它在系统挂起时不会被冻结,可能会与系统挂起期间的工作发生竞争。 2. 修复措施: - 修复方法:通过调用tpm_try_get_ops函数来保护tpm_pm_suspend函数,该函数本身是一个围绕tpm_chip_start的包装器,并且会获取适当的互斥锁。 - 代码变更:在drivers/char/tpm/tpm-interface.c文件中进行了修改,具体代码变更如下: 3. 报告和修复过程: - 报告者:Jan Dabros - 修复者:Linus Torvalds - 测试者:Vlastimil Babka - 链接:https://lore.kernel.org/all/c5ba47ef-393f-1fba-30bd-1230d1b4b592@suse.cz/ 4. 相关补丁和修复历史: - 补丁链接:https://lore.kernel.org/all/c5ba47ef-393f-1fba-30bd-1230d1b4b592@suse.cz/ - 修复历史:e891db1a18bf ("tpm: turn on TPM on suspend for TPM 1.x") 这些信息表明,该漏洞与TPM事务在系统挂起时未加锁执行有关,并且已经通过修改TPM接口代码进行了修复。修复措施包括在tpm_pm_suspend函数中调用tpm_try_get_ops函数,并在必要时调用tpm_chip_start函数以获取适当的互斥锁。