* [PATCH 2.6.17-rc3] Fix capi reload by unregistering the correct major
@ 2006-04-29 17:25 Stefan Schweizer
2006-05-08 20:00 ` Andrew Morton
0 siblings, 1 reply; 4+ messages in thread
From: Stefan Schweizer @ 2006-04-29 17:25 UTC (permalink / raw)
To: linux-kernel; +Cc: i4ldeveloper
[-- Attachment #1: Type: text/plain, Size: 880 bytes --]
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi,
I am having the bug
FATAL: Error inserting capi ([..]/capi.ko): Device or resource busy
when I try to reload capi after loading it.
in dmesg: capi20: unable to get major 68
I attached a patch to fix the issue which is caused by setting the major to
zero when registering the chrdev succeeded. Please apply
- - Stefan
errors in the dmesg:
CAPI Subsystem Rev 1.1.2.8
capifs: Rev 1.1.2.3
capi20: Rev 1.1.2.7: started up with major 0 (middleware+capifs)
<-- here you see that it was set to 0.
(after unload and retry)
capi: Rev 1.1.2.7: unloaded
CAPI Subsystem Rev 1.1.2.8
capi20: unable to get major 68
<-- the chrdev has not been unlinked
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)
iD8DBQFEU6GBNJowsmZ/PzARArMZAJ9tfOoFGJ5wNd86DA15JiaZJFLsAQCfaYr7
9XF6cTgYU7Y9hzvGLgXkJqU=
=qvpL
-----END PGP SIGNATURE-----
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: capi --]
[-- Type: text/x-diff; name="capi", Size: 398 bytes --]
--- drivers/isdn/capi/capi.c.orig 2006-04-29 18:40:25.000000000 +0200
+++ drivers/isdn/capi/capi.c 2006-04-29 18:27:22.000000000 +0200
@@ -1499,7 +1499,6 @@
printk(KERN_ERR "capi20: unable to get major %d\n", capi_major);
return major_ret;
}
- capi_major = major_ret;
capi_class = class_create(THIS_MODULE, "capi");
if (IS_ERR(capi_class)) {
unregister_chrdev(capi_major, "capi20");
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH 2.6.17-rc3] Fix capi reload by unregistering the correct major
2006-04-29 17:25 [PATCH 2.6.17-rc3] Fix capi reload by unregistering the correct major Stefan Schweizer
@ 2006-05-08 20:00 ` Andrew Morton
2006-05-09 17:12 ` Stefan Schweizer
0 siblings, 1 reply; 4+ messages in thread
From: Andrew Morton @ 2006-05-08 20:00 UTC (permalink / raw)
To: Stefan Schweizer; +Cc: linux-kernel, i4ldeveloper
Stefan Schweizer <genstef@gentoo.org> wrote:
>
> I am having the bug
> FATAL: Error inserting capi ([..]/capi.ko): Device or resource busy
> when I try to reload capi after loading it.
> in dmesg: capi20: unable to get major 68
This is odd.
> I attached a patch to fix the issue which is caused by setting the major to
> zero when registering the chrdev succeeded. Please apply
> - - Stefan
>
> errors in the dmesg:
>
> CAPI Subsystem Rev 1.1.2.8
> capifs: Rev 1.1.2.3
> capi20: Rev 1.1.2.7: started up with major 0 (middleware+capifs)
> <-- here you see that it was set to 0.
> (after unload and retry)
> capi: Rev 1.1.2.7: unloaded
> CAPI Subsystem Rev 1.1.2.8
> capi20: unable to get major 68
> <-- the chrdev has not been unlinked
> --- drivers/isdn/capi/capi.c.orig 2006-04-29 18:40:25.000000000 +0200
> +++ drivers/isdn/capi/capi.c 2006-04-29 18:27:22.000000000 +0200
> @@ -1499,7 +1499,6 @@
> printk(KERN_ERR "capi20: unable to get major %d\n", capi_major);
> return major_ret;
> }
> - capi_major = major_ret;
> capi_class = class_create(THIS_MODULE, "capi");
> if (IS_ERR(capi_class)) {
> unregister_chrdev(capi_major, "capi20");
>
>
>
What does "unload and retry" mean?
An `rmmod capi;modprobe capi' will reset the major to 68, so you must mean
something else. What?
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH 2.6.17-rc3] Fix capi reload by unregistering the correct major
2006-05-08 20:00 ` Andrew Morton
@ 2006-05-09 17:12 ` Stefan Schweizer
2006-05-12 22:16 ` Stefan Schweizer
0 siblings, 1 reply; 4+ messages in thread
From: Stefan Schweizer @ 2006-05-09 17:12 UTC (permalink / raw)
To: linux-kernel; +Cc: i4ldeveloper
Andrew Morton wrote:
> Stefan Schweizer <genstef@gentoo.org> wrote:
>> --- drivers/isdn/capi/capi.c.orig 2006-04-29 18:40:25.000000000 +0200
>> +++ drivers/isdn/capi/capi.c 2006-04-29 18:27:22.000000000 +0200
>> @@ -1499,7 +1499,6 @@
>> printk(KERN_ERR "capi20: unable to get major %d\n", capi_major);
>> return major_ret;
>> }
>> - capi_major = major_ret;
>> capi_class = class_create(THIS_MODULE, "capi");
>> if (IS_ERR(capi_class)) {
>> unregister_chrdev(capi_major, "capi20");
>>
>>
>>
>
> What does "unload and retry" mean?
>
> An `rmmod capi;modprobe capi' will reset the major to 68, so you must mean
> something else. What?
I mean exactly rmmod capi; modprobe capi. The problem is, that on unload
time, the capi_major has been set to major_ret, which is 0 if a major
number is given. Of course it does not unregister 68 then. Consequently
when trying to load it a second time after unloading it fails, because it
has not freed the major 68.
Regards,
Stefan
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH 2.6.17-rc3] Fix capi reload by unregistering the correct major
2006-05-09 17:12 ` Stefan Schweizer
@ 2006-05-12 22:16 ` Stefan Schweizer
0 siblings, 0 replies; 4+ messages in thread
From: Stefan Schweizer @ 2006-05-12 22:16 UTC (permalink / raw)
To: linux-kernel; +Cc: i4ldeveloper
Hi,
after seeing your problems with my patch on -mm-commits, I actually think
this one might be better. It allows dynamic majors and does not break
anything :)
Please change my patch
- Stefan
--- drivers/isdn/capi/capi.c 2006-05-13 00:12:46.000000000 +0200
+++ drivers/isdn/capi/capi.c 2006-05-12 22:16:22.000000000 +0200
@@ -1499,7 +1499,9 @@
printk(KERN_ERR "capi20: unable to get major %d\n",
capi_major);
return major_ret;
}
- capi_major = major_ret;
+ if (major_ret != 0) {
+ capi_major = major_ret;
+ }
capi_class = class_create(THIS_MODULE, "capi");
if (IS_ERR(capi_class)) {
unregister_chrdev(capi_major, "capi20");
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2006-05-12 22:16 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-04-29 17:25 [PATCH 2.6.17-rc3] Fix capi reload by unregistering the correct major Stefan Schweizer
2006-05-08 20:00 ` Andrew Morton
2006-05-09 17:12 ` Stefan Schweizer
2006-05-12 22:16 ` Stefan Schweizer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox