From 0cb662390448586f929342fbf48bea6417e6296f Mon Sep 17 00:00:00 2001 From: Vasant Hegde Date: Tue, 10 Oct 2017 11:10:18 +0530 Subject: hdata/vpd: Improve vpd node find logic Use dt_find_by_name_addr() instead of dt_find_by_name(). That way we can avoid unnecessary memory allocation/cleanup. CC: Ananth N Mavinakayanahalli Signed-off-by: Vasant Hegde Signed-off-by: Stewart Smith --- hdata/vpd.c | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/hdata/vpd.c b/hdata/vpd.c index df9e1bf..6abbd59 100644 --- a/hdata/vpd.c +++ b/hdata/vpd.c @@ -435,8 +435,6 @@ struct dt_node *dt_add_vpd_node(const struct HDIF_common_hdr *hdr, const void *fruvpd; const char *name; uint64_t addr; - char *lname; - int len; fru_id = HDIF_get_idata(hdr, indx_fru, &fru_id_sz); if (!fru_id) @@ -455,19 +453,9 @@ struct dt_node *dt_add_vpd_node(const struct HDIF_common_hdr *hdr, return NULL; name = vpd_map_name(entry->fru_id); - addr = (uint64_t)be16_to_cpu(entry->rsrc_id); - len = strlen(name) + STR_MAX_CHARS(addr) + 2; - lname = zalloc(len); - if (!lname) { - prerror("VPD: Failed to allocate memory\n"); - return NULL; - } - - snprintf(lname, len, "%s@%llx", name, (long long)addr); - + addr = be16_to_cpu(entry->rsrc_id); /* Get the node already created */ - node = dt_find_by_name(dt_vpd, lname); - free(lname); + node = dt_find_by_name_addr(dt_vpd, name, addr); /* * It is unlikely that node not found because vpd nodes have the * corresponding slca entry which we would have used to populate the vpd -- cgit v1.1