Модуль ядра для 2.4.37 sock->ops->ioctl вызывает kernel_panic
Здравствуйте!
Такая проблема. Есть модуль ядра, в коде есть такой фрагмент:
old_fs = get_fs(); set_fs(KERNEL_DS); printk(KERN_ALERT «aaa»); sock->ops->ioctl( sock, cmd, arg ); printk(KERN_ALERT «bbb»); set_fs(old_fs);
Сам модуль работает, но работает неустойчиво, может поработать 5 мин и упасть, час, два часа, а может вообще не упасть. Проблема (еле ее нашел) в том, что sock->ops->ioctl вызывает kernel_panic с сообщением «Unable to handle kernel NULL pointer dereference at virtual address 00000000» («aaa» я вижу а «bbb» уже нет). Причем этот фрагмент вызывается постоянно, но ошибку выдает в какой-то недетерминированный момент. sock != NULL, sock->ops->ioctl != NULL, память под arg выделена через kmalloc, GFP_ATOMIC, сама структура на которую указывает arg содержит буфер (тоже kmalloc, GFP_ATOMIC) и длину буфера (там все ОК). Кто догадывается в чем может быть дело, подскажите пожалуйста.