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
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to