public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [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