grep
раствор:
Образецinput.txt
:
sfsfds|sfsf|sfdsf|||
s@ds|fsfsf|fssfsdf|sfsdfdfs
sdfsdfsfs
afafafs sdfsfd dfsfsfs
var='^[[:alnum:]]+[[:alnum:]\|]*$'
grep -E "$var" input.txt
Выход:
sfsfds|sfsf|sfdsf|||
sdfsdfsfs
Учитывая сообщение, которое вы получаете:
[96963.055549] BUG: unable to handle kernel paging request at ffffffff81e00520
Я бы покопался в ваших функциях set_page_ro()
и set_page_rw()
.
Тем более, что в сообщении содержится адрес, указанный вами для таблицы системных вызовов (ffffffff81e00520 ).
Почему вы жестко запрограммировали его с таким значением? Могу поспорить, что ядро экспортирует макрос или extern void *
или что-то в этом роде, чтобы получить правильное значение...
ОТРЕДАКТИРОВАНО:Таким образом, адрес, полученный с помощью System.map работающего ядра, может быть хорошим. Но если вы посмотрите на этот код , процесс переключения страницы RW/RO выглядит иначе, чем вы делали...
Когда вы делаете:
if (pte->pte &~ _PAGE_RW) pte->pte |= _PAGE_RW;
Пример кода на github сделать:
set_pte_atomic(pte, pte_clear_flags(*pte, _PAGE_RW));