This is an automated email from Gerrit. Aurelien Jacobs ([email protected]) just uploaded a new patch set to Gerrit, which you can find at http://openocd.zylin.com/171
-- gerrit commit 5ffa02d6499229e9fabd0daf16e3205973dc354b Author: Aurelien Jacobs <[email protected]> Date: Mon Oct 17 14:49:18 2011 +0200 at91sam7: ensure probed flash bank has a name (fix a segfault) Before this commit, openocd used to segfault when probing flash of an at91sam7x512 (which contains 2 banks of flash). This was due to the way it systematically insert a new flash bank without setting its name. Then, when get_flash_bank_by_name_noprobe() is called, it is doing a strcmp() on the non-initialized bank->name. This commit prevents allocation of second probed bank if it is already allocated (for example, if it is set in a target config file). If a new bank really needs to be allocated, it ensures that a default name is set. Change-Id: I38d15bef1fda2ec746efad37171975136cf7b371 Signed-off-by: Aurelien Jacobs <[email protected]> diff --git a/src/flash/nor/at91sam7.c b/src/flash/nor/at91sam7.c index ce4f8a9..bce1fd4 100644 --- a/src/flash/nor/at91sam7.c +++ b/src/flash/nor/at91sam7.c @@ -622,16 +622,19 @@ static int at91sam7_read_part_info(struct flash_bank *bank) { if (bnk > 0) { + if (!t_bank->next) { /* create a new flash bank element */ struct flash_bank *fb = malloc(sizeof(struct flash_bank)); fb->target = target; fb->driver = bank->driver; fb->driver_priv = malloc(sizeof(struct at91sam7_flash_bank)); + fb->name = "sam7_probed"; fb->next = NULL; - /* link created bank in 'flash_banks' list and redirect t_bank */ + /* link created bank in 'flash_banks' list */ t_bank->next = fb; - t_bank = fb; + } + t_bank = t_bank->next; } t_bank->bank_number = bnk; @@ -875,16 +878,19 @@ FLASH_BANK_COMMAND_HANDLER(at91sam7_flash_bank_command) { if (bnk > 0) { + if (!t_bank->next) { /* create a new bank element */ struct flash_bank *fb = malloc(sizeof(struct flash_bank)); fb->target = target; fb->driver = bank->driver; fb->driver_priv = malloc(sizeof(struct at91sam7_flash_bank)); + fb->name = "sam7_probed"; fb->next = NULL; - /* link created bank in 'flash_banks' list and redirect t_bank */ + /* link created bank in 'flash_banks' list */ t_bank->next = fb; - t_bank = fb; + } + t_bank = t_bank->next; } t_bank->bank_number = bnk; -- ------------------------------------------------------------------------------ RSA(R) Conference 2012 Save $700 by Nov 18 Register now http://p.sf.net/sfu/rsa-sfdev2dev1 _______________________________________________ Openocd-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openocd-devel
