hw/nvram: Fix Memory Leak in Xilinx eFuse QOM

Signed-off-by: Tong Ho <tong.ho@xilinx.com>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Reviewed-by: Francisco Iglesias <frasse.iglesias@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211015203532.2463705-2-tong.ho@xilinx.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
Tong Ho 2021-10-15 13:35:30 -07:00 committed by Laurent Vivier
parent f18d403f15
commit c4e4d0d92b

View file

@ -144,10 +144,11 @@ static bool efuse_ro_bits_find(XlnxEFuse *s, uint32_t k)
bool xlnx_efuse_set_bit(XlnxEFuse *s, unsigned int bit) bool xlnx_efuse_set_bit(XlnxEFuse *s, unsigned int bit)
{ {
if (efuse_ro_bits_find(s, bit)) { if (efuse_ro_bits_find(s, bit)) {
g_autofree char *path = object_get_canonical_path(OBJECT(s));
qemu_log_mask(LOG_GUEST_ERROR, "%s: WARN: " qemu_log_mask(LOG_GUEST_ERROR, "%s: WARN: "
"Ignored setting of readonly efuse bit<%u,%u>!\n", "Ignored setting of readonly efuse bit<%u,%u>!\n",
object_get_canonical_path(OBJECT(s)), path, (bit / 32), (bit % 32));
(bit / 32), (bit % 32));
return false; return false;
} }
@ -202,9 +203,11 @@ static void efuse_realize(DeviceState *dev, Error **errp)
efuse_ro_bits_sort(s); efuse_ro_bits_sort(s);
if ((s->efuse_size % 32) != 0) { if ((s->efuse_size % 32) != 0) {
g_autofree char *path = object_get_canonical_path(OBJECT(s));
error_setg(errp, error_setg(errp,
"%s.efuse-size: %u: property value not multiple of 32.", "%s.efuse-size: %u: property value not multiple of 32.",
object_get_canonical_path(OBJECT(dev)), s->efuse_size); path, s->efuse_size);
return; return;
} }