LINUX.ORG.RU

64бит ядро 32бит юзерспейс обмен указателями

 , , ,


0

2

Сетап: 64 битное ядро 32 битный юзерспейс

Есть легаси приложение у которого есть кернел модули и есть ЮС часть. Юзерспейс обменивается с ядром и обратно указателями через нетлинк(да, это плохой дизайн). Естественно из-за изменения размеров указателя через некоторое время ядро падает на memcpy или другом дереференсе.

Перекомпилировать ЮС я не могу из-за бинарных библиотек.

Вопрос - как мне правильно кастовать указатели перед отправкой, чтобы не расплескать данные? Есть ли хороший пример что делать в такой ситуации?

Естественно из-за изменения размеров указателя через некоторое время ядро падает на memcpy или другом дереференсе.

ты точно понимаешь, что такое виртуальная адресация?

anonymous
()

обменивайся номерами

anonymous
()

От приложения приходит 32-хбитный указатель в ядро, но copy_from_user() не сделать, потому что приходит откуда-то «сбоку» через нетлинк? Как это вообще работало? Модули работают в контексте процесса?

tim239 ★★
()

Есть ли хороший пример что делать в такой ситуации?

32-битные аппликухи работают на 64-битных ядрах, в т.ч. обмениваются указателями через сисколы.

Значит есть.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.