C Linux内核中不返回对请求模块()的调用

C Linux内核中不返回对请求模块()的调用,c,linux-kernel,C,Linux Kernel,我目前正在努力用IMA/EVM签名来签名文件 类似的事情已经在基于3.14.79的嵌入式Linux系统上完成了。现在我正在处理一个基于Linux 4.14.98的系统。 问题不在于签名本身,而是当新签名得到验证时问题就开始了 系统当前处于非强制状态,即缺少或不正确的签名不会导致程序终止 在错误的情况下,系统在签名验证过程中被卡住。如果是在shell上输入命令后发生的,我可以使用Ctrl-C中断,但如果是在引导过程中发生的,则仅此而已 在我的bug搜索过程中,我整理了内核中与keyring搜索和i

我目前正在努力用IMA/EVM签名来签名文件

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

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

在错误的情况下,系统在签名验证过程中被卡住。如果是在shell上输入命令后发生的,我可以使用
Ctrl-C
中断,但如果是在引导过程中发生的,则仅此而已

在我的bug搜索过程中,我整理了内核中与keyring搜索和integrity keyring缓存相关的一些bug。 但现在我被卡住了

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

其中
name
包含
“pkcs1pad(rsa,sha256)”

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


我不知道在哪里可以找到进一步的信息、错误的配置、缺少的标志或任何其他解决问题的提示。

Commit看起来很相关。(出现在4.19.0内核中)这看起来非常好,似乎解决了问题!谢谢!
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);
...