From 86e851e1e263c79f19eb9db52553de99f19b8bb9 Mon Sep 17 00:00:00 2001 From: Spencer Oliver Date: Sat, 29 May 2010 15:43:42 +0100 Subject: [PATCH] nor: fix memory leaks during probe Fix similar memory leaks as per commit: ef72484b785ec7462a0415afea679d08b864c7fb Signed-off-by: Spencer Oliver --- src/flash/nor/avrf.c | 6 ++++++ src/flash/nor/pic32mx.c | 6 ++++++ src/flash/nor/stellaris.c | 6 ++++++ src/flash/nor/stm32x.c | 6 ++++++ src/flash/nor/tms470.c | 6 ++++++ 5 files changed, 30 insertions(+) diff --git a/src/flash/nor/avrf.c b/src/flash/nor/avrf.c index 7cdab5193f..8472d8362c 100644 --- a/src/flash/nor/avrf.c +++ b/src/flash/nor/avrf.c @@ -324,6 +324,12 @@ static int avrf_probe(struct flash_bank *bank) if (avr_info != NULL) { + if (bank->sectors) + { + free(bank->sectors); + bank->sectors = NULL; + } + // chip found bank->base = 0x00000000; bank->size = (avr_info->flash_page_size * avr_info->flash_page_num); diff --git a/src/flash/nor/pic32mx.c b/src/flash/nor/pic32mx.c index 58009ae57b..2fe864d4f0 100644 --- a/src/flash/nor/pic32mx.c +++ b/src/flash/nor/pic32mx.c @@ -560,6 +560,12 @@ static int pic32mx_probe(struct flash_bank *bank) LOG_INFO("flash size = %" PRId32 "kbytes", num_pages / 1024); + if (bank->sectors) + { + free(bank->sectors); + bank->sectors = NULL; + } + /* calculate numbers of pages */ num_pages /= page_size; bank->size = (num_pages * page_size); diff --git a/src/flash/nor/stellaris.c b/src/flash/nor/stellaris.c index 38374ffe50..f7e2e8d9df 100644 --- a/src/flash/nor/stellaris.c +++ b/src/flash/nor/stellaris.c @@ -1065,6 +1065,12 @@ static int stellaris_probe(struct flash_bank *bank) if (retval != ERROR_OK) return retval; + if (bank->sectors) + { + free(bank->sectors); + bank->sectors = NULL; + } + /* provide this for the benefit of the NOR flash framework */ bank->size = 1024 * stellaris_info->num_pages; bank->num_sectors = stellaris_info->num_pages; diff --git a/src/flash/nor/stm32x.c b/src/flash/nor/stm32x.c index d11a8edc64..8a3b83232c 100644 --- a/src/flash/nor/stm32x.c +++ b/src/flash/nor/stm32x.c @@ -775,6 +775,12 @@ static int stm32x_probe(struct flash_bank *bank) /* calculate numbers of pages */ num_pages /= (page_size / 1024); + if (bank->sectors) + { + free(bank->sectors); + bank->sectors = NULL; + } + bank->base = 0x08000000; bank->size = (num_pages * page_size); bank->num_sectors = num_pages; diff --git a/src/flash/nor/tms470.c b/src/flash/nor/tms470.c index c1681f1971..343c43ed87 100644 --- a/src/flash/nor/tms470.c +++ b/src/flash/nor/tms470.c @@ -139,6 +139,12 @@ static int tms470_read_part_info(struct flash_bank *bank) rom_flash = (device_ident_reg >> 10) & 1; part_number = (device_ident_reg >> 3) & 0x7f; + if (bank->sectors) + { + free(bank->sectors); + bank->sectors = NULL; + } + /* * If the part number is known, determine if the flash bank is valid * based on the base address being within the known flash bank -- 2.30.2