From 748867d17723ac0e4d3884a9ff5d6e287428e378 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Wed, 31 Jul 2013 11:26:46 +0200 Subject: fips: cope with module aliases, when checking modules Also do not fail, if module aliases try to load CPU specific modules like crc32c_intel. --- modules.d/01fips/fips.sh | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/modules.d/01fips/fips.sh b/modules.d/01fips/fips.sh index f3cab31c..73a0c8b8 100755 --- a/modules.d/01fips/fips.sh +++ b/modules.d/01fips/fips.sh @@ -57,6 +57,11 @@ mount_boot() do_fips() { + local _v + local _s + local _v + local _module + KERNEL=$(uname -r) if ! [ -e "/boot/.vmlinuz-${KERNEL}.hmac" ]; then @@ -67,11 +72,25 @@ do_fips() FIPSMODULES=$(cat /etc/fipsmodules) info "Loading and integrity checking all crypto modules" - for module in $FIPSMODULES; do - if [ "$module" != "tcrypt" ]; then - modprobe ${module} + mv /etc/modprobe.d/fips.conf /etc/modprobe.d/fips.conf.bak + for _module in $FIPSMODULES; do + if [ "$_module" != "tcrypt" ]; then + if ! modprobe "${_module}"; then + # check if kernel provides generic algo + _found=0 + while read _k _s _v; do + [ "$_k" != "name" -a "$_k" != "driver" ] && continue + [ "$_k" = "driver" ] && _v=$(str_replace "$_v" "_" "-") + [ "$_v" != "$_module" ] && continue + _found=1 + break + done