首页 > 解决方案 > 对 request_module() 的调用不会在 Linux 内核中返回

问题描述

我目前正在努力使用 IMA/EVM 签名对文件进行签名。

类似的事情已经在基于 3.14.79 的嵌入式 Linux 系统上完成。现在我正在处理一个基于 Linux 4.14.98 的系统。问题不在于签名本身,而是在验证新签名时开始出现问题。

系统当前处于非强制状态,即丢失或不正确的签名不会导致程序终止。

在错误的情况下,系统只是在签名验证过程中卡住了。如果它在 shell 上输入命令后发生,我可以用 中断Ctrl-C,但如果它发生在引导期间,就是这样。

在我寻找错误的过程中,我整理了内核中与密钥环搜索和完整性密钥环缓存相关的一些错误。但现在我被困住了。

我在代码中放置了一些printk日志,发现问题出在这段代码中:

struct crypto_alg *crypto_larval_lookup(const char *name, u32 type, u32 mask)
{
...
    alg = crypto_alg_lookup(name, type, mask);
    if (!alg && !(mask & CRYPTO_NOLOAD)) {
        request_module("crypto-%s", name);
...

在哪里name举行"pkcs1pad(rsa,sha256)"

在某些情况下,此函数调用会返回,在其他情况下,它不会返回,直到我输入“Ctrl-C”或根本不返回。

我不确定在哪里可以找到更多信息、错误配置、缺少标志或任何其他提示如何解决问题。

标签: clinux-kernel

解决方案


推荐阅读