diff options
author | Vasant Hegde <hegdevasant@linux.vnet.ibm.com> | 2017-10-10 11:10:18 +0530 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2017-10-16 21:51:28 -0500 |
commit | 0cb662390448586f929342fbf48bea6417e6296f (patch) | |
tree | 28e88570abedc4ca3cf8790a4bc2f9e0809cf5c5 /hdata | |
parent | 77190aa7d40dde305a598fa36810db0f5598c553 (diff) | |
download | skiboot-0cb662390448586f929342fbf48bea6417e6296f.zip skiboot-0cb662390448586f929342fbf48bea6417e6296f.tar.gz skiboot-0cb662390448586f929342fbf48bea6417e6296f.tar.bz2 |
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 <ananth@linux.vnet.ibm.com>
Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hdata')
-rw-r--r-- | hdata/vpd.c | 16 |
1 files 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 |