迭代时内核哈希表崩溃

时间:2019-05-11 19:30:27

标签: c linux hashtable

我正在编写两个基本的系统调用。一个将包含用户空间字符串的节点添加到哈希表,另一个则转储表的内容。

添加一些项目并调用转储函数后,它将打印一项,然后以BUG: unable to handle kernel paging request at崩溃

我试图删除与用户空间字符串相关的所有代码,以确保错误不是来自此。我只添加了table_nodenext的{​​{1}},但遇到了相同的错误。

我感觉自己正在忽略一些非常简单的东西。我在增加或走桌子的方式上有什么惊喜吗?

key

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

卡米尔的解决方案奏效。

我忘记了动态分配内存。添加这两行解决了我的问题。

table_node *newNode = kmalloc(sizeof(table_node), GFP_KERNEL);

newNode-fname = kmalloc(strLen * sizeof(char)+1, GFP_KERNEL);