Commit 50ee1061 authored by Rolf Evers-Fischer's avatar Rolf Evers-Fischer Committed by Lorenzo Pieralisi

PCI: endpoint: Remove goto labels in pci_epf_create()

Remove the pci_epf_create() goto labels completely and handle the
errors at the respective call site to simplify the function error
handling.
Signed-off-by: default avatarRolf Evers-Fischer <rolf.evers.fischer@aptiv.com>
Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
parent 9eef6a5c
...@@ -203,16 +203,14 @@ struct pci_epf *pci_epf_create(const char *name) ...@@ -203,16 +203,14 @@ struct pci_epf *pci_epf_create(const char *name)
int len; int len;
epf = kzalloc(sizeof(*epf), GFP_KERNEL); epf = kzalloc(sizeof(*epf), GFP_KERNEL);
if (!epf) { if (!epf)
ret = -ENOMEM; return ERR_PTR(-ENOMEM);
goto err_ret;
}
len = strchrnul(name, '.') - name; len = strchrnul(name, '.') - name;
epf->name = kstrndup(name, len, GFP_KERNEL); epf->name = kstrndup(name, len, GFP_KERNEL);
if (!epf->name) { if (!epf->name) {
ret = -ENOMEM; kfree(epf);
goto free_epf; return ERR_PTR(-ENOMEM);
} }
dev = &epf->dev; dev = &epf->dev;
...@@ -221,24 +219,18 @@ struct pci_epf *pci_epf_create(const char *name) ...@@ -221,24 +219,18 @@ struct pci_epf *pci_epf_create(const char *name)
dev->type = &pci_epf_type; dev->type = &pci_epf_type;
ret = dev_set_name(dev, "%s", name); ret = dev_set_name(dev, "%s", name);
if (ret) if (ret) {
goto put_dev; put_device(dev);
return ERR_PTR(ret);
}
ret = device_add(dev); ret = device_add(dev);
if (ret) if (ret) {
goto put_dev; put_device(dev);
return ERR_PTR(ret);
}
return epf; return epf;
put_dev:
put_device(dev);
return ERR_PTR(ret);
free_epf:
kfree(epf);
err_ret:
return ERR_PTR(ret);
} }
EXPORT_SYMBOL_GPL(pci_epf_create); EXPORT_SYMBOL_GPL(pci_epf_create);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment