LINUX.ORG.RU

Сообщения yura_lvk

 

Модуль ядра для 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) и длину буфера (там все ОК). Кто догадывается в чем может быть дело, подскажите пожалуйста.

yura_lvk
()

Модуль ядра 2.4.хх. Ядро работает на arm926ejs. Проблема с функцией set_fs()

Коллеги, помогите решить следующую проблему. Есть старое ядро 2.4.хх, есть железяка работающая на arm926ejs под управлением этого ядра. Пишу модуль ядра для этой железяки, в коде модуля есть такие строчки:

.................... 1. old_fs = get_fs(); 2. set_fs(KERNEL_DS); 3. sock->ops->ioctl(...); // запрос к драйверу железяки 4. set_fs(old_fs); .................... Ошибка (даже не могу ее описать, т.к. железка «умирает» молча, ни kernel_panic, ни error какой-то, ничего...) ТОЧНО происходит либо в строке 1, либо 2. По-моему, скорее - 2. Я понимаю, что функция set_fs устанавливает значение лимита для ядра в регистр DS (это на х86), я понимаю, что в ARM'e никаких сегментных регистров нет. Но только дальше то что?! Коллеги, если кто сталкивался с подобным, или есть здравые мысли как это победить, посоветуйте пожалуйста.

yura_lvk
()

Модуль ядра 2.4.хх. Ядро работает на arm926ejs. Проблема с функцией set_fs()

Доброго всем времении суток!

Коллеги, помогите решить следующую проблему. Есть старое ядро 2.4.хх, есть железяка работающая на arm926ejs под управлением этого ядра. Пишу модуль ядра для этой железяки, в коде модуля есть такие строчки:

.................... 1. old_fs = get_fs(); 2. set_fs(KERNEL_DS); 3. sock->ops->ioctl(...); // запрос к драйверу железяки 4. set_fs(old_fs); .................... Ошибка (даже не могу ее описать, т.к. железка «умирает» молча, ни kernel_panic, ни error какой-то, ничего...) ТОЧНО происходит либо в строке 1, либо 2. По-моему, скорее - 2. Я понимаю, что функция set_fs устанавливает значение лимита для ядра в регистр DS (это на х86), я понимаю, что в ARM'e никаких сегментных регистров нет. Но только дальше то что?! Коллеги, если кто сталкивался с подобным, или есть здравые мысли как это победить, посоветуйте пожалуйста.

yura_lvk
()

Передача данных между пользовательским приложением и модулем ядра

Товарищи, посоветуйте как лучше реализовать передачу данных между модулем ядра и пользовательским приложением. Смысл задачи такой: модуль передает команду процессу(демону), демон получает данные и возвращает их модулю ядра. Основное требование - быстродействие (объемы данных очень маленькие - макс. сотни байт). Сделал на сокетах - плохо, проблемы с блокированием, select порождает задержки и т.д. Одним словом, как быстрее и проще? Буду очень признателен за ссылки и примеры.

yura_lvk
()

Вызов библиотечной функции из модуля ядра

Есть встроенная система на линуксе (ядро 2.4.2х). Есть модуль ядра (самописный), который удалось в эту систему внедрить. Система в своих динамических библиотеках имеет функцию, которая выполняет некоторые действия (параметры для функции я знаю). Вопрос: как я могу из модуля ядра вызвать эту функцию, причем результат работы она должна мне вернуть обратно в модуль. У кого есть идеи (желательно проверенные :-)) помогите пожалуйста.

yura_lvk
()

Как программно пройти прокси, если на ней стоит squid(login и password есть)?

В Инет выхожу через прокси, на ней стоит squid, login и password есть.
Делаю программку работающую с Инетом(на сокетах, естественно), при попытке connect(...) к какому-нибудь адресу(сайту) естественно ни фига не выходит. Вопрос: как это дело пройти?
Может login и password нужно предварительно послать проксе? Если это так то в каком формате(что-то слышал про base64, но толком про него ни фига не знаю)?
Одним словом как пройти эту чёртову проксю?
Кто знает помогите, очень прошу!!!

P.S. Если пришлете кусочек кода или ссылочку с такой программкой, я ваш должник!

yura_lvk
()

RSS подписка на новые темы