Re: kmod fix

Greg Zornetzer (gaz@andrew.cmu.edu)
Sun, 15 Mar 1998 01:26:37 -0500 (EST)


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.

---559023410-851401618-889943197=:24725
Content-Type: TEXT/PLAIN; charset=US-ASCII

Well, the code is _much_ bigger than the original kmod, but I've modified
kmod to allow multiple requests. It splits up the signalling into the
original kmod_queue and an array of module slots. Each of these slots
contains the wait queue for waking up request_module, the name of the
module, and a information byte telling the status of the module. This
allows the lp module to load properly again. Although it's somewhat
bloated, I think it bypasses the races in the current kmod code.

In addition, I've added a switch that shuts kmod off by default. It is
activated by putting a non-null string in systcl kernel/modprobe_path.
This is necessary because kmod starts after initrd is run. Inserting
modules that run request_module will cause a freeze (scsi fits into that
category - a la Redhat installs). So the rc scripts must put a modprobe
path into kernel/modprobe_path (this could be easily changed)

Another thing is that request_module will now return -1 if a module load
failed - I couldn't find the proper return code, but I think the return
code should change if a failure occurs.

Patch is against 2.1.90pre2 but should work against 2.1.90pre3 and 1, (I'm
compiling pre3 now)
Anyway, what do you think? Is the extra code worth it?

Greg Zornetzer - gaz+@andrew.cmu.edu
"Light shines brightest in the darkest night"
http://www.contrib.andrew.cmu.edu/~gaz

---559023410-851401618-889943197=:24725
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="kmod.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.SOL.3.95L.980315012637.24725E@unix12.andrew.cmu.edu>
Content-Description:

