gpt4 book ai didi

kernel - 内核模块参数的字符串长度限制

转载 作者:行者123 更新时间:2023-12-04 02:24:57 26 4
gpt4 key购买 nike

加载内核模块时,我将字符串作为参数传递。
当字符串大于 1024 个字符时,modprobe 会导致错误:

FATAL: Error inserting mymodule (/lib/modules..): No space left on device

dmesg 输出:
mystr: string parameter too long

模块参数是否限制为 1024 个字符字符串?

最佳答案

我认为不仅模块而且所有 linux 命令内核参数都限制为 1024 字符。来自 linux source code , 文件 kernel/params.c :

int param_set_charp(const char *val, const struct kernel_param *kp)
{
if (strlen(val) > 1024) {
pr_err("%s: string parameter too long\n", kp->name);
return -ENOSPC;
}

maybe_kfree_parameter(*(char **)kp->arg);

/* This is a hack. We can't kmalloc in early boot, and we
* don't need to; this mangled commandline is preserved. */
if (slab_is_available()) {
*(char **)kp->arg = kmalloc_parameter(strlen(val)+1);
if (!*(char **)kp->arg)
return -ENOMEM;
strcpy(*(char **)kp->arg, val);
} else
*(const char **)kp->arg = val;

return 0;
}

所以答案,你不能传递大于 1024 个字符的参数。

关于kernel - 内核模块参数的字符串长度限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22658368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com