很簡單sys_call_table的掛鉤代碼Linux內核模塊分配時將指針整數,未作鑄
#include <asm/unistd.h>
#include <linux/autoconf.h>
#include <linux/in.h>
#include <linux/init_task.h>
#include <linux/ip.h>
#include <linux/kernel.h>
#include <linux/kmod.h>
#include <linux/mm.h>
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/skbuff.h>
#include <linux/stddef.h>
#include <linux/string.h>
#include <linux/syscalls.h>
#include <linux/tcp.h>
#include <linux/types.h>
#include <linux/unistd.h>
#include <linux/version.h>
#include <linux/workqueue.h>
ssize_t *sys_call_table = (ssize_t *)0xc0026e04;
asmlinkage ssize_t (*orig_open)(const char *pathname, int flags);
asmlinkage ssize_t hacked_open(const char *pathname, int flags)
{
printk(KERN_INFO "SYS_OPEN called : %s\n", pathname);
return orig_open(pathname, flags);
}
int init_module(void)
{
orig_open = sys_call_table[__NR_open]; /* line 33 */
sys_call_table[__NR_open] = hacked_open; /* line 34 */
return 0;
}
void cleanup_module(void)
{
sys_call_table[__NR_open] = orig_open; /* line 40 */
}
MODULE_LICENSE("GPL");
我有類似下面
此代碼工作正常的警告,但我想刪除警告。我能怎麼做?
/家/測試/工具/ LKM/AC:在功能 '的init_module':
/家/測試/工具/ LKM/AC:33:警告:分配使得整數指針沒有投
/家/測試/工具/ LKM/AC:34:警告:賦值時將指針整數,未作鑄
/家/測試/工具/ LKM/AC:在函數 '在cleanup_module':
/家/測試/工具/ lkm/ac:40:警告:賦值使指針中的整數無指針
@alk:我爲這些行號添加了標記。 。 。雖然真的,但這些功能都足夠短,甚至不需要標記。 – ruakh
謝謝。我覺得,在預期幫助時,標記線是OP可以在沒有任何重大努力的情況下提供的最低限度的一部分。 – alk