diff options
author | Andrew Morton <akpm@osdl.org> | 2006-03-28 13:56:19 +0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-28 21:16:02 +0400 |
commit | 6d9eac34104654aa129e365b8d48bbb8c957f186 (patch) | |
tree | 47b81aaebb9903df4bdaacad963ca4ee2bf04204 | |
parent | 829d5f68ec59ff7c0fdd472132680df8e4b64f3e (diff) | |
download | linux-6d9eac34104654aa129e365b8d48bbb8c957f186.tar.xz |
[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>
-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) { char *p; char *compileinfo; + int major_ret; if ((p = strchr(revision, ':')) != 0 && p[1]) { strlcpy(rev, p + 2, sizeof(rev)); @@ -1493,11 +1494,12 @@ static int __init capi_init(void) } else strcpy(rev, "1.0"); - if (register_chrdev(capi_major, "capi20", &capi_fops)) { + major_ret = register_chrdev(capi_major, "capi20", &capi_fops); + if (major_ret < 0) { printk(KERN_ERR "capi20: unable to get major %d\n", capi_major); - return -EIO; + return major_ret; } - + capi_major = major_ret; capi_class = class_create(THIS_MODULE, "capi"); if (IS_ERR(capi_class)) { unregister_chrdev(capi_major, "capi20"); |