[fix] for NOT loading modules if driver is compiled-in and active.

Bernhard Kaindl (bk@suse.de)
Fri, 12 Mar 1999 09:12:08 +0100 (MET)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

--672768-947925046-921225110=:3467
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.LNX.4.05.9903120853421.3467@Bari.suse.de>

Hi,

many drivers can't refuse to load as module just in case they are already
compiled-in and running in the kernel. So the loading and unloading
causes trouble, in this case. End result can be a hard kernel oops.

For example, serial.o has this problem, so if you boot a 2.2.3 with
compiled-in serial.o, load the module (accidentally), and unload it.
Then do a setserial on the devices and you get a pretty hard oops.

The attached patch for 2.2.3 can be used as an example how this could
be prevented.

Interested developers should take a look at it and continue development.
It also creates an nice /proc/feature if a driver is registered:

Name: serial, Version:4.27, Type:tty, Info:Serial driver

A broad use of this in a better format could be useful for supporters.

Bernhard

--672768-947925046-921225110=:3467
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="feature-0.4.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.05.9903120851500.3467@Bari.suse.de>
Content-Description: feature-0.4.diff
Content-Disposition: ATTACHMENT; FILENAME="feature-0.4.diff"

ZGlmZiAtck51IHZhbmlsbGFzLzIyM2FjMS9kcml2ZXJzL2NoYXIvTWFrZWZp
bGUgZmVhdDIyM2FjMS9kcml2ZXJzL2NoYXIvTWFrZWZpbGUNCi0tLSB2YW5p
bGxhcy8yMjNhYzEvZHJpdmVycy9jaGFyL01ha2VmaWxlCUZyaSBNYXIgMTIg
MDE6NTQ6MTQgMTk5OQ0KKysrIGZlYXQyMjNhYzEvZHJpdmVycy9jaGFyL01h
a2VmaWxlCUZyaSBNYXIgMTIgMDc6NTc6NDYgMTk5OQ0KQEAgLTIxLDcgKzIx
LDcgQEANCiBMX1RBUkdFVCA6PSBjaGFyLmENCiBNX09CSlMgICA6PQ0KIExf
T0JKUyAgIDo9IHR0eV9pby5vIG5fdHR5Lm8gdHR5X2lvY3RsLm8gbWVtLm8g
cmFuZG9tLm8NCi1MWF9PQkpTICA6PSBwdHkubyBtaXNjLm8NCitMWF9PQkpT
ICA6PSBwdHkubyBtaXNjLm8gZmVhdHVyZS5vDQogDQogaWZkZWYgQ09ORklH
X1ZUDQogTF9PQkpTICs9IHZ0Lm8gdmNfc2NyZWVuLm8gY29uc29sZW1hcC5v
IGNvbnNvbGVtYXBfZGVmdGJsLm8NCmRpZmYgLXJOdSB2YW5pbGxhcy8yMjNh
YzEvZHJpdmVycy9jaGFyL2ZlYXR1cmUuYyBmZWF0MjIzYWMxL2RyaXZlcnMv
Y2hhci9mZWF0dXJlLmMNCi0tLSB2YW5pbGxhcy8yMjNhYzEvZHJpdmVycy9j
aGFyL2ZlYXR1cmUuYwlUaHUgSmFuICAxIDAxOjAwOjAwIDE5NzANCisrKyBm
ZWF0MjIzYWMxL2RyaXZlcnMvY2hhci9mZWF0dXJlLmMJRnJpIE1hciAxMiAw
Nzo1Nzo0NiAxOTk5DQpAQCAtMCwwICsxLDE1MSBAQA0KKy8qDQorICogbGlu
dXgvZHJpdmVycy9jaGFyL2ZlYXR1cmUuYw0KKyAqDQorICogR2VuZXJpYyBm
ZWF0dXJlIHJlZ2lzdGVyIHJvdXRpbmUgYnkgQmVybmhhcmQgS2FpbmRsDQor
ICoNCisgKiBCYXNlZCBvbiBjb2RlIGZyb20gTGludXMgYW5kIEpvaGFuIE15
cmVlbiAobWlzYy5jKQ0KKyAqDQorICovDQorDQorI2luY2x1ZGUgPGxpbnV4
L21vZHVsZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4NCisNCisj
aW5jbHVkZSA8bGludXgvZnMuaD4NCisjaW5jbHVkZSA8bGludXgvZXJybm8u
aD4NCisjaW5jbHVkZSA8bGludXgvZmVhdHVyZS5oPg0KKyNpbmNsdWRlIDxs
aW51eC9rZXJuZWwuaD4NCisjaW5jbHVkZSA8bGludXgvbWFqb3IuaD4NCisj
aW5jbHVkZSA8bGludXgvbWFsbG9jLmg+DQorI2luY2x1ZGUgPGxpbnV4L3By
b2NfZnMuaD4NCisjaW5jbHVkZSA8bGludXgvc3RhdC5oPg0KKyNpbmNsdWRl
IDxsaW51eC9pbml0Lmg+DQorDQorI2luY2x1ZGUgPGxpbnV4L3R0eS5oPg0K
KyNpbmNsdWRlIDxsaW51eC9zZWxlY3Rpb24uaD4NCisjaW5jbHVkZSA8bGlu
dXgva21vZC5oPg0KKw0KKy8qDQorICogSGVhZCBlbnRyeSBmb3IgdGhlIGRv
dWJseSBsaW5rZWQgZmVhdHVyZWRldmljZSBsaXN0DQorICovDQorc3RhdGlj
IHN0cnVjdCBmZWF0dXJlIGZlYXR1cmVfbGlzdCA9IHsgImhlYWQxIiwgImhl
YWQiLCBOVUxMLCBOVUxMLCAmZmVhdHVyZV9saXN0LCAmZmVhdHVyZV9saXN0
IH07DQorDQorc3RhdGljIGludCBmZWF0dXJlX3JlYWRfcHJvYyhjaGFyICpi
dWYsIGNoYXIgKipzdGFydCwgb2ZmX3Qgb2Zmc2V0LA0KKwkJCSAgaW50IGxl
biwgaW50ICplb2YsIHZvaWQgKnByaXZhdGUpDQorew0KKwlzdHJ1Y3QgZmVh
dHVyZSAqcDsNCisNCisJbGVuPTA7DQorCWZvciAocCA9IGZlYXR1cmVfbGlz
dC5uZXh0OyBwICE9ICZmZWF0dXJlX2xpc3QgJiYgbGVuIDwgNDAwMDsgcCA9
IHAtPm5leHQpDQorCQlsZW4gKz0gc3ByaW50ZihidWYrbGVuLCAiTmFtZTog
JXMsIFZlcnNpb246JXMsIFR5cGU6JXMsIEluZm86JXNcbiIsDQorCQkJCQlw
LT5uYW1lID86ICIiLA0KKwkJCQkJcC0+dmVyc2lvbiA/OiAiIiwNCisJCQkJ
CXAtPnR5cGUgPzogIiIsDQorCQkJCQlwLT5pbmZvID86ICIiDQorCQkpOw0K
Kwkqc3RhcnQgPSBidWYgKyBvZmZzZXQ7DQorCXJldHVybiBsZW4gPiBvZmZz
ZXQgPyBsZW4gLSBvZmZzZXQgOiAwOw0KK30NCisNCitzdGF0aWMgaW50IGZp
bmRfZmVhdHVyZShjb25zdCBjaGFyICogbmFtZSkNCit7DQorCXN0cnVjdCBm
ZWF0dXJlICpwOw0KKwlpbnQgbGVuOw0KKw0KKwlsZW49MDsNCisJZm9yIChw
ID0gZmVhdHVyZV9saXN0Lm5leHQ7IHAgIT0gJmZlYXR1cmVfbGlzdCAmJiBs
ZW4gPCA0MDAwOyBwID0gcC0+bmV4dCkgew0KKy8qDQorCQlwcmludGsoS0VS
Tl9JTkZPICJOYW1lOiAlcywgVmVyc2lvbjolcywgVHlwZTolcywgSW5mbzol
c1xuIiwNCisJCQkJCXAtPm5hbWUgPzogIiIsDQorCQkJCQlwLT52ZXJzaW9u
ID86ICIiLA0KKwkJCQkJcC0+dHlwZSA/OiAiIiwNCisJCQkJCXAtPmluZm8g
PzogIiINCisJCSk7DQorKi8NCisJCWlmIChzdHJjbXAobmFtZSwgcC0+bmFt
ZSkgPT0gMCkgew0KKwkJCXJldHVybiAxOw0KKwkJfQ0KKwl9DQorCXJldHVy
biAwOw0KK30NCisNCisNCisvKiBJbnRlcnJlc3NhbnQ6IChrbW9kLVN1cHBv
cnQpDQorc3RhdGljIGludCBmZWF0dXJlX29wZW4oc3RydWN0IGlub2RlICog
aW5vZGUsIHN0cnVjdCBmaWxlICogZmlsZSkNCit7DQorCWludCBtaW5vciA9
IE1JTk9SKGlub2RlLT5pX3JkZXYpOw0KKwlzdHJ1Y3QgZmVhdHVyZSAqYyA9
IGZlYXR1cmVfbGlzdC5uZXh0Ow0KKwlmaWxlLT5mX29wID0gTlVMTDsNCisN
CisJd2hpbGUgKChjICE9ICZmZWF0dXJlX2xpc3QpICYmIChjLT5taW5vciAh
PSBtaW5vcikpDQorCQljID0gYy0+bmV4dDsNCisJaWYgKGMgPT0gJmZlYXR1
cmVfbGlzdCkgew0KKwkJY2hhciBtb2RuYW1lWzIwXTsNCisJCXNwcmludGYo
bW9kbmFtZSwgImNoYXItbWFqb3ItJWQtJWQiLCBNSVNDX01BSk9SLCBtaW5v
cik7DQorCQlyZXF1ZXN0X21vZHVsZShtb2RuYW1lKTsNCisJCWMgPSBmZWF0
dXJlX2xpc3QubmV4dDsNCisJCXdoaWxlICgoYyAhPSAmZmVhdHVyZV9saXN0
KSAmJiAoYy0+bWlub3IgIT0gbWlub3IpKQ0KKwkJCWMgPSBjLT5uZXh0Ow0K
KwkJaWYgKGMgPT0gJmZlYXR1cmVfbGlzdCkNCisJCQlyZXR1cm4gLUVOT0RF
VjsNCisJfQ0KKw0KKwlpZiAoKGZpbGUtPmZfb3AgPSBjLT5mb3BzKSAmJiBm
aWxlLT5mX29wLT5vcGVuKQ0KKwkJcmV0dXJuIGZpbGUtPmZfb3AtPm9wZW4o
aW5vZGUsZmlsZSk7DQorCWVsc2UNCisJCXJldHVybiAtRU5PREVWOw0KK30N
CisqLw0KKw0KK2ludCByZWdpc3Rlcl9mZWF0dXJlKHN0cnVjdCBmZWF0dXJl
ICogZmVhdHVyZSkNCit7DQorCWlmIChmZWF0dXJlLT5uZXh0IHx8IGZlYXR1
cmUtPnByZXYpDQorCQlyZXR1cm4gLUVCVVNZOw0KKw0KKwlpZiAoZmluZF9m
ZWF0dXJlKGZlYXR1cmUtPm5hbWUpKSB7DQorCQlwcmludGsoS0VSTl9JTkZP
ICJmZWF0dXJlIFwiJXNcIiBpcyBhbHJlYWR5IHByZXNlbnQhXG4iLCBmZWF0
dXJlLT5uYW1lKTsNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQorCS8qDQor
CSAqIEFkZCBpdCB0byB0aGUgZnJvbnQsIHNvIHRoYXQgbGF0ZXIgZmVhdHVy
ZXMgY2FuICJvdmVycmlkZSINCisJICogZWFybGllciBkZWZhdWx0cw0KKwkg
Ki8NCisJZmVhdHVyZS0+cHJldiA9ICZmZWF0dXJlX2xpc3Q7DQorCWZlYXR1
cmUtPm5leHQgPSBmZWF0dXJlX2xpc3QubmV4dDsNCisJZmVhdHVyZS0+cHJl
di0+bmV4dCA9IGZlYXR1cmU7DQorCWZlYXR1cmUtPm5leHQtPnByZXYgPSBm
ZWF0dXJlOw0KKy8qDQorCXByaW50ayhLRVJOX0lORk8gIlJlZ2lzdGVyZWQg
ZmVhdHVyZTpcbk5hbWU6ICVzLCBWZXJzaW9uOiVzLCBUeXBlOiVzLCBJbmZv
OiVzXG4iLA0KKwkJCQlmZWF0dXJlLT5uYW1lID86ICIiLA0KKwkJCQlmZWF0
dXJlLT52ZXJzaW9uID86ICIiLA0KKwkJCQlmZWF0dXJlLT50eXBlID86ICIi
LA0KKwkJCQlmZWF0dXJlLT5pbmZvID86ICIiDQorCSk7DQorKi8NCisJcmV0
dXJuIDA7DQorfQ0KKw0KK2ludCBkZXJlZ2lzdGVyX2ZlYXR1cmUoc3RydWN0
IGZlYXR1cmUgKiBmZWF0dXJlKQ0KK3sNCisJaWYgKCFmZWF0dXJlLT5uZXh0
IHx8ICFmZWF0dXJlLT5wcmV2KQ0KKwkJcmV0dXJuIC1FSU5WQUw7DQorCWZl
YXR1cmUtPnByZXYtPm5leHQgPSBmZWF0dXJlLT5uZXh0Ow0KKwlmZWF0dXJl
LT5uZXh0LT5wcmV2ID0gZmVhdHVyZS0+cHJldjsNCisJZmVhdHVyZS0+bmV4
dCA9IE5VTEw7DQorCWZlYXR1cmUtPnByZXYgPSBOVUxMOw0KKwlyZXR1cm4g
MDsNCit9DQorDQorRVhQT1JUX1NZTUJPTChyZWdpc3Rlcl9mZWF0dXJlKTsN
CitFWFBPUlRfU1lNQk9MKGRlcmVnaXN0ZXJfZmVhdHVyZSk7DQorDQorc3Rh
dGljIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY19mZWF0dXJlOwkNCisN
Cit2b2lkIF9faW5pdCBmZWF0dXJlX2luaXQodm9pZCkNCit7DQorLyoNCisJ
cHJpbnRrKCJmZWF0dXJlIHJlZ2lzdHJhdGlvbiB2MC4yIGJ5IEJlcm5oYXJk
IEthaW5kbFxuIik7DQorKi8NCisJcHJvY19mZWF0dXJlID0gY3JlYXRlX3By
b2NfZW50cnkoImZlYXR1cmUiLCAwLCAwKTsNCisJaWYgKHByb2NfZmVhdHVy
ZSkNCisJCXByb2NfZmVhdHVyZS0+cmVhZF9wcm9jID0gZmVhdHVyZV9yZWFk
X3Byb2M7DQorfQ0KZGlmZiAtck51IHZhbmlsbGFzLzIyM2FjMS9kcml2ZXJz
L2NoYXIvc2VyaWFsLmMgZmVhdDIyM2FjMS9kcml2ZXJzL2NoYXIvc2VyaWFs
LmMNCi0tLSB2YW5pbGxhcy8yMjNhYzEvZHJpdmVycy9jaGFyL3NlcmlhbC5j
CVRodSBKYW4gMTQgMTk6Mjc6NTMgMTk5OQ0KKysrIGZlYXQyMjNhYzEvZHJp
dmVycy9jaGFyL3NlcmlhbC5jCUZyaSBNYXIgMTIgMDc6NTk6NTggMTk5OQ0K
QEAgLTExOSw2ICsxMTksNyBAQA0KICAqLw0KIA0KICNpbmNsdWRlIDxsaW51
eC9jb25maWcuaD4NCisjaW5jbHVkZSA8bGludXgvZmVhdHVyZS5oPg0KICNp
bmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCiAjaW5jbHVkZSA8bGludXgvZXJy
bm8uaD4NCiAjaW5jbHVkZSA8bGludXgvc2lnbmFsLmg+DQpAQCAtMzA2Nyw2
ICszMDY4LDIwIEBADQogRVhQT1JUX1NZTUJPTChyZWdpc3Rlcl9zZXJpYWwp
Ow0KIEVYUE9SVF9TWU1CT0wodW5yZWdpc3Rlcl9zZXJpYWwpOw0KIA0KK3N0
YXRpYyBzdHJ1Y3QgZmVhdHVyZSBmZWF0dXJlX2RlZmluaXRpb24gPQ0KK3sN
CisJInNlcmlhbCIsDQorCSI0LjI3IiwNCisvKg0KKwlzZXJpYWxfdmVyc2lv
biwNCisqLw0KKwkidHR5IiwNCisJIlNlcmlhbCBkcml2ZXIiDQorLyoNCisg
CXNlcmlhbF9uYW1lDQorKi8NCit9Ow0KKw0KIC8qDQogICogVGhlIHNlcmlh
bCBkcml2ZXIgYm9vdC10aW1lIGluaXRpYWxpemF0aW9uIGNvZGUhDQogICov
DQpAQCAtMzA3Nyw2ICszMDkyLDE0IEBADQogCWV4dGVybiB2b2lkIGF0b213
aWRlX3NlcmlhbF9pbml0ICh2b2lkKTsNCiAJZXh0ZXJuIHZvaWQgZHVhbHNw
X3NlcmlhbF9pbml0ICh2b2lkKTsNCiANCisvKg0KKwlwcmludGsoS0VSTl9J
TkZPICJzZXJpYWwubzogQ2FsbGluZyBmZWF0dXJlIHJlZ2lzdHJhdGlvbiIp
Ow0KKyovDQorCWlmICgoaSA9IHJlZ2lzdGVyX2ZlYXR1cmUoJmZlYXR1cmVf
ZGVmaW5pdGlvbikpICE9IDApIHsNCisJCXByaW50ayhLRVJOX0lORk8gInNl
cmlhbC5vOiBQcm9ibGVtIGR1cmluZyBmZWF0dXJlIHJlZ2lzdHJhdGlvblxu
Iik7DQorCQlyZXR1cm4gaTsNCisJfQ0KKw0KICNpZmRlZiBDT05GSUdfQVRP
TVdJREVfU0VSSUFMDQogCWF0b213aWRlX3NlcmlhbF9pbml0ICgpOw0KICNl
bmRpZg0KQEAgLTMzMDksNiArMzMzMiw3IEBADQogCQlmcmVlX3BhZ2UoKHVu
c2lnbmVkIGxvbmcpIHRtcF9idWYpOw0KIAkJdG1wX2J1ZiA9IE5VTEw7DQog
CX0NCisJZGVyZWdpc3Rlcl9mZWF0dXJlKCZmZWF0dXJlX2RlZmluaXRpb24p
Ow0KIH0NCiAjZW5kaWYgLyogTU9EVUxFICovDQogDQpkaWZmIC1yTnUgdmFu
aWxsYXMvMjIzYWMxL2luY2x1ZGUvbGludXgvZmVhdHVyZS5oIGZlYXQyMjNh
YzEvaW5jbHVkZS9saW51eC9mZWF0dXJlLmgNCi0tLSB2YW5pbGxhcy8yMjNh
YzEvaW5jbHVkZS9saW51eC9mZWF0dXJlLmgJVGh1IEphbiAgMSAwMTowMDow
MCAxOTcwDQorKysgZmVhdDIyM2FjMS9pbmNsdWRlL2xpbnV4L2ZlYXR1cmUu
aAlGcmkgTWFyIDEyIDA3OjU3OjQ2IDE5OTkNCkBAIC0wLDAgKzEsMTggQEAN
CisjaWZuZGVmIF9MSU5VWF9GRUFUVVJFX0gNCisjZGVmaW5lIF9MSU5VWF9G
RUFUVVJFX0gNCisNCitleHRlcm4gdm9pZCBmZWF0dXJlX2luaXQodm9pZCk7
DQorDQorc3RydWN0IGZlYXR1cmUgDQorew0KKwljb25zdCBjaGFyICpuYW1l
Ow0KKwljb25zdCBjaGFyICp2ZXJzaW9uOw0KKwljb25zdCBjaGFyICp0eXBl
Ow0KKwljb25zdCBjaGFyICppbmZvOw0KKwlzdHJ1Y3QgZmVhdHVyZSAqIG5l
eHQsICogcHJldjsNCit9Ow0KKw0KK2V4dGVybiBpbnQgcmVnaXN0ZXJfZmVh
dHVyZShzdHJ1Y3QgZmVhdHVyZSAqIGZlYXR1cmUpOw0KK2V4dGVybiBpbnQg
ZGVyZWdpc3Rlcl9mZWF0dXJlKHN0cnVjdCBmZWF0dXJlICogZmVhdHVyZSk7
DQorDQorI2VuZGlmDQpkaWZmIC1yTnUgdmFuaWxsYXMvMjIzYWMxL2luaXQv
bWFpbi5jIGZlYXQyMjNhYzEvaW5pdC9tYWluLmMNCi0tLSB2YW5pbGxhcy8y
MjNhYzEvaW5pdC9tYWluLmMJVHVlIE1hciAgOSAxMTozNDoyMyAxOTk5DQor
KysgZmVhdDIyM2FjMS9pbml0L21haW4uYwlGcmkgTWFyIDEyIDA3OjU3OjQ3
IDE5OTkNCkBAIC0xMyw2ICsxMyw3IEBADQogDQogI2luY2x1ZGUgPGxpbnV4
L2NvbmZpZy5oPg0KICNpbmNsdWRlIDxsaW51eC9wcm9jX2ZzLmg+DQorI2lu
Y2x1ZGUgPGxpbnV4L2ZlYXR1cmUuaD4NCiAjaW5jbHVkZSA8bGludXgvdW5p
c3RkLmg+DQogI2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+DQogI2luY2x1ZGUg
PGxpbnV4L2RlbGF5Lmg+DQpAQCAtMTE1OCw2ICsxMTU5LDcgQEANCiAjaWZk
ZWYgQ09ORklHX1BST0NfRlMNCiAJcHJvY19yb290X2luaXQoKTsNCiAjZW5k
aWYNCisJZmVhdHVyZV9pbml0KCk7DQogCXVpZGNhY2hlX2luaXQoKTsNCiAJ
ZmlsZXNjYWNoZV9pbml0KCk7DQogCWRjYWNoZV9pbml0KCk7DQo=
--672768-947925046-921225110=:3467--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/