Может ли вызов __alloc_pages_slowpath() пережить прерывание устройства, которое также вызывает вызов __alloc_pages_slowpath(), или второй вызов испортит первый?
Я вижу программный вызов read(2) обычного файла в файловой системе XFS. Трассировка стека ядра показывает, что в конечном итоге вызывается __alloc_pages_slowpath(), затем происходит IRQ e1000e, который также в конечном итоге вызывает __alloc_pages_slowpath(), а затем почти сразу появляется сообщение журнала «fooprog: ошибка выделения страницы. порядок: 0, режим: 0x4020».
Всю трассировку стека можно увидеть здесь: https://gist.github.com/790577.