]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
PCI: endpoint: Simplify pci_epc_get()
authorZijun Hu <quic_zijuhu@quicinc.com>
Tue, 10 Dec 2024 14:00:19 +0000 (22:00 +0800)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 12 Dec 2024 19:06:50 +0000 (13:06 -0600)
Simplify pci_epc_get() implementation by using class_find_device_by_name().

Link: https://lore.kernel.org/r/20241210-pci-epc-core_fix-v3-2-4d86dd573e4b@quicinc.com
Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
drivers/pci/endpoint/pci-epc-core.c

index 75c66882900343a112064ab72b6f5e4a8235e2c2..575a0f208c9521c4a408af0a1c72288c1bef881a 100644 (file)
@@ -60,26 +60,17 @@ struct pci_epc *pci_epc_get(const char *epc_name)
        int ret = -EINVAL;
        struct pci_epc *epc;
        struct device *dev;
-       struct class_dev_iter iter;
 
-       class_dev_iter_init(&iter, &pci_epc_class, NULL, NULL);
-       while ((dev = class_dev_iter_next(&iter))) {
-               if (strcmp(epc_name, dev_name(dev)))
-                       continue;
+       dev = class_find_device_by_name(&pci_epc_class, epc_name);
+       if (!dev)
+               goto err;
 
-               epc = to_pci_epc(dev);
-               if (!try_module_get(epc->ops->owner)) {
-                       ret = -EINVAL;
-                       goto err;
-               }
-
-               class_dev_iter_exit(&iter);
-               get_device(&epc->dev);
+       epc = to_pci_epc(dev);
+       if (try_module_get(epc->ops->owner))
                return epc;
-       }
 
 err:
-       class_dev_iter_exit(&iter);
+       put_device(dev);
        return ERR_PTR(ret);
 }
 EXPORT_SYMBOL_GPL(pci_epc_get);