Hello, I have written a short kernel module which should zero a network SNMP mib. I have OOPs. My idea was to take an existing macro that adds an integer to a network SNMP mib and to change it so that it would zero that counter. So I tool the TCP_ADD_STATS() macro - see in the comments of the module below.
I tried both with xor and with subtracting the value of the SNMP mib from itself. In both cases it fails with the same OOPS. I will appreciate if someone could advice/suggest alternative methods. Following is my module and the OOPs i get: #include <linux/module.h> #include <linux/slab.h> #include <linux/types.h> #include <linux/string.h> #include <linux/errno.h> #include <linux/skbuff.h> #include <linux/cgroup.h> #include <linux/rcupdate.h> #include <linux/atomic.h> #include <net/rtnetlink.h> #include <net/pkt_cls.h> #include <net/sock.h> #include <net/snmp.h> #include <net/net_namespace.h> static int __init init_zeromib(void) { int ret = 0; printk("in %s\n",__func__); //#define SNMP_ADD_STATS(mib, field, addend) this_cpu_add(mib[0]->mibs[field], addend) //#define TCP_ADD_STATS(net, field, val) SNMP_ADD_STATS((net)->mib.tcp_statistics, field, val) // TCP_ADD_STATS(sock_net(sk), TCP_MIB_OUTSEGS, // tcp_skb_pcount(skb)); #define SNMP_ZERO_STATS(mib, field) this_cpu_add(mib[0]->mibs[field], -(mib[0]->mibs[field])) #define TCP_ZERO_STATS(net, field) SNMP_ZERO_STATS((net)->mib.tcp_statistics, field) TCP_ZERO_STATS(&init_net, ICMP_MIB_OUTMSGS); return ret; } static void __exit exit_zeromib(void) { printk("in %s\n",__func__); } module_init(init_zeromib); module_exit(exit_zeromib); MODULE_LICENSE("GPL v2"); The oops when insmoding the moudle is: Apr 27 19:27:36 amd kernel: [ 2683.611903] in init_zeromib Apr 27 19:27:36 amd kernel: [ 2683.611929] BUG: unable to handle kernel paging request at 0000000000017fe0 Apr 27 19:27:36 amd kernel: [ 2683.612017] IP: [<ffffffffa0005020>] init_zeromib+0x20/0x1000 [zeromib] Apr 27 19:27:36 amd kernel: [ 2683.612017] PGD 3b9eb067 PUD 3c514067 PMD 0 Apr 27 19:27:36 amd kernel: [ 2683.612017] Oops: 0000 [#1] SMP Apr 27 19:27:36 amd kernel: [ 2683.612017] Modules linked in: zeromib(+) edac_core edac_mce_amd k8temp nv_tco i2c_nforce2 i2c_core 8139too r8169 8139cp mii ata_generic sata_nv pata_acpi pata_amd Apr 27 19:27:36 amd kernel: [ 2683.612017] CPU 1 Apr 27 19:27:36 amd kernel: [ 2683.612017] Pid: 5620, comm: insmod Not tainted 3.9.0-rc1+ #56 /KN9(NF-MCP55 series) Apr 27 19:27:36 amd kernel: [ 2683.612017] RIP: 0010:[<ffffffffa0005020>] [<ffffffffa0005020>] init_zeromib+0x20/0x1000 [zeromib] Apr 27 19:27:36 amd kernel: [ 2683.612017] RSP: 0018:ffff88003c4e1d48 EFLAGS: 00010292 Apr 27 19:27:36 amd kernel: [ 2683.612017] RAX: 0000000000017f70 RBX: ffff88003c4e1ee8 RCX: ffff88003fd0fa68 Apr 27 19:27:36 amd kernel: [ 2683.612017] RDX: 0000000000000000 RSI: ffff88003fd0ded8 RDI: 0000000000000246 Apr 27 19:27:36 amd kernel: [ 2683.612017] RBP: ffff88003c4e1d48 R08: 000000000000000a R09: 00000000000016f6 Apr 27 19:27:36 amd kernel: [ 2683.612017] R10: 0000000000000000 R11: 00000000000016f5 R12: ffffffffa0005000 Apr 27 19:27:36 amd kernel: [ 2683.612017] R13: 0000000000000000 R14: ffffffffa004b000 R15: ffff88003c5ec8a0 Apr 27 19:27:36 amd kernel: [ 2683.612017] FS: 00007f0990404700(0000) GS:ffff88003fd00000(0000) knlGS:0000000000000000 Apr 27 19:27:36 amd kernel: [ 2683.612017] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 Apr 27 19:27:36 amd kernel: [ 2683.612017] CR2: 0000000000017fe0 CR3: 000000003bab6000 CR4: 00000000000007e0 Apr 27 19:27:36 amd kernel: [ 2683.612017] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 Apr 27 19:27:36 amd kernel: [ 2683.612017] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 Apr 27 19:27:36 amd kernel: [ 2683.612017] Process insmod (pid: 5620, threadinfo ffff88003c4e0000, task ffff88003be5ae80) Apr 27 19:27:36 amd kernel: [ 2683.612017] Stack: Apr 27 19:27:36 amd kernel: [ 2683.612017] ffff88003c4e1d78 ffffffff8100215a ffff88003c4e1ee8 ffffffffa004b018 Apr 27 19:27:36 amd kernel: [ 2683.612017] ffffffffa004b050 ffffffffa004b000 ffff88003c4e1ed8 ffffffff810c2276 Apr 27 19:27:36 amd kernel: [ 2683.612017] ffffffff81328240 ffffffff81a0cc98 ffff88003c4e1ef8 ffff880000000000 Apr 27 19:27:36 amd kernel: [ 2683.612017] Call Trace: Apr 27 19:27:36 amd kernel: [ 2683.612017] [<ffffffff8100215a>] do_one_initcall+0x12a/0x180 Apr 27 19:27:36 amd kernel: [ 2683.612017] [<ffffffff810c2276>] load_module+0x1c16/0x27a0 Apr 27 19:27:36 amd kernel: [ 2683.612017] [<ffffffff81328240>] ? ddebug_proc_open+0xc0/0xc0 Apr 27 19:27:36 amd kernel: [ 2683.612017] [<ffffffff8115c162>] ? insert_vmalloc_vmlist+0x22/0x80 Apr 27 19:27:36 amd kernel: [ 2683.612017] [<ffffffff810c2eae>] sys_init_module+0xae/0x110 Apr 27 19:27:36 amd kernel: [ 2683.612017] [<ffffffff8159c659>] system_call_fastpath+0x16/0x1b Apr 27 19:27:36 amd kernel: [ 2683.612017] Code: <48> 8b 50 70 48 f7 da 65 48 01 50 70 31 c0 5d c3 00 00 00 00 00 00 Apr 27 19:27:36 amd kernel: [ 2683.612017] RIP [<ffffffffa0005020>] init_zeromib+0x20/0x1000 [zeromib] Apr 27 19:27:36 amd kernel: [ 2683.612017] RSP <ffff88003c4e1d48> Apr 27 19:27:36 amd kernel: [ 2683.612017] CR2: 0000000000017fe0 Apr 27 19:27:36 amd kernel: [ 2683.638099] ---[ end trace 95e77c0f2eeae8bc ]-- rgs, Kevin _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies