dracut-functions: fixed instmods() return value
The FIPS installkernel() relies on the instmods() return value. So only return 0, if the module and its dependencies were actually installed correctly.master
parent
724b87a6f8
commit
0b440844bd
|
@ -667,8 +667,10 @@ check_module_dir() {
|
|||
install_kmod_with_fw() {
|
||||
local modname=${1##*/} fwdir found
|
||||
modname=${modname%.ko*}
|
||||
# no need to go further if the module is already installed
|
||||
[[ -e "${initdir}/lib/modules/$kernel/${1##*/lib/modules/$kernel/}" ]] && return 0
|
||||
inst_simple "$1" "/lib/modules/$kernel/${1##*/lib/modules/$kernel/}" || \
|
||||
return 0 # no need to go further if the module is already installed
|
||||
return $?
|
||||
for fw in $(modinfo -k $kernel -F firmware $1 2>/dev/null); do
|
||||
found=''
|
||||
for fwdir in $fw_dir; do
|
||||
|
@ -681,6 +683,7 @@ install_kmod_with_fw() {
|
|||
dinfo "Possible missing firmware \"${fw}\" for kernel module \"${mod}.ko\""
|
||||
fi
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
||||
# Do something with all the dependencies of a kernel module.
|
||||
|
@ -692,11 +695,14 @@ install_kmod_with_fw() {
|
|||
for_each_kmod_dep() {
|
||||
local func=$1 kmod=$2 cmd modpapth options
|
||||
shift 2
|
||||
modprobe "$@" --ignore-install --quiet --show-depends $kmod | \
|
||||
modprobe "$@" --ignore-install --show-depends $kmod 2>/dev/null | ( \
|
||||
local found=0;
|
||||
while read cmd modpath options; do
|
||||
[[ $cmd = insmod ]] || continue
|
||||
$func $modpath
|
||||
done
|
||||
$func ${modpath} || exit $?
|
||||
found=1
|
||||
done; [[ $found -eq 0 ]] && exit 1; exit 0;)
|
||||
return $?
|
||||
}
|
||||
|
||||
# filter kernel modules to install certain modules that meet specific
|
||||
|
@ -727,6 +733,7 @@ filter_kernel_modules () (
|
|||
instmods() {
|
||||
[[ $no_kernel = yes ]] && return
|
||||
local mod mpargs modpath modname cmd moddirname
|
||||
local ret=0
|
||||
while (($# > 0)); do
|
||||
mod=${1%.ko*}
|
||||
case $mod in
|
||||
|
@ -766,8 +773,10 @@ instmods() {
|
|||
# it may require
|
||||
for_each_kmod_dep install_kmod_with_fw $mod \
|
||||
--set-version $kernel ${moddirname}
|
||||
ret=$((ret+$?))
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
return $ret
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue