Доброй ночи. Пишу модуль ядра.
В коде модуля подгружаю модуль zlib
В систему подгружается вместе с zlib также zlib_deflate
Далее смотрю, что имеем.
cat /proc/kallsyms | grep zlib
ffffffff811ca13c t zlib_adler32
ffffffff811ca289 T zlib_inflate_workspacesize
ffffffff811ca28f T zlib_inflateReset
ffffffff811ca331 T zlib_inflateInit2
ffffffff811ca384 T zlib_inflateEnd
ffffffff811ca398 t zlib_updatewindow
ffffffff811ca438 T zlib_inflateIncomp
ffffffff811ca4bb T zlib_inflate
ffffffff811cb2c4 T zlib_inflate_blob
ffffffff811cb380 T zlib_inflate_table
Далее внутри своего модуля вызываю функцию crypto_alloc_comp(«deflate», 0, CRYPTO_ALG_ASYNC);
И тут если ввести dmesg Увидим следующее.
[ 458.411621] deflate: Unknown symbol zlib_deflateEnd (err 0)
[ 458.411642] deflate: Unknown symbol zlib_deflate (err 0)
[ 458.411658] deflate: Unknown symbol zlib_deflateReset (err 0)
[ 458.411673] deflate: Unknown symbol zlib_deflate_workspacesize (err 0)
[ 458.411693] deflate: Unknown symbol zlib_deflateInit2 (err 0)
В исходниках ядра, объявление данных функций находится в файле linux-3.2.12/lib/zlib_deflate/deflate.c a их экспортирование производится в файле linux-3.2.12/lib/zlib_deflate/deflate_syms.c
Почему zlib_deflate загружается в системе, но данные функции не доступны? как это обойти?