Use /sys/module instead of /proc/modules.
authorEtienne Dechamps <etienne.dechamps@ovh.net>
Wed, 4 Jul 2012 13:56:40 +0000 (15:56 +0200)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 26 Jul 2012 20:45:33 +0000 (13:45 -0700)
commitf09398cec665259a4c2f96726680fbd3b0a3bac3
tree6d0a0ac214722eebcfb4675ce37d56e4b67f8877
parent2ee4a18b2ac9c155e099db06cec320bd8cee3150
Use /sys/module instead of /proc/modules.

When libzfs checks if the module is loaded or not, it currently reads
/proc/modules and searches for a line matching the module name.

Unfortunately, if the module is included in the kernel itself (built-in
module), then /proc/modules won't list it, so libzfs will wrongly conclude
that the module is not loaded, thus making all ZFS userspace tools unusable.

Fortunately, all loaded modules appear as directories in /sys/module, even
built-in ones. Thus we can use /sys/module in lieu of /proc/modules to fix
the issue.

As a bonus, the code for checking becomes much simpler.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #851
lib/libzfs/libzfs_util.c