Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 31 May 2004 17:45:00 +0000 (UTC)
From:      "Bjoern A. Zeeb" <bzeeb-lists@lists.zabbadoz.net>
To:        FreeBSD amd64 mailing list <freebsd-amd64@freebsd.org>
Subject:   crash: sysctls in dependend modules crash machine
Message-ID:  <Pine.BSF.4.53.0405311731470.22988@e0-0.zab2.int.zabbadoz.net>

next in thread | raw e-mail | index | archive | help
Hi,

let's say module a defines a new sysctl node (SYSCTL_DECL
in shared header file):

--- cut a.c ---
SYSCTL_NODE (, OID_AUTO, testsysctl, CTLFLAG_RW, 0, "Test kld dependend sysctls");
SYSCTL_NODE(_testsysctl, OID_AUTO, modulea, CTLFLAG_RW, 0, "module a");
int     a = 1;
SYSCTL_INT(_testsysctl_modulea, OID_AUTO, a, CTLFLAG_RW, &a, 0, "a");
--- / a.c ---


and module b depends on module a and adds following:

--- cut b.c ---
SYSCTL_NODE(_testsysctl, OID_AUTO, moduleb, CTLFLAG_RW, 0, "module b");
int     b = 1;
SYSCTL_INT(_testsysctl_moduleb, OID_AUTO, b, CTLFLAG_RW, &b, 0, "b");
--- / b.c ---


loading module a will work:

noc# kldload -v ./test_sysctl_base.ko
test_sysctl_base KLD loaded.
Loaded ./test_sysctl_base.ko, id=4
noc# kldstat
Id Refs Address            Size     Name
 1    2 0xffffffff80100000 830ad8   kernel
 4    1 0xffffffff98d76000 2c7      test_sysctl_base.ko


BUT:

loading module b will crash the machine:

noc# cd ../b/
noc# kldload -v ./test_sysctl_b.ko

(handwritten bt):

sysctl_find_oidname+0x14
sysctl_register_oid+0x19
linker_file_register_sysctls+0x3c
linker_load_file+0xe7
linker_load_module+0xd8
kldload+0xf3
sysctl+0x358
...


To reproduce you can find two quickly hacked up sample modules at
http://sources.zabbadoz.net/freebsd/amd64/amd64-modules-sysctl.tbz

tar xjvf amd64-modules-sysctl.tbz
cd amd64-modules-sysctl/a
make
su
kldload -v ./test_sysctl_base.ko
exit
kldstat
cd ../b
make
su
echo "be sure to mount your partitions ro now; I will crash"
mount -u -o ro ... /usr /
kldload -v ./test_sysctl_b.ko

-- 
Bjoern A. Zeeb				bzeeb at Zabbadoz dot NeT



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.53.0405311731470.22988>