LS0tIGxpbnV4L2tlcm5lbC9rbW9kLmMub2xkCVRodSBNYXIgMTIgMjM6MTg6
MjIgMTk5OA0KKysrIGxpbnV4L2tlcm5lbC9rbW9kLmMJU3VuIE1hciAxNSAw
MDoyMDozOCAxOTk4DQpAQCAtMSw2ICsxLDkgQEANCiAvKg0KIAlrbW9kLCB0
aGUgbmV3IG1vZHVsZSBsb2FkZXIgKHJlcGxhY2VzIGtlcm5lbGQpDQogCUtp
cmsgUGV0ZXJzZW4NCisJTW9kaWZpY2F0aW9ucyB0byBzdXBwb3J0IG11bHRp
cGxlIG1vZHVsZXMgbG9hZGluZw0KKwlieSBHcmVnIFpvcm5ldHplciAoZ2F6
QGFuZHJldy5jbXUuZWR1KQ0KKw0KICovDQogDQogI2RlZmluZSBfX0tFUk5F
TF9TWVNDQUxMU19fDQpAQCAtOSwxNyArMTIsNTEgQEANCiAjaW5jbHVkZSA8
bGludXgvdHlwZXMuaD4NCiAjaW5jbHVkZSA8bGludXgvdW5pc3RkLmg+DQog
DQorDQorLyogDQorCURlZmluZSB0aGUgbnVtYmVyIG9mIG1vZHVsZXMgdGhh
dCB3ZSBjYW4gY29uY3VycmVudGx5IGxvYWQuDQorCUl0J3MgZWFzaWVyIHRv
IHN0YXRpY2FsbHkgZGVmaW5lIHRoaXMgYW1vdW50IHRoYW4gdG8gbWFrZQ0K
KwlpdCBzY2FsZSBkeW5hbWljYWxseSANCisqLw0KKw0KKyNkZWZpbmUgTlVN
TU9EUyAxMA0KKw0KKy8qDQorCUEgbW9kdWxlIHNsb3QgY2FuIGJlIGluIHNl
dmVyYWwgc3RhdGVzIC0gdW51c2VkLCBvciBpbiB2YXJpb3VzDQorCXN0YXRl
cyBvZiBwcm9jZXNzaW5nIA0KKyovDQorI2RlZmluZSBNT0RSUV9OT05FICAg
ICAgMA0KKyNkZWZpbmUgTU9EUlFfUkVRVUVTVEVEIDENCisjZGVmaW5lIE1P
RFJRX1NFUlZJQ0lORyAyDQorI2RlZmluZSBNT0RSUV9SRU1PVkUgICAgNA0K
KyNkZWZpbmUgTU9EUlFfRkFJTFVSRSAgIDgNCisNCiBzdGF0aWMgaW5saW5l
IF9zeXNjYWxsMShpbnQsZGVsZXRlX21vZHVsZSxjb25zdCBjaGFyICosbmFt
ZV91c2VyKQ0KIA0KIC8qDQogCWttb2RfdW5sb2FkX2RlbGF5IGFuZCBtb2Rw
cm9iZV9wYXRoIGFyZSBzZXQgdmlhIC9wcm9jL3N5cy4NCisJTWFrZSBtb2Rw
cm9iZSBwYXRoIG51bGwgYnkgZGVmYXVsdCAtIHRoaXMgc2lnbmFscyB0aGF0
IA0KKwlyZXF1ZXN0X21vZHVsZSAoYW5kIHRoZXJlZm9yZSBrbW9kKSB3aWxs
IGJlIHVuYWJsZSB0byBzZXJ2aWNlDQorCXJlcXVlc3RzIHVudGlsIGV4cGxp
Y2l0bHkgYWN0aXZhdGVkIHVzaW5nIHN5c2N0bA0KICovDQogaW50IGttb2Rf
dW5sb2FkX2RlbGF5ID0gNjA7DQotY2hhciBtb2Rwcm9iZV9wYXRoWzI1Nl0g
PSAiL3NiaW4vbW9kcHJvYmUiOw0KLWNoYXIgbW9kdWxlX25hbWVbNjRdID0g
IiI7DQorY2hhciBtb2Rwcm9iZV9wYXRoWzI1Nl0gPSAiIjsNCiBjaGFyICog
YXJndltdID0geyAibW9kcHJvYmUiLCAiLWsiLCBOVUxMLCBOVUxMLCB9Ow0K
IGNoYXIgKiBlbnZwW10gPSB7ICJIT01FPS8iLCAiVEVSTT1saW51eCIsIE5V
TEwsIH07DQogDQorDQorLyoNCisJQSBtb2RzbG90IGRlZmluZXMgdGhlIHN0
YXRlIG9mIGEgbW9kdWxlIGJlaW5nIGxvYWRlZCBhbmQgaG9sZHMgdGhlDQor
CXdhaXRfcXVldWUgdG8gcmVhY3RpdmF0ZSByZXF1ZXN0X21vZHVsZQ0KKyov
DQordHlwZWRlZiBzdHJ1Y3Qgew0KKwlzdHJ1Y3Qgd2FpdF9xdWV1ZSAqbXJl
cV9xdWV1ZTsNCisJdW5zaWduZWQgY2hhciBpbmZvOw0KKwljaGFyIG1vZHVs
ZV9uYW1lWzY0XTsNCit9IG1vZHNsb3Q7DQorDQorbW9kc2xvdCBtb2RsaXN0
W05VTU1PRFNdOw0KKw0KIC8qDQogCWttb2RfcXVldWUgc3luY2hyb25pemVz
IHRoZSBrbW9kIHRocmVhZCBhbmQgdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbQ0K
IAlrbW9kX3VubG9hZF90aW1lciBpcyB3aGF0IHdlIHVzZSB0byB1bmxvYWQg
bW9kdWxlcw0KQEAgLTI4LDYgKzY1LDMzIEBADQogc3RydWN0IHdhaXRfcXVl
dWUgKiBrbW9kX3F1ZXVlID0gTlVMTDsNCiBzdHJ1Y3QgdGltZXJfbGlzdCBr
bW9kX3VubG9hZF90aW1lcjsNCiANCit2b2lkIGluc3RhbGxfbW9kdWxlKGlu
dCBsaXN0bnVtKSB7DQorDQorCWludCBwaWQ7DQorCXBpZCA9IGZvcmsoKTsN
CisNCisJaWYgKHBpZCA+IDApIHsNCisJCXdhaXRwaWQocGlkLCBOVUxMLCAw
KTsNCisJCXdha2VfdXAoJihtb2RsaXN0W2xpc3RudW1dLm1yZXFfcXVldWUp
KTsNCisNCisJfSBlbHNlIGlmIChwaWQgPT0gMCkgew0KKwkJLyoNCisJCQlD
YWxsIG1vZHByb2JlIHdpdGggbW9kdWxlX25hbWUuICBJZiBleGVjdmUgcmV0
dXJucywNCisJCQlwcmludCBvdXQgYW4gZXJyb3IuDQorCQkqLw0KKwkJYXJn
dlsyXSA9IG1vZGxpc3RbbGlzdG51bV0ubW9kdWxlX25hbWU7DQorCQlleGVj
dmUobW9kcHJvYmVfcGF0aCwgYXJndiwgZW52cCk7DQorDQorCQlwcmludGso
Imttb2Q6IGZhaWxlZCB0byBsb2FkIG1vZHVsZSAlc1xuIiwgbW9kbGlzdFts
aXN0bnVtXS5tb2R1bGVfbmFtZSk7DQorCQltb2RsaXN0W2xpc3RudW1dLmlu
Zm8gPSBNT0RSUV9GQUlMVVJFOw0KKwkJX2V4aXQoMCk7DQorCX0gZWxzZSB7
DQorCQlwcmludGsoImVycm9yLCBmb3JrIGZhaWxlZCBpbiBrbW9kIC0gY291
bGRuJ3QgbG9hZCAlc1xuIixtb2RsaXN0W2xpc3RudW1dLm1vZHVsZV9uYW1l
KTsNCisJCW1vZGxpc3RbbGlzdG51bV0uaW5mbyA9IE1PRFJRX0ZBSUxVUkU7
DQorCQl3YWtlX3VwKCYobW9kbGlzdFtsaXN0bnVtXS5tcmVxX3F1ZXVlKSk7
DQorCX0NCit9DQorDQogLyoNCiAJa21vZF90aHJlYWQgaXMgdGhlIHRocmVh
ZCB0aGF0IGRvZXMgbW9zdCBvZiB0aGUgd29yay4gIGttb2RfdW5sb2FkIGFu
ZA0KIAlyZXF1ZXN0X21vZHVsZSB0ZWxsIGl0IHRvIHdha2UgdXAgYW5kIGRv
IHdvcmsuDQpAQCAtMzUsNiArOTksNyBAQA0KIGludCBrbW9kX3RocmVhZCh2
b2lkICogZGF0YSkNCiB7DQogCWludCBwaWQ7DQorCWludCBpOw0KIA0KIAkv
Kg0KIAkJSW5pdGlhbGl6ZSBiYXNpYyB0aHJlYWQgaW5mb3JtYXRpb24NCkBA
IC00NSw2ICsxMTAsMTMgQEANCiAJc2lnZmlsbHNldCgmY3VycmVudC0+Ymxv
Y2tlZCk7DQogDQogCS8qDQorCSAgSW5pdGlhbGl6ZSB0aGUgbW9kbGlzdCBh
cnJheQ0KKwkqLw0KKwlmb3IoaSA9IDA7IGkgPCBOVU1NT0RTOyBpKyspIHsN
CisJCW1vZGxpc3RbaV0uaW5mbyA9IE1PRFJRX05PTkU7DQorCQltb2RsaXN0
W2ldLm1yZXFfcXVldWUgPSBOVUxMOw0KKwl9DQorCS8qDQogCQlUaGlzIGlz
IHRoZSBtYWluIGttb2RfdGhyZWFkIGxvb3AuICBJdCBmaXJzdCBzbGVlcHMs
IHRoZW4NCiAJCWhhbmRsZXMgcmVxdWVzdHMgZnJvbSByZXF1ZXN0X21vZHVs
ZSBvciBrbW9kX3VubG9hZC4NCiAJKi8NCkBAIC01MiwzNyArMTI0LDM4IEBA
DQogCXdoaWxlICgxKSB7DQogCQlpbnRlcnJ1cHRpYmxlX3NsZWVwX29uKCZr
bW9kX3F1ZXVlKTsNCiANCi0JCS8qDQotCQkJSWYgcmVxdWVzdF9tb2R1bGUg
d29rZSB1cyB1cCwgd2Ugc2hvdWxkIHRyeSB0bw0KLQkJCWxvYWQgbW9kdWxl
X25hbWUuICBJZiBub3QsIGttb2RfdW5sb2FkIHdva2UgdXMgdXAsDQotCQkJ
ZG8gY2FsbCBkZWxldGVfbW9kdWxlLg0KLQkJCShpZiBzb21laG93IGJvdGgg
d2FudCB1cyB0byBkbyBzb21ldGhpbmcsIGlnbm9yZSB0aGUNCi0JCQkgZGVs
ZXRlX21vZHVsZSByZXF1ZXN0KQ0KKwkJLyogDQorCQkJV2UndmUgYmVlbiBh
d2FrZW5lZCAtIGNoZWNrIGFsbCBvZiB0aGUgbW9kdWxlDQorCQkJc2xvdHMg
Zm9yIG5ldyByZXF1ZXN0cw0KIAkJKi8NCi0JCWlmIChtb2R1bGVfbmFtZVsw
XSA9PSAnXDAnKSB7DQotCQkJZGVsZXRlX21vZHVsZShOVUxMKTsNCi0JCX0g
ZWxzZSB7DQotCQkJcGlkID0gZm9yaygpOw0KLQkJCWlmIChwaWQgPiAwKSB7
DQotCQkJCXdhaXRwaWQocGlkLCBOVUxMLCAwKTsNCi0JCQkJbW9kdWxlX25h
bWVbMF0gPSAnXDAnOw0KLQkJCQl3YWtlX3VwKCZrbW9kX3F1ZXVlKTsNCi0J
CQl9IGVsc2UNCi0JCQlpZiAocGlkID09IDApIHsNCi0NCi0JCQkJLyoNCi0J
CQkJCUNhbGwgbW9kcHJvYmUgd2l0aCBtb2R1bGVfbmFtZS4gIElmIGV4ZWN2
ZSByZXR1cm5zLA0KLQkJCQkJcHJpbnQgb3V0IGFuIGVycm9yLg0KLQkJCQkq
Lw0KLQkJCQlhcmd2WzJdID0gbW9kdWxlX25hbWU7DQotCQkJCWV4ZWN2ZSht
b2Rwcm9iZV9wYXRoLCBhcmd2LCBlbnZwKTsNCiANCi0JCQkJcHJpbnRrKCJr
bW9kOiBmYWlsZWQgdG8gbG9hZCBtb2R1bGUgJXNcbiIsIG1vZHVsZV9uYW1l
KTsNCi0JCQkJX2V4aXQoMCk7DQotCQkJfSBlbHNlIHsNCi0JCQkJcHJpbnRr
KCJlcnJvciwgZm9yayBmYWlsZWQgaW4ga21vZFxuIik7DQorCQlmb3IoaSA9
IDA7IGkgPCBOVU1NT0RTOyBpKyspIHsNCisJCQlzd2l0Y2ggKG1vZGxpc3Rb
aV0uaW5mbykgew0KKwkJCWNhc2UgTU9EUlFfUkVRVUVTVEVEIDoNCisJCQkJ
bW9kbGlzdFtpXS5pbmZvID0gTU9EUlFfU0VSVklDSU5HOw0KKwkJCQkvKiAN
CisJCQkJCUdvdHRhIGZvcmsgb2ZmIGEgbmV3IHByb2Nlc3MgdG8gbWFrZQ0K
KwkJCQkJc3VyZSB0aGF0IGttb2QgY2FuIGhhbmRsZQ0KKwkJCQkJc3Vic2Vx
dWVudCByZXF1ZXN0cw0KKwkJCQkqLw0KKwkJCQlwaWQgPSBmb3JrKCk7DQor
CQkJCWlmIChwaWQgPT0gMCkgew0KKwkJCQkJaW5zdGFsbF9tb2R1bGUoaSk7
DQorCQkJCQlfZXhpdCgwKTsNCisJCQkJfQ0KKwkJCQllbHNlIGlmIChwaWQg
PCAwKSB7DQorCQkJCQlwcmludGsoIktNb2Q6IENvdWxkbid0IGZvcmsgLSBD
YW5ub3QgbG9hZCAlc1xuIixtb2RsaXN0W2ldLm1vZHVsZV9uYW1lKTsNCisJ
CQkJCW1vZGxpc3RbaV0uaW5mbyA9IE1PRFJRX0ZBSUxVUkU7DQorCQkJCQl3
YWtlX3VwKCYobW9kbGlzdFtpXS5tcmVxX3F1ZXVlKSk7IA0KKwkJCQl9DQor
CQkJCWJyZWFrOw0KKwkJCWNhc2UgTU9EUlFfUkVNT1ZFIDoNCisJCQkgICAg
ICAgIG1vZGxpc3RbaV0uaW5mbyA9IE1PRFJRX05PTkU7DQorCQkJICAgICAg
ICBkZWxldGVfbW9kdWxlKE5VTEwpOw0KKwkJCSAgICAgICAgYnJlYWs7DQog
CQkJfQ0KIAkJfQ0KKw0KIAl9DQogDQogCXJldHVybiAwOwkvKiBOZXZlciBy
ZWFjaGVkLiAqLw0KQEAgLTk0LDEzICsxNjcsMjMgQEANCiAqLw0KIHZvaWQg
a21vZF91bmxvYWQodW5zaWduZWQgbG9uZyB4KQ0KIHsNCisJaW50IGk9MDsN
CiAJLyoNCisJCUZpbmQgYSBmcmVlIHNsb3QsIGFuZCBzZXQgaXQgdG8gdGhl
IHJlbW92ZSBzdGF0dXMNCisJCUtNb2Qgd2lsbCBwaWNrIHRoaXMgdXAgYW5k
IGNhbGwgZGVsZXRlX21vZHVsZQ0KIAkJd2FrZSB1cCB0aGUga21vZCB0aHJl
YWQsIHdoaWNoIGRvZXMgdGhlIHdvcmsNCiAJCSh3ZSBjYW4ndCBjYWxsIGRl
bGV0ZV9tb2R1bGUsIGFzIGl0IGxvY2tzIHRoZSBrZXJuZWwgYW5kDQotCQkg
d2UgYXJlIGluIHRoZSBib3R0b20gaGFsZiBvZiB0aGUga2VybmVsIChyaWdo
dD8pKQ0KKwkJd2UgYXJlIGluIHRoZSBib3R0b20gaGFsZiBvZiB0aGUga2Vy
bmVsIChyaWdodD8pKQ0KIAkJb25jZSBpdCBpcyBhd2FrZSwgcmVzZXQgdGhl
IHRpbWVyDQogCSovDQotCXdha2VfdXAoJmttb2RfcXVldWUpOw0KKwl3aGls
ZSgoaSA8IE5VTU1PRFMpICYmIChtb2RsaXN0W2ldLmluZm8gIT0gTU9EUlFf
Tk9ORSkpDQorCSAgICAgICAgaSsrOw0KKwlpZihpICE9IE5VTU1PRFMpIHsN
CisJCW1vZGxpc3RbaV0uaW5mbyA9IE1PRFJRX1JFTU9WRTsNCisJCXdha2Vf
dXAoJmttb2RfcXVldWUpOw0KKwl9DQorCWVsc2UNCisJCXByaW50aygiQ291
bGRuJ3QgZ2V0IHNsb3QgZm9yIG1vZHVsZSBjbGVhbnVwXG4iKTsNCiAJa21v
ZF91bmxvYWRfdGltZXIuZXhwaXJlcyA9IGppZmZpZXMgKyAoa21vZF91bmxv
YWRfZGVsYXkgKiBIWik7DQogCWFkZF90aW1lcigma21vZF91bmxvYWRfdGlt
ZXIpOw0KIH0NCkBAIC0xMjcsMTYgKzIxMCwzMCBAQA0KICovDQogaW50IHJl
cXVlc3RfbW9kdWxlKGNvbnN0IGNoYXIgKiBuYW1lKQ0KIHsNCi0JLyogZmly
c3QsIGNvcHkgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBpbnRvIG1vZHVsZV9u
YW1lICovDQotCS8qIHRoZW4gd2FrZV91cCgpIHRoZSBrbW9kIGRhZW1vbiAq
Lw0KLQkvKiB3YWl0IGZvciB0aGUga21vZCBkYWVtb24gdG8gZmluaXNoIChp
dCB3aWxsIHdha2UgdXMgdXApICovDQorLyogDQorCXJlcXVlc3RfbW9kdWxl
IHdpbGwgKGlmIGttb2QgaXMgcnVubmluZykgZ2V0IGZyZWUgbW9kc2xvdA0K
KwlhbmQgd2FrZSB1cCBrbW9kLg0KKyovDQogDQotCS8qDQotCQlrbW9kX3Ro
cmVhZCBpcyBzbGVlcGluZywgc28gc3RhcnQgYnkgY29weWluZyB0aGUgbmFt
ZSBvZg0KLQkJdGhlIG1vZHVsZSBpbnRvIG1vZHVsZV9uYW1lLiAgT25jZSB0
aGF0IGlzIGRvbmUsIHdha2UgdXANCi0JCWttb2RfdGhyZWFkLg0KLQkqLw0K
LQlzdHJjcHkobW9kdWxlX25hbWUsIG5hbWUpOw0KKyAgICAgICAgaW50IGkg
PSAwOw0KKwkNCisNCisvKg0KKwltb2Rwcm9iZV9wYXRoIGhhc24ndCBiZWVu
IGluaXRpYWxpemVkLCB0aGUga21vZCBpcyBpbmFjdGl2ZS4NCisJU28gd2Ug
ZmFpbCANCisqLw0KKwlpZiAobW9kcHJvYmVfcGF0aFswXT09J1wwJykNCisJ
CXJldHVybigtMSk7DQorDQorCXdoaWxlKChpIDwgTlVNTU9EUykgJiYgKG1v
ZGxpc3RbaV0uaW5mbyAhPSBNT0RSUV9OT05FKSkNCisJICAgICAgICBpKys7
DQorCWlmKGkgPT0gTlVNTU9EUykgew0KKwkJcHJpbnRrKCJLTW9kIC0gbW9k
dWxlIGxvYWQgZmFpbHVyZSAtIG5vIGZyZWUgbW9kIHNsb3RzXG4iKTsNCisJ
CXJldHVybigtMSk7DQorCX0NCisNCisJbW9kbGlzdFtpXS5pbmZvID0gTU9E
UlFfUkVRVUVTVEVEOw0KKwlzdHJjcHkobW9kbGlzdFtpXS5tb2R1bGVfbmFt
ZSwgbmFtZSk7DQogCXdha2VfdXAoJmttb2RfcXVldWUpOw0KIA0KIAkvKg0K
QEAgLTE0NCw2ICsyNDEsMjIgQEANCiAJCWdvIHRvIHNsZWVwIGFuZCBsZXQg
aXQgZG8gaXRzIHdvcmsuICBJdCB3aWxsIHdha2UgdXMgdXAsDQogCQlhdCB3
aGljaCBwb2ludCB3ZSB3aWxsIGJlIGRvbmUgKHRoZSBtb2R1bGUgd2lsbCBi
ZSBsb2FkZWQpLg0KIAkqLw0KLQlpbnRlcnJ1cHRpYmxlX3NsZWVwX29uKCZr
bW9kX3F1ZXVlKTsNCisNCisJaW50ZXJydXB0aWJsZV9zbGVlcF9vbigmKG1v
ZGxpc3RbaV0ubXJlcV9xdWV1ZSkpOw0KKw0KKwkvKiANCisJCUlmIHRoZSBt
b2R1bGUgbG9hZCByZXR1cm5zIGEgZmFpbHVyZSBmb3IgYW55IHJlYXNvbiwg
DQorCQl3ZSBzaG91bGQgZmFpbCBhbHNvDQorCSovDQorCWlmKG1vZGxpc3Rb
aV0uaW5mbyA9PSBNT0RSUV9GQUlMVVJFKSB7DQorCQltb2RsaXN0W2ldLmlu
Zm8gPSBNT0RSUV9OT05FOw0KKwkJcmV0dXJuKC0xKTsNCisJfQ0KKwltb2Rs
aXN0W2ldLmluZm8gPSBNT0RSUV9OT05FOw0KIAlyZXR1cm4gMDsNCiB9DQor
DQorDQorDQorDQorDQo=
---559023410-851401618-889943197=:24725--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu