From: Zijun Hu Date: Fri, 20 Jun 2025 14:35:20 +0000 (+0800) Subject: char: misc: Fix improper and inaccurate error code returned by misc_init() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0ef1fe4bc38673db72e39b700b29c50dfcc5a415;p=thirdparty%2Fkernel%2Fstable.git char: misc: Fix improper and inaccurate error code returned by misc_init() 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 Link: https://lore.kernel.org/r/20250620-fix_mischar-v1-3-6c2716bbf1fa@oss.qualcomm.com Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/char/misc.c b/drivers/char/misc.c index d5accc10a110..5247d0ec0f4c 100644 --- a/drivers/char/misc.c +++ b/drivers/char/misc.c @@ -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;