blob: 234a214aca38e22e0e6e87fb7167c3f319f46155 [file] [log] [blame]
#! /bin/sh
BITNESS=32
rm -rf tests/tmp/*
MODULE_DIR=tests/tmp/lib/modules/$MODTEST_UNAME
# Set up modules
mkdir -p $MODULE_DIR
ln tests/data/$BITNESS/normal/noexport_nodep-$BITNESS.ko $MODULE_DIR/a.ko
ln -s a.ko $MODULE_DIR/b.ko
ln -s a.ko $MODULE_DIR/c.ko
ln -s a.ko $MODULE_DIR/d.ko
ln -s a.ko $MODULE_DIR/e.ko
ln -s a.ko $MODULE_DIR/f.ko
# Set up dependencies
cat > $MODULE_DIR/modules.dep << EOF
/lib/modules/$MODTEST_UNAME/a.ko:
/lib/modules/$MODTEST_UNAME/b.ko:
/lib/modules/$MODTEST_UNAME/c.ko:
/lib/modules/$MODTEST_UNAME/d.ko:
/lib/modules/$MODTEST_UNAME/e.ko:
/lib/modules/$MODTEST_UNAME/f.ko:
EOF
# Test softdeps
mkdir -p tests/tmp/etc/modprobe.d
cat > tests/tmp/etc/modprobe.d/modprobe.conf << EOF
alias a_alias a
alias c_alias c
softdep c pre: a_alias b post: d e
softdep e post: f
softdep f pre: a
EOF
# Insert-test
R1=`modprobe -v c_alias 2>&1 | \
grep -v INIT_MODULE\: | \
sed -e "s/\/lib\/modules\/$MODTEST_UNAME\///g"`
R2=`echo $R1` # remove newlines
[ "$R2" = "insmod a.ko insmod b.ko insmod c.ko insmod d.ko insmod e.ko insmod a.ko insmod f.ko" ]
# Remove-test
R1=`modprobe -v -r c_alias 2>&1 | \
grep -v DELETE_MODULE\: | \
sed -e "s/\/lib\/modules\/$MODTEST_UNAME\///g"`
R2=`echo $R1` # remove newlines
[ "$R2" = "rmmod f.ko rmmod a.ko rmmod e.ko rmmod d.ko rmmod c.ko rmmod b.ko rmmod a.ko" ]
# Test loop detector
mkdir -p tests/tmp/etc/modprobe.d
cat > tests/tmp/etc/modprobe.d/modprobe.conf << EOF
alias a_alias a
softdep a pre: b
softdep b pre: a
EOF
R1=`modprobe -v a_alias 2>&1 | cat` # shell won't assign to R1 without no-op cat.
# This comparison will fail if MAX_RECURSION is odd. In that case: s/b/a/g
[ "$R1" = "FATAL: modprobe: softdep dependency loop encountered inserting b" ]