LINUX.ORG.RU

хм. уже спрашивалось?

память в пользовательском пространстве??


такой не бывает. можно выделить память
в контексте user-space процесса.

впрочем, вопрос сформулирован с такой
замечательной ясностью (как всегда),
я совсем не уверен, что я его понял.

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

Да уже спрашивалось, и ответ не нашёлся (

Вот например в file_ptr->f_op->read(struct file *file, char __user *buf, size_t count, loff_t *pos); Это функция чтения выводимых данных файлом /proc/kallsyms (для примера). Эта read(file, buf, count, pos); указывает на функцию специфичную для разных файловых систем. Она считывает выводимые файлом данные. Так вот, если в неё передать char __user *buf - указатель на буфер в user_space , то функция отработает, и вернёт заполненный буфер. А если в эту функцию передать char __user *my_ptr = kmalloc(4096, GFP_ATOMIC) То будет возвращён код ошибки -14 Мне надо выделить память для чтения данных из файла /proc/kallsyms из ядра.( таким образом. чтоб можно было подставить свой указатель на буфер в функцию read )

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

едва распарсил...

А если в эту функцию передать

char __user *my_ptr = kmalloc(4096, GFP_ATOMIC)


То будет возвращён код ошибки -14



ну это же очевидно. иначе зловредный пользователь
мог сделать read(..., ptr_to_kernel_memory) и
писать в память ядра.

set_fs() тебе поможет. подробнее специально не буду,
разберитесь хоть с чем-нибудь самостоятельно.

ну и да, конечно же читать /proc/kallsyms - это
глупо.

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

Не понятно, зачем ты хочешь читать из файла /proc/kallsyms в ядре? Из модуля ядра можно использовать функции kallsyms_lookup_name и kallsyms_on_each_symbol.

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

unsigned long kallsyms_lookup_name(const char *name)

Возвращает адрес абсолютно любых функций?

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

Я всёравно не догнал (

Если не сложно поясните как мне сделать то что требуется??

/* В модуле */

char __user *my_ptr = kmalloc(4096, GFP_ATOMIC)

// Что тут нужно сделать, чтоб my_ptr воспринялся функцией как данные из user_space

file_ptr->f_op->read(file, my_ptr, 4096, pos);

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

// Что тут нужно сделать, чтоб my_ptr воспринялся функцией как данные из user_space

Встать до зари, дерябнуть стакан, сунуть папиросину в зубы, натянуть ватник и калоши, взять метлу и идти работать. И никогда к компьютерам больше не подходить.

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

еще капля, и твой «антивирус» станет тут оффтопиком

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

из лично опыта рассказываешь?

Ну, в принципе, да. С позором выгнали, idle не даст соврать. Живу теперь хрен знает где, а работу даже работой назвать нельзя. Чё попало.

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

это ж ведь продолжение антивирусописания, не?

Corey
()

Чето по-моему, кому-то надо хотя бы чуточку попытаться врубиться в то, что такое модуль ядра, что такое ядро ос, что такое виртуальная память, что такое процесс и что такое операционная система вообще.

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

Вобщем можно считать что тема закрыта.

Задаёшь вопрос, несколько хороших ответов, а остальное....выслушиваешь какой ты *****

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

Задумался, и вижу только одно объяснение,каждому хочется в***** и показать какой он умный и крутой)

Чтож, желание вполне понятное, этого хотят все... Может даже и некоторые специалисты так делают.

Насчёт своих вопросов, я их ещё раз перечитал..и они чертовски точные, только ответы почти все дали...не в тему.

Только eXire и idle дали что-то значащие ответы.

Кстати, хотел отписать idle - вы были абсолютно правы, только в моём коде это не работало (... Сработало только после того, как я прошёлся по указателям функций дальше file_ptr->f_op->read(file, my_ptr, 4096, pos); ....указатель на функ, укахатель на функ... и в самом конце обработки, уже можно сделать что мне требовалось.

Deleted
()

Я вот смотрю и у меня создаётся впечатление, что большинство вопросов с тэгом [kernel] выглядят примерно так: «Как мне в kernel space [что-то-непонятно-зачем-нужное] из user space?»

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

Тынепонимешь, это же тру кулхацер вей.

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