]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
char: misc: Fix improper and inaccurate error code returned by misc_init()
authorZijun Hu <zijun.hu@oss.qualcomm.com>
Fri, 20 Jun 2025 14:35:20 +0000 (22:35 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Aug 2025 16:41:01 +0000 (18:41 +0200)
[ Upstream commit 0ef1fe4bc38673db72e39b700b29c50dfcc5a415 ]

misc_init() returns -EIO for __register_chrdev() invocation failure, but:

- -EIO is for I/O error normally, but __register_chrdev() does not do I/O.
- -EIO can not cover various error codes returned by __register_chrdev().

Fix by returning error code of __register_chrdev().

Signed-off-by: Zijun Hu <zijun.hu@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20250620-fix_mischar-v1-3-6c2716bbf1fa@oss.qualcomm.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/char/misc.c

index d5accc10a110098f7090dd0f900bc5fae5f75f74..5247d0ec0f4c5363d5ecd2881741510158295779 100644 (file)
@@ -296,8 +296,8 @@ static int __init misc_init(void)
        if (err)
                goto fail_remove;
 
-       err = -EIO;
-       if (__register_chrdev(MISC_MAJOR, 0, MINORMASK + 1, "misc", &misc_fops))
+       err = __register_chrdev(MISC_MAJOR, 0, MINORMASK + 1, "misc", &misc_fops);
+       if (err < 0)
                goto fail_printk;
        return 0;