博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
module blacklist
阅读量:4216 次
发布时间:2019-05-26

本文共 1201 字,大约阅读时间需要 4 分钟。

对内核模块来说,黑名单是指禁止某个模块装入的机制使用 /etc/modprobe.d/ 中的文件在 /etc/modprobe.d/ 中创建 .conf 文件,使用 blacklist 关键字屏蔽不需要的模块,例如如果不想装入 pcspkr 模块:/etc/modprobe.d/nobeep.conf# Do not load the pcspkr module on bootblacklist pcspkr或者通过命令行的模式modprobe.blacklist=modname1,modname2从这里可以看出blacklist是一个模块参数,其实现在linux/module.c中其源码如下:static bool blacklisted(const char *module_name){	const char *p;	size_t len;	#可以看到module_blacklist 这个list 为null,则直接返回false	if (!module_blacklist)		return false;	#这里通过查询这个list 来比较模块的name 是否在module_blacklist中,如果在的话,返回true,就不在加载#layout_and_allocate 这个函数中加载这个模块	for (p = module_blacklist; *p; p += len) {		len = strcspn(p, ",");		if (strlen(module_name) == len && !memcmp(module_name, p, len))			return true;		if (p[len] == ',')			len++;	}	return false;}core_param(module_blacklist, module_blacklist, charp, 0400);blacklisted 这个函数是在layout_and_allocate 中加载的static struct module *layout_and_allocate(struct load_info *info, int flags){	/* Module within temporary copy. */	struct module *mod;	unsigned int ndx;	int err;	mod = setup_load_info(info, flags);	if (IS_ERR(mod))		return mod;	#可以看到如果blacklisted 返回true,则layout_and_allocate 就返回-EPERM,表示不加载这个模块	if (blacklisted(info->name))		return ERR_PTR(-EPERM);}

转载地址:http://finmi.baihongyu.com/

你可能感兴趣的文章
抽象模式,适配器模式(Adapter),模板方法模式(Template method)
查看>>
建造者模式(builder),桥梁模式(bridge mode),命令模式(Command mode)
查看>>
装饰模式(Decorator),迭代器模式(Iterator),组合模式(composite)
查看>>
观察者模式(Observer),责任链模式,访问者模式(Visitor)
查看>>
状态模式(State)
查看>>
堆、归并排序
查看>>
总结23中设计模式应用场景
查看>>
插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序、归并排序
查看>>
C#命名空间
查看>>
C++中模版的使用
查看>>
TCP链接(三次握手)和释放(四次握手)
查看>>
面试中各类二叉树题型的整理
查看>>
快速排序
查看>>
插入算法
查看>>
希尔排序
查看>>
选择排序
查看>>
归并排序
查看>>
归并排序
查看>>
排序链表
查看>>
插入排序进行链表排序
查看>>