diff options
author | Stewart Smith <stewart@linux.vnet.ibm.com> | 2017-08-23 16:11:16 +1000 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2017-08-24 12:59:15 +1000 |
commit | 8a318930b2dc72e402cc4673394e9f49dac30dbe (patch) | |
tree | f52958831441c281292df4b1d9ccac5d00f3c72b /libflash | |
parent | 8654891fa90161292201b8f7a37e1c1eeef14a71 (diff) | |
download | skiboot-8a318930b2dc72e402cc4673394e9f49dac30dbe.zip skiboot-8a318930b2dc72e402cc4673394e9f49dac30dbe.tar.gz skiboot-8a318930b2dc72e402cc4673394e9f49dac30dbe.tar.bz2 |
libflash: fix memory leak on flash_exit()
LeakSanitizer caught this with libflash/test/test-flash.c:
Direct leak of 4096 byte(s) in 1 object(s) allocated from:
#0 0x7f72546ee850 in malloc (/lib64/libasan.so.4+0xde850)
#1 0x405ff0 in flash_init libflash/test/../libflash.c:830
#2 0x408632 in main libflash/test/test-flash.c:382
#3 0x7f7253540509 in __libc_start_main (/lib64/libc.so.6+0x20509)
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'libflash')
-rw-r--r-- | libflash/libflash.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libflash/libflash.c b/libflash/libflash.c index 38f87b8..bf2e58e 100644 --- a/libflash/libflash.c +++ b/libflash/libflash.c @@ -863,8 +863,11 @@ bail: void flash_exit(struct blocklevel_device *bl) { /* XXX Make sure we are idle etc... */ - if (bl) - free(container_of(bl, struct flash_chip, bl)); + if (bl) { + struct flash_chip *c = container_of(bl, struct flash_chip, bl); + free(c->smart_buf); + free(c); + } } void flash_exit_close(struct blocklevel_device *bl, void (*close)(struct spi_flash_ctrl *ctrl)) |