/* SPDX-License-Identifier: BSD-3-Clause
*
- * Copyright 2016,2018 NXP
+ * Copyright 2016,2018-2019 NXP
*
*/
{
uint16_t dev_id;
char *t_ptr;
- char *sep = NULL;
+ const char *sep;
uint8_t sep_exists = 0;
+ int ret = -1;
DPAA2_BUS_DEBUG("Parsing dev=(%s)", name);
} else {
DPAA2_BUS_DEBUG("Invalid device for matching (%s).",
name);
+ ret = -EINVAL;
goto err_out;
}
} else
- sep = strdup(name);
+ sep = name;
jump_out:
/* Validate device name */
strncmp("dpdmai", sep, 6) &&
strncmp("dpdmux", sep, 6)) {
DPAA2_BUS_DEBUG("Unknown or unsupported device (%s)", sep);
+ ret = -EINVAL;
goto err_out;
}
t_ptr = strchr(sep, '.');
if (!t_ptr || sscanf(t_ptr + 1, "%hu", &dev_id) != 1) {
DPAA2_BUS_ERR("Missing device id in device name (%s)", sep);
+ ret = -EINVAL;
goto err_out;
}
if (addr)
strcpy(addr, sep);
- return 0;
+ ret = 0;
err_out:
- if (!sep_exists && sep)
- free(sep);
- return -EINVAL;
+ return ret;
}
static int
goto scan_fail;
/* Scan devices on the group */
- snprintf(fslmc_dirpath, sizeof(fslmc_dirpath), "%s/%d/devices",
- VFIO_IOMMU_GROUP_PATH, groupid);
+ sprintf(fslmc_dirpath, "%s/%s", SYSFS_FSL_MC_DEVICES, fslmc_container);
dir = opendir(fslmc_dirpath);
if (!dir) {
DPAA2_BUS_ERR("Unable to open VFIO group directory");
}
while ((entry = readdir(dir)) != NULL) {
- if (entry->d_name[0] == '.' || entry->d_type != DT_LNK)
+ if (entry->d_name[0] == '.' || entry->d_type != DT_DIR)
continue;
ret = scan_one_fslmc_device(entry->d_name);