т. е. процедура open находится со смещением в 36 байт (в i386) от начала,
а у тебя там находится как раз процедура test_release, что и подтверждается
твоими показаниями.
может быть там ещё ошибки, у меня тут сейчас нет возможности компилировать.
Удачи.
> Сейчас я пытаюсь написать свой динамически подгружаемый модуль.
> Хочу, чтобы в конце концов он выполнял следующую задачу:
> в устройство /dev/testdata посылаем число (например echo "23" > /dev/testdata),
> а модуль то преобразовывает в слова и выводит на экран
> (e.g. twenty three). Для этого создал свое устройство:
> mknod /dev/testdata c 21 0
> chmod 0666 /dev/testdata
> Затем написал код модуля, который компилировал со следующими опциями:
> gcc -O2 -DMODULE -D__KERNEL__ -c hello.c
> В результате получил hello.o, который попытался вставить в ядро.
> Вот, что выводтся на экран:
> [root@xlrd truedrv]# insmod hello.o
> hello.c: init_module called
> init_module: Test Data Generator installed.
> init_module: Hello, world!
> [root@xlrd truedrv]# echo "hi" > /dev/testdata
> test_release
> Unable to handle kernel NULL pointer dereference at virtual address 00000021
> printing eip:
> Hиже привожу текст своего модуля. Кто уже сталкивался с написанием такого,
> подскажите, пожалуйста, что здесь некорректно. Может есть какие-то идеи,
> как что-то можно реализовать более рационально или что-то убрать/добавить.