executing insmod hangs the entire os

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When I execute insmod for the kernel module object file of the
following C code, the entire system hangs. The module replaces the
reference to original chroot system call with a new one in the
sys_call_table. The syscall_table address is correct as per
System.map(which returns 2 values for sys_call_table, surprisingly). I
am on a VM running CentOS 6.6 with kernel version 2.6.32-504.


#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/types.h>
#include <linux/unistd.h>
#include <asm/cacheflush.h>
#include <asm/page.h>
#include <asm/current.h>
#include <linux/sched.h>
#include <linux/kallsyms.h>

unsigned long *syscall_table = (unsigned long *)0xffffffff81600560;

asmlinkage int (*original_chroot)(const char __user *);

asmlinkage int new_chroot(const char __user *filename){
    printk(KERN_ALERT "CHROOT HIJACKED");
    return (*original_chroot)(filename);
}

static int init(void) {
    printk(KERN_ALERT "\nHIJACK INIT\n");
    original_chroot = (void *)syscall_table[__NR_chroot];
    syscall_table[__NR_chroot] = new_chroot;
    return 0;
}

static void exit(void) {
    syscall_table[__NR_chroot] = original_chroot;
    printk(KERN_ALERT "MODULE EXIT\n");
}

module_init(init);
module_exit(exit);

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies




[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux