svn commit: r338238 - in head/sbin/init: . rc.d
Warner Losh
imp at FreeBSD.org
Thu Aug 23 05:06:32 UTC 2018
Author: imp
Date: Thu Aug 23 05:06:27 2018
New Revision: 338238
URL: https://svnweb.freebsd.org/changeset/base/338238
Log:
Implement blacklisting for devmatch
devmatch_blacklist is a space separated list of modules (w/o the .ko
or full path) to exclude from devmatch's processing.
Differential Revision: https://reviews.freebsd.org/D16735
Modified:
head/sbin/init/rc.conf
head/sbin/init/rc.d/devmatch
Modified: head/sbin/init/rc.conf
==============================================================================
--- head/sbin/init/rc.conf Thu Aug 23 05:06:22 2018 (r338237)
+++ head/sbin/init/rc.conf Thu Aug 23 05:06:27 2018 (r338238)
@@ -42,6 +42,7 @@ ddb_config="/etc/ddb.conf" # ddb(8) config file.
devd_enable="YES" # Run devd, to trigger programs on device tree changes.
devd_flags="" # Additional flags for devd(8).
devmatch_enable="YES" # Demand load kernel modules based on device ids.
+devmatch_blacklist="" # List of modules (w/o .ko) to exclude from devmatch.
#kld_list="" # Kernel modules to load after local disks are mounted
kldxref_enable="YES" # Build linker.hints files with kldxref(8).
kldxref_clobber="NO" # Overwrite old linker.hints at boot.
Modified: head/sbin/init/rc.d/devmatch
==============================================================================
--- head/sbin/init/rc.d/devmatch Thu Aug 23 05:06:22 2018 (r338237)
+++ head/sbin/init/rc.d/devmatch Thu Aug 23 05:06:27 2018 (r338238)
@@ -41,15 +41,15 @@ one_nomatch="$2"
devmatch_start()
{
- local x
+ local x m list
if [ -n "$one_nomatch" ]; then
- x=$(devmatch -p "${one_nomatch}" | sort -u)
+ list=$(devmatch -p "${one_nomatch}" | sort -u)
else
- x=$(devmatch | sort -u)
+ list=$(devmatch | sort -u)
fi
- [ -n "$x" ] || return
+ [ -n "$list" ] || return
# While kldload can accept multiple modules
# on the line at once, we loop here in case
@@ -57,8 +57,14 @@ devmatch_start()
# We also optimize against the false positives
# or drivers that have symbolic links that
# confuse devmatch by running it -n.
+ # Finally, we filter out all items in the
+ # devmactch_blacklist.
devctl freeze
- for m in ${x}; do
+ x=$(echo ${devmatch_blacklist} | tr ' ' '#')
+ for m in ${list}; do
+ case "#${x}#" in
+ *"#${m}#"*) continue ;;
+ esac
echo "Autoloading module: ${m}"
kldload -n ${m}
done
More information about the svn-src-head
mailing list