Здравствуйте, aik, Вы писали:
aik>Можешь, только памяти может не быть на месте (не выделена ещё или в свопе), и тогда будет page fault, который окей если это пользовательская память (тогда ядро вытащит страницу из свопа или наконец выделит память, и повторит чтение), или не окей, если это память самого ядра — тогда будет краш. Эти все put_user() — они чтоб ядро различало чья это память. Можно попробовать перед чтением вызвать get_user_pages_fast() (а потом не забыть put_page()).
put_user() — это такой специальный memcpy, у которого адрес начала и конца кода лежит в специальной отдельной секции. И если происходит исключение, связанное с обращением к памяти, ядро проверяет, часом не из put_user() ли оно прилетело. И если оттуда, относится к нему особым образом.