|
@@ -200,8 +200,7 @@ struct pci_epf *pci_epf_create(const char *name)
|
|
|
int ret;
|
|
|
struct pci_epf *epf;
|
|
|
struct device *dev;
|
|
|
- char *func_name;
|
|
|
- char *buf;
|
|
|
+ int len;
|
|
|
|
|
|
epf = kzalloc(sizeof(*epf), GFP_KERNEL);
|
|
|
if (!epf) {
|
|
@@ -209,20 +208,11 @@ struct pci_epf *pci_epf_create(const char *name)
|
|
|
goto err_ret;
|
|
|
}
|
|
|
|
|
|
- buf = kstrdup(name, GFP_KERNEL);
|
|
|
- if (!buf) {
|
|
|
- ret = -ENOMEM;
|
|
|
- goto free_epf;
|
|
|
- }
|
|
|
-
|
|
|
- func_name = buf;
|
|
|
- buf = strchrnul(buf, '.');
|
|
|
- *buf = '\0';
|
|
|
-
|
|
|
- epf->name = kstrdup(func_name, GFP_KERNEL);
|
|
|
+ len = strchrnul(name, '.') - name;
|
|
|
+ epf->name = kstrndup(name, len, GFP_KERNEL);
|
|
|
if (!epf->name) {
|
|
|
ret = -ENOMEM;
|
|
|
- goto free_func_name;
|
|
|
+ goto free_epf;
|
|
|
}
|
|
|
|
|
|
dev = &epf->dev;
|
|
@@ -238,16 +228,12 @@ struct pci_epf *pci_epf_create(const char *name)
|
|
|
if (ret)
|
|
|
goto put_dev;
|
|
|
|
|
|
- kfree(func_name);
|
|
|
return epf;
|
|
|
|
|
|
put_dev:
|
|
|
put_device(dev);
|
|
|
kfree(epf->name);
|
|
|
|
|
|
-free_func_name:
|
|
|
- kfree(func_name);
|
|
|
-
|
|
|
free_epf:
|
|
|
kfree(epf);
|
|
|
|