LINUX.ORG.RU

Ответ на: комментарий от anonymous

Не понял что вы имеете ввиду. Мне нужно просто выделить память , так чтоб можно было к ней обращаться через copy_from_user

Deleted
()
Ответ на: комментарий от tailgunner

Задача ВЕРНА, мне нужно выделить память из моего модуля!! так, чтоб она была в пользовательском пространстве!!!..так, чтоб когда ядро применяет к этой памяти эту функцию copy_from_user .......... ядро могло прочесть то что там записано!!!... задача АБСОЛЮТНО ВЕРНА!!

Deleted
()
Ответ на: комментарий от tailgunner

>Тебе это не нужно.

Сходу могу нарисовать ситуацию - в юзерспейс понадобилось выделить несегментированную физически память, например чтобы ее можно было впоследствии быстро копировать при помощи дма - как это сделать ?

anonymous
()
Ответ на: комментарий от Deleted

>тоесть, kmalloc(100, GFP_USER) ?

Я неправ, это не работает

AptGet ★★★
()
Ответ на: комментарий от Deleted

>Задача ВЕРНА, мне нужно выделить память из моего модуля!!

А что в юзерспейсе никак нельзя выделить? В крайнем случае сделать в два захода. Узнать размер, а потом выделить в юзерспейсе.

pathfinder ★★★★
()
Ответ на: комментарий от anonymous

> Сходу могу нарисовать ситуацию - в юзерспейс понадобилось выделить несегментированную физически память, например чтобы ее можно было впоследствии быстро копировать при помощи дма - как это сделать ?

Нужно найти железку с поддержкой scatter/gather.

А в топике поставлена другая задача.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Просто пытаюсь разобраться в защите системы.

Deleted
()
Ответ на: комментарий от Deleted

>Можешь пример кинуть? как это сделать?

Ээээ.... Сейчас думаю. Может тебе другое надо? Ты хочешь из kernel-space вызвать код, который предполагает что его могут вызвать только из user-space. Т.е. с переданными ему параметрами он совершает copy_from_user. Тогда это делается по-другому.

pathfinder ★★★★
()
Ответ на: комментарий от tailgunner

>Нужно найти железку с поддержкой scatter/gather.

Не нужно думать что мир ограничен только х86 - есть архитектуры где применяется дма типа память-память.

anonymous
()
Ответ на: комментарий от pathfinder

Нет. Я сейчас ставлю перехватчик на некую функцию ядра. А она оперирует с массивом структур, которые создаются в пользовательском пространстве (у меня есть указатель на них, и если я по этому адресу изменю данные структур, то они дальше корректно обработаются перехватываемой функцией). Но ситуация в том, что я должен сам создать новый массив структур (в функции перехватчике). И далее затереть(или освободить память, я сам ещё не знаю) оригинальные массивы структур, память для которых, была выделена в пользовательском пространстве. Проблема в том, что при создании своих структур, я выделяю память через kmalloc и она выделяется в ...ну вы знаете. А перехватываемая функция, в своём коде копирует оригинальный массив структур из пользовательского пространства в пространство ядра через copy_from_user . Потому мне и нужно, выделить свой массив в пользовательском пространстве, чтоб в дальнейшем, просто изменить указатель на данные в перехватываемой функции..чтоб в конечном итоге, корректно отработал copy_from_user

Deleted
()
Ответ на: комментарий от anonymous

>> Нужно найти железку с поддержкой scatter/gather.

Не нужно думать что мир ограничен только х86

Не надо приписывать другим придуманных мыслей.

- есть архитектуры где применяется дма типа память-память.

И там нет s/g?

Впрочем, ты не можешь выделить в непрерывный физический блок из userspace без своего кода в ядре.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

>> - есть архитектуры где применяется дма типа память-память.

И там нет s/g?

На каких-то может и есть, с которыми встречался - у них не было, хотя были такие навороты типа копирование прямоугольных областей и шифрование/дешифрование на лету при копировании так что убогим х86 такое и не снилось :)

anonymous
()
Ответ на: комментарий от anonymous

>>> - есть архитектуры где применяется дма типа память-память.

И там нет s/g?

На каких-то может и есть, с которыми встречался - у них не было

И они использовались в системах с VM? Какая бесполезная игрушка.

убогим х86 такое и не снилось :)

На убогих x86 тоже есть DMA engines для копирования памяти. Хотя и непонятно, причем тут ISA.

tailgunner ★★★★★
()
Ответ на: комментарий от Deleted

>Нет. Я сейчас ставлю перехватчик на некую функцию ... И далее затереть(или освободить память, я сам ещё не знаю) оригинальные массивы ...чтоб в конечном итоге, корректно отработал copy_from_user

из потока сознания, ясно что где-то в проекте вы серьёзно ошиблись, причём боюсь,что в кадровом вопросе.

MKuznetsov ★★★★★
()
Ответ на: комментарий от tailgunner

>И они использовались в системах с VM? Какая бесполезная игрушка.

Я наврал - есть там scatter/gather :) Блин спасибо что пнул а то я бы наверно и не зашевелился даташит поворошить.

anonymous
()
Ответ на: комментарий от MKuznetsov

Глупышка....нечего сказать по делу. МОЛЧИ!

Deleted
()
Ответ на: комментарий от ftor

Или вопрос от сказочной личности, или да, троллят.

Все-таки нифига не ясно, почему ядро должно выделять в user-space память. Это кагбе должен делать user-space.

Pavval ★★★★★
()
Ответ на: комментарий от Deleted

>И далее затереть(или освободить память, я сам ещё не знаю) оригинальные массивы структур, память для которых, была выделена в пользовательском пространстве
ага. получишь гарантированный segfault.
ну, умник, блин...

для тебя видимо будет сюпризом, но ядро не занимается управлением выделенной памяти. говоря проще: malloc - не системный вызов.
так что твоя гипергениальная идея провальная (если, конечно, ты не перетащишь в свой модуль весь malloc)

xydo ★★
()
Ответ на: комментарий от xydo

А зачем sys_brk? Чем sys_mmap не устраивает?

anonymous
()
Ответ на: комментарий от Deleted

Ладно вопрос закрыт. СДЕЛАЛ САМ.

Расскажи как сделал, вдруг ещё кому-нибудь пригодится.

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