Господа, прошу помощи!
Есть вот такой кусок кода:
i = 0;
num_line = 0;
list = kmalloc(100, GFP_ATOMIC);
if (!list) {
logger(3, "tratata");
} else {
while (i < (int)l) {
if (buff[i] == 0x0A) {
if ((int)ksize(list) >= num_line) {
list[num_line] = (char *)kmalloc((int)(i - offset), GFP_KERNEL);
if (!list[num_line]) {
printk (KERN_INFO "Fuck... %d\n", num_line);
}
}
num_line++;
offset = i + 1;
}
i++;
}
}
Здесь:
l = размер массива buff
0x0A - признак конца строки (\n)
Без этого участка, всё хорошо. А с ним ядро валится то в упс, то в панику... Причём в рандомный момент времени... Может в момент загрузки модуля, может чуть позже, может в момент выгрузки....
Этот код выполняется один раз в момент загрузки модуля....
И теперь вопрос: Что я не так навертел с этим масивом?
вот что в логе: (Здесь по моему грохнулось когда я выгружал модуль...)
Jul 5 13:35:25 test kernel: [ 263.678264] Start module filter
Jul 5 13:35:52 test kernel: [ 290.720042] num line 100
Jul 5 13:35:52 test kernel: [ 290.720428] PGD 183cf067 PUD 1bd77067 PMD 0
Jul 5 13:35:52 test kernel: [ 290.720568] Oops: 0000 [#1] SMP
Jul 5 13:35:52 test kernel: [ 290.720701] Modules linked in: filter(OF-) xt_nat(F) iptable_nat(F) nf_conntrack_ipv4(F) nf_defrag_ipv4(F) nf_nat_ipv4(F) nf_nat(F) nf_conntrack(F) ip_tables(F) x_tables(F) ext2(F) joydev(F) hid_generic(F) cirrus(F) ttm(F) drm_kms_helper(F) snd_pcm(F) psmouse(F) snd_timer(F) serio_raw(F) drm(F) snd(F) tpm_tis(F) soundcore(F) snd_page_alloc(F) sysimgblt(F) microcode(F) sysfillrect(F) i2c_piix4(F) syscopyarea(F) pcspkr(F) mac_hid(F) usbhid(F) hid(F) floppy(F)
Jul 5 13:35:52 test kernel: [ 290.721454] CPU 0
Jul 5 13:35:52 test kernel: [ 290.721474] Pid: 1678, comm: rmmod Tainted: GF O 3.7.6 #1 Bochs Bochs
Jul 5 13:35:52 test kernel: [ 290.721724] RIP: 0010:[<ffffffffa01a94e0>] [<ffffffffa01a94e0>] load_list+0x200/0x2e0 [filter]
Jul 5 13:35:52 test kernel: [ 290.721919] RSP: 0018:ffff8800180ade68 EFLAGS: 00010202
Jul 5 13:35:52 test kernel: [ 290.722076] RAX: 0000000000000000 RBX: 0000000000000880 RCX: ffffffff81e1eddc
Jul 5 13:35:52 test kernel: [ 290.722226] RDX: 000000000000256e RSI: 0000000000000086 RDI: 0000000000000246
Jul 5 13:35:52 test kernel: [ 290.722375] RBP: ffff8800180adeb8 R08: 000000000000fffe R09: 0000000000000006
Jul 5 13:35:52 test kernel: [ 290.724016] R10: 00000000000001b5 R11: 0000000000000000 R12: ffffffffa01ab000
Jul 5 13:35:52 test kernel: [ 290.724016] R13: ffff8800180adf18 R14: 0000000000000000 R15: 0000000000000001
Jul 5 13:35:52 test kernel: [ 290.724016] FS: 00007f8815f23700(0000) GS:ffff88001fc00000(0000) knlGS:0000000000000000
Jul 5 13:35:52 test kernel: [ 290.724016] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
Jul 5 13:35:52 test kernel: [ 290.724016] CR2: 0000000000000000 CR3: 000000001bd51000 CR4: 00000000000006f0
Jul 5 13:35:52 test kernel: [ 290.724016] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Jul 5 13:35:52 test kernel: [ 290.724016] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Jul 5 13:35:52 test kernel: [ 290.724016] Process rmmod (pid: 1678, threadinfo ffff8800180ac000, task ffff88001dff1700)
Jul 5 13:35:52 test kernel: [ 290.724016] Stack:
Jul 5 13:35:52 test kernel: [ 290.724016] ffff8800180ade88 ffffffff816b25fe 0000000000000000 ffff8800180adee8
Jul 5 13:35:52 test kernel: [ 290.724016] ffff8800180ade98 0000000000000880 ffffffffa01ab000 ffff8800180adf18
Jul 5 13:35:52 test kernel: [ 290.724016] 0000000000000000 0000000000000001 ffff8800180adec8 ffffffffa01a95d0
Jul 5 13:35:52 test kernel: [ 290.724016] Call Trace:
Jul 5 13:35:52 test kernel: [ 290.724016] [<ffffffff816b25fe>] ? mutex_lock+0x1e/0x50
Jul 5 13:35:52 test kernel: [ 290.724016] [<ffffffffa01a95d0>] cleanup_module+0x10/0x30 [url_filter]
Jul 5 13:35:52 test kernel: [ 290.724016] [<ffffffff810bd33e>] sys_delete_module+0x19e/0x270
Jul 5 13:35:52 test kernel: [ 290.724016] [<ffffffff816b8ffa>] ? do_page_fault+0x3a/0x50
Jul 5 13:35:52 test kernel: [ 290.724016] [<ffffffff816bd699>] system_call_fastpath+0x16/0x1b
Jul 5 13:35:52 test kernel: [ 290.724016] Code: 1a a0 bf 03 00 00 00 e8 0f fc ff ff eb cd 8b 35 97 1d 00 00 48 c7 c7 ca a0 1a a0 31 c0 e8 86 87 50 e1 eb 0f 48 8b 05 88 1d 00 00 <48> 8b 38 e8 58 55 fd e0 83 3d 71 1d 00 00 00 79 e8 48 8b 3d 70
Jul 5 13:35:52 test kernel: [ 290.724016] RSP <ffff8800180ade68>
Jul 5 13:35:52 test kernel: [ 290.724016] CR2: 0000000000000000
Jul 5 13:35:52 test kernel: [ 290.777684] ---[ end trace 65e338c3db344ba2 ]---