mirror of
https://github.com/ipmitool/ipmitool.git
synced 2025-05-10 18:47:22 +00:00
fru: cleanup ipmi_fru_upg_ekeying
Cleanup ipmi_fru_upg_ekeying such that it exits from one place that handles cleanup. Signed-off-by: Patrick Venture <venture@google.com>
This commit is contained in:
parent
aef8a1ccb4
commit
1c4a00d26b
@ -3767,10 +3767,11 @@ ipmi_fru_get_multirec(struct ipmi_intf * intf, uint8_t id ,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
#define ERR_EXIT do { rc = -1; goto exit; } while(0)
|
||||||
ipmi_fru_upg_ekeying(struct ipmi_intf * intf,
|
|
||||||
char * pFileName,
|
static
|
||||||
uint8_t fruId)
|
int
|
||||||
|
ipmi_fru_upg_ekeying(struct ipmi_intf *intf, char *pFileName, uint8_t fruId)
|
||||||
{
|
{
|
||||||
struct fru_info fruInfo = {0};
|
struct fru_info fruInfo = {0};
|
||||||
uint8_t *buf = NULL;
|
uint8_t *buf = NULL;
|
||||||
@ -3778,59 +3779,51 @@ ipmi_fru_upg_ekeying(struct ipmi_intf * intf,
|
|||||||
uint32_t fruMultiRecSize = 0;
|
uint32_t fruMultiRecSize = 0;
|
||||||
uint32_t offFileMultiRec = 0;
|
uint32_t offFileMultiRec = 0;
|
||||||
uint32_t fileMultiRecSize = 0;
|
uint32_t fileMultiRecSize = 0;
|
||||||
|
int rc = 0;
|
||||||
|
|
||||||
if (!pFileName) {
|
if (!pFileName) {
|
||||||
lprintf(LOG_ERR, "File expected, but none given.");
|
lprintf(LOG_ERR, "File expected, but none given.");
|
||||||
return -1;
|
ERR_EXIT;
|
||||||
}
|
}
|
||||||
if (ipmi_fru_get_multirec_location_from_fru(intf, fruId, &fruInfo,
|
if (ipmi_fru_get_multirec_location_from_fru(intf, fruId, &fruInfo,
|
||||||
&offFruMultiRec, &fruMultiRecSize) != 0) {
|
&offFruMultiRec, &fruMultiRecSize) != 0) {
|
||||||
lprintf(LOG_ERR, "Failed to get multirec location from FRU.");
|
lprintf(LOG_ERR, "Failed to get multirec location from FRU.");
|
||||||
return -1;
|
ERR_EXIT;
|
||||||
}
|
}
|
||||||
lprintf(LOG_DEBUG, "FRU Size : %lu\n", fruMultiRecSize);
|
lprintf(LOG_DEBUG, "FRU Size : %lu\n", fruMultiRecSize);
|
||||||
lprintf(LOG_DEBUG, "Multi Rec offset: %lu\n", offFruMultiRec);
|
lprintf(LOG_DEBUG, "Multi Rec offset: %lu\n", offFruMultiRec);
|
||||||
if (ipmi_fru_get_multirec_size_from_file(pFileName, &fileMultiRecSize,
|
if (ipmi_fru_get_multirec_size_from_file(pFileName, &fileMultiRecSize,
|
||||||
&offFileMultiRec) != 0) {
|
&offFileMultiRec) != 0) {
|
||||||
lprintf(LOG_ERR, "Failed to get multirec size from file '%s'.", pFileName);
|
lprintf(LOG_ERR, "Failed to get multirec size from file '%s'.", pFileName);
|
||||||
return -1;
|
ERR_EXIT;
|
||||||
}
|
}
|
||||||
buf = malloc(fileMultiRecSize);
|
buf = malloc(fileMultiRecSize);
|
||||||
if (!buf) {
|
if (!buf) {
|
||||||
lprintf(LOG_ERR, "ipmitool: malloc failure");
|
lprintf(LOG_ERR, "ipmitool: malloc failure");
|
||||||
return -1;
|
ERR_EXIT;
|
||||||
}
|
}
|
||||||
if (ipmi_fru_get_multirec_from_file(pFileName, buf, fileMultiRecSize,
|
if (ipmi_fru_get_multirec_from_file(pFileName, buf, fileMultiRecSize,
|
||||||
offFileMultiRec) != 0) {
|
offFileMultiRec) != 0) {
|
||||||
lprintf(LOG_ERR, "Failed to get multirec from file '%s'.", pFileName);
|
lprintf(LOG_ERR, "Failed to get multirec from file '%s'.", pFileName);
|
||||||
if (buf) {
|
ERR_EXIT;
|
||||||
free(buf);
|
|
||||||
buf = NULL;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
if (ipmi_fru_get_adjust_size_from_buffer(buf, &fileMultiRecSize) != 0) {
|
if (ipmi_fru_get_adjust_size_from_buffer(buf, &fileMultiRecSize) != 0) {
|
||||||
lprintf(LOG_ERR, "Failed to adjust size from buffer.");
|
lprintf(LOG_ERR, "Failed to adjust size from buffer.");
|
||||||
if (buf) {
|
ERR_EXIT;
|
||||||
free(buf);
|
|
||||||
buf = NULL;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
if (write_fru_area(intf, &fruInfo, fruId, 0, offFruMultiRec,
|
if (write_fru_area(intf, &fruInfo, fruId, 0, offFruMultiRec,
|
||||||
fileMultiRecSize, buf) != 0) {
|
fileMultiRecSize, buf) != 0) {
|
||||||
lprintf(LOG_ERR, "Failed to write FRU area.");
|
lprintf(LOG_ERR, "Failed to write FRU area.");
|
||||||
if (buf) {
|
ERR_EXIT;
|
||||||
free(buf);
|
|
||||||
buf = NULL;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (buf) {
|
|
||||||
free(buf);
|
|
||||||
buf = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
lprintf(LOG_INFO, "Done upgrading Ekey.");
|
lprintf(LOG_INFO, "Done upgrading Ekey.");
|
||||||
return 0;
|
|
||||||
|
exit:
|
||||||
|
free(buf);
|
||||||
|
buf = NULL;
|
||||||
|
|
||||||
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ipmi_fru_upgekey_help - print help text for 'upgEkey'
|
/* ipmi_fru_upgekey_help - print help text for 'upgEkey'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user