没有指定 pre: 或 post: 的 Linux 内核模块 softdeps

没有指定 pre: 或 post: 的 Linux 内核模块 softdeps

CIFS 具有由以下生成的 softdep 依赖项克莫德事情/lib/modules/*/modules.softdeps是这样的:

softdep cifs gcm
softdep cifs ccm
softdep cifs aead2
softdep cifs sha512
softdep cifs sha256
softdep cifs cmac
softdep cifs aes
softdep cifs nls
softdep cifs md5
softdep cifs hmac
softdep cifs ecb

查看fs/cifs/cifsfs.cor中的源代码fs/smb/client/cifsfs.c(内核版本6.4或更新版本),pre:norpost:没有指定。

MODULE_SOFTDEP("ecb");
MODULE_SOFTDEP("hmac");
MODULE_SOFTDEP("md5");
MODULE_SOFTDEP("nls");
MODULE_SOFTDEP("aes");
MODULE_SOFTDEP("cmac");
MODULE_SOFTDEP("sha256");
MODULE_SOFTDEP("sha512");
MODULE_SOFTDEP("aead2");
MODULE_SOFTDEP("ccm");
MODULE_SOFTDEP("gcm");

我的问题是 modprobe 或任何可能解析的工具如何解释这一点modules.softdep?它应该被解释为与具有相同吗pre:

fs/smb/server/server.c(6.4) 中,声明依赖pre:项时暗示client/cifs/cifsfs.c了可能的意图是pre:

MODULE_SOFTDEP("pre: ecb");
MODULE_SOFTDEP("pre: hmac");
MODULE_SOFTDEP("pre: md5");
MODULE_SOFTDEP("pre: nls");
MODULE_SOFTDEP("pre: aes");
MODULE_SOFTDEP("pre: cmac");
MODULE_SOFTDEP("pre: sha256");
MODULE_SOFTDEP("pre: sha512");
MODULE_SOFTDEP("pre: aead2");
MODULE_SOFTDEP("pre: ccm");
MODULE_SOFTDEP("pre: gcm");
MODULE_SOFTDEP("pre: crc32");

但我想要一个明确的答案。这libkmod-config.c 中的代码并没有使它变得任何明显。似乎只是忽略它,但这没有意义。

答案1

这个在本篇中有介绍过犯罪大概在内核 5.5 左右:

cifs:不要对 MODULE_SOFTDEP 使用“pre:”

它可能导致modprobe
失败
:致命:模块是内置的。

RHBZ:1767094

然而,这bug 未公开

通过创建此文件进行测试:

/etc/modprobe.d/local-cifs.conf:

softdep cifs pre: lzo xt_LED

我的内核中的位置lzo是内置的(如 中所示/lib/modules/$(uname -r)/modules.builtin)并且xt_LED是一个模块不会失败:modprobe cifs然后加载xt_LED+ cifs。所以我想知道这是否是一个已修复的错误,并留下了另一个错误(没有pre:post:任何此类softdep行都没有效果),或者是否还有其他需要知道的事情(当原因不可用时有点困难)。

相关内容