]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
platform/x86/intel/vsec: Return real error codes from registration path
authorDavid E. Box <david.e.box@linux.intel.com>
Fri, 13 Mar 2026 01:51:44 +0000 (18:51 -0700)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Tue, 17 Mar 2026 16:51:17 +0000 (18:51 +0200)
Stop collapsing registration results into booleans. Make
intel_vsec_walk_header() return int and propagate the first non-zero error
from intel_vsec_register_device(). intel_vsec_register() now returns that
error directly and 0 on success.

This preserves success behavior while surfacing meaningful errors instead
of hiding them behind a bool/-ENODEV, which makes debugging and probe
ordering issues clearer.

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Link: https://patch.msgid.link/20260313015202.3660072-6-david.e.box@linux.intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/platform/x86/intel/vsec.c

index a547e4b982453776b93a71f85edaf90911dd4ff3..34b2c19ecff05c4f75aca3acfd296c77d4395e1f 100644 (file)
@@ -461,20 +461,19 @@ static int intel_vsec_register_device(struct device *dev,
        return -EAGAIN;
 }
 
-static bool intel_vsec_walk_header(struct device *dev,
-                                  const struct intel_vsec_platform_info *info)
+static int intel_vsec_walk_header(struct device *dev,
+                                 const struct intel_vsec_platform_info *info)
 {
        struct intel_vsec_header **header = info->headers;
-       bool have_devices = false;
        int ret;
 
        for ( ; *header; header++) {
                ret = intel_vsec_register_device(dev, *header, info, info->base_addr);
-               if (!ret)
-                       have_devices = true;
+               if (ret)
+                       return ret;
        }
 
-       return have_devices;
+       return 0;
 }
 
 static bool intel_vsec_walk_dvsec(struct pci_dev *pdev,
@@ -580,10 +579,7 @@ int intel_vsec_register(struct device *dev,
        if (!dev || !info || !info->headers)
                return -EINVAL;
 
-       if (!intel_vsec_walk_header(dev, info))
-               return -ENODEV;
-       else
-               return 0;
+       return intel_vsec_walk_header(dev, info);
 }
 EXPORT_SYMBOL_NS_GPL(intel_vsec_register, "INTEL_VSEC");