diff options
author | Andrew Morton <akpm@osdl.org> | 2006-03-28 04:56:19 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-28 12:16:02 -0500 |
commit | 6d9eac34104654aa129e365b8d48bbb8c957f186 (patch) | |
tree | 47b81aaebb9903df4bdaacad963ca4ee2bf04204 /drivers/isdn/capi/capi.c | |
parent | 829d5f68ec59ff7c0fdd472132680df8e4b64f3e (diff) |
[PATCH] capi: register_chrdev() fix
If the user specified `major=0' (odd thing to do), capi.c will use dynamic
allocation. We need to pick up that major for subsequent unregister_chrdev().
Acked-by: Karsten Keil <kkeil@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/isdn/capi/capi.c')
-rw-r--r-- | drivers/isdn/capi/capi.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/isdn/capi/capi.c b/drivers/isdn/capi/capi.c index 623adbb0d13a..9b493f0becc4 100644 --- a/drivers/isdn/capi/capi.c +++ b/drivers/isdn/capi/capi.c | |||
@@ -1485,6 +1485,7 @@ static int __init capi_init(void) | |||
1485 | { | 1485 | { |
1486 | char *p; | 1486 | char *p; |
1487 | char *compileinfo; | 1487 | char *compileinfo; |
1488 | int major_ret; | ||
1488 | 1489 | ||
1489 | if ((p = strchr(revision, ':')) != 0 && p[1]) { | 1490 | if ((p = strchr(revision, ':')) != 0 && p[1]) { |
1490 | strlcpy(rev, p + 2, sizeof(rev)); | 1491 | strlcpy(rev, p + 2, sizeof(rev)); |
@@ -1493,11 +1494,12 @@ static int __init capi_init(void) | |||
1493 | } else | 1494 | } else |
1494 | strcpy(rev, "1.0"); | 1495 | strcpy(rev, "1.0"); |
1495 | 1496 | ||
1496 | if (register_chrdev(capi_major, "capi20", &capi_fops)) { | 1497 | major_ret = register_chrdev(capi_major, "capi20", &capi_fops); |
1498 | if (major_ret < 0) { | ||
1497 | printk(KERN_ERR "capi20: unable to get major %d\n", capi_major); | 1499 | printk(KERN_ERR "capi20: unable to get major %d\n", capi_major); |
1498 | return -EIO; | 1500 | return major_ret; |
1499 | } | 1501 | } |
1500 | 1502 | capi_major = major_ret; | |
1501 | capi_class = class_create(THIS_MODULE, "capi"); | 1503 | capi_class = class_create(THIS_MODULE, "capi"); |
1502 | if (IS_ERR(capi_class)) { | 1504 | if (IS_ERR(capi_class)) { |
1503 | unregister_chrdev(capi_major, "capi20"); | 1505 | unregister_chrdev(capi_major, "capi20"); |