Drivers: hv: util: Don't force error code to ENODEV in util_probe()
authorMichael Kelley <mhklinux@outlook.com>
Wed, 6 Nov 2024 15:42:46 +0000 (07:42 -0800)
committerWei Liu <wei.liu@kernel.org>
Mon, 9 Dec 2024 18:44:14 +0000 (18:44 +0000)
If the util_init function call in util_probe() returns an error code,
util_probe() always return ENODEV, and the error code from the util_init
function is lost. The error message output in the caller, vmbus_probe(),
doesn't show the real error code.

Fix this by just returning the error code from the util_init function.
There doesn't seem to be a reason to force ENODEV, as other errors
such as ENOMEM can already be returned from util_probe(). And the
code in call_driver_probe() implies that ENODEV should mean that a
matching driver wasn't found, which is not the case here.

Suggested-by: Dexuan Cui <decui@microsoft.com>
Signed-off-by: Michael Kelley <mhklinux@outlook.com>
Acked-by: Wei Liu <wei.liu@kernel.org>
Link: https://lore.kernel.org/r/20241106154247.2271-2-mhklinux@outlook.com
Signed-off-by: Wei Liu <wei.liu@kernel.org>
Message-ID: <20241106154247.2271-2-mhklinux@outlook.com>

drivers/hv/hv_util.c

index c4f525325790fa4c971c3e5d3280afecc12d9b4c..3707222201344af2faabae6366d2dfc4036280ac 100644 (file)
@@ -590,10 +590,8 @@ static int util_probe(struct hv_device *dev,
        srv->channel = dev->channel;
        if (srv->util_init) {
                ret = srv->util_init(srv);
-               if (ret) {
-                       ret = -ENODEV;
+               if (ret)
                        goto error1;
-               }
        }
 
        /*