我正在编写一个小内核模块,专门用于使用内核的密钥保留服务访问特定密钥。由于我无法找到一个简单的函数来返回给定其ID的密钥内容,因此我不得不求助于kernel documentation中概述的request_key
。
这一行给出了错误:
struct key *my_key = request_key(&key_type_user, "test key", NULL);
我引用了正确的密钥类型,但仍然出现此错误。 security/keys/request_key.c中我的代码应该调用的函数声明为:
struct key *request_key(struct key_type *type,
const char *description,
const char *callout_info)
我没有看到*type
需要成为常数的任何内容。我已经读过这条错误消息可能与C方面的虚假广告有关,因为它会使某些内容变得“不变”,但我无法看到它与以上功能。有什么帮助吗?
答案 0 :(得分:1)
您缺少向我们展示您的声明的上下文,但是从您得到的错误我猜它是在文件范围内,声明全局。静态分配的对象在编译时初始化,因此您不能使用函数调用和其他运行时构造来初始化它。
答案 1 :(得分:0)
如果该行在声明部分中,它具有初始化程序的语法,可能是编译器的投诉。移动紧随其后的任何声明。或拆分:
struct key *my_key;
my_key = request_key(&key_type_user, "test key", NULL);