我正在尝试获取内核模块中的所有挂载点。以下是我想到的。它由于strcat而发生段错误。这是获得挂载点的正确方法吗?这会工作吗?如果是的话,我该如何解决段错误?如果没有,那么如何获得Linux内核模块中的挂载点?获取内核模块中的所有挂载点
我试过cycle the whole namespace looking for mountpoint roots that match但它从2003年开始内核已经改变太多了,所以它基本上没用。也试过get filesystem mount point in kernel module,但是从2012年开始它又过时了。
static int __init misc_init(void)
{
struct path path;
struct dentry *thedentry;
struct dentry *curdentry;
kern_path("/", LOOKUP_FOLLOW, &path);
thedentry = path.dentry;
list_for_each_entry(curdentry, &thedentry->d_subdirs, d_child)
{
kern_path(strncat("/", curdentry->d_name.name, strlen(curdentry->d_name.name)), LOOKUP_FOLLOW, &path);
if (path_is_mountpoint(&path))
{
printk("%s: is a mountpoint", curdentry->d_name.name);
}
else
printk("%s: is not a mountpoint", curdentry->d_name.name);
}
return 0;
}
你有没有读过'man strncat'?你会感到惊讶。 –
是的,我有。我试过strjoin,strlcat,strncat,strcat。 – testfile
...和'strlen(curdentry-> d_name.name)),'根本没有意义,要么 – wildplasser