]> git.sur5r.net Git - openocd/commitdiff
target: free target SMP list on shutdown
authorMatthias Welwarsky <matthias.welwarsky@sysgo.com>
Fri, 6 Apr 2018 10:38:12 +0000 (12:38 +0200)
committerMatthias Welwarsky <matthias@welwarsky.de>
Sat, 7 Apr 2018 19:33:01 +0000 (20:33 +0100)
On SMP targets, the "target smp" command creates a list of targets
that belong to the SMP cluster. Free this list when a target gets
destroyed on shutdown. For simplicity, the complete list is free'd as
soon as the first target of the SMP cluster is destroyed instead of
individually removing targets from the list.

Change-Id: Ie217ae1efb2e819c288ff3b1155aeaf0a19b06be
Signed-off-by: Matthias Welwarsky <matthias.welwarsky@sysgo.com>
Reviewed-on: http://openocd.zylin.com/4481
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
src/target/target.c

index ac2e1d030abed103e52c9de79e20aafb945ddd6e..729a31bf59b057a41d403c3a2cb365af55a4657f 100644 (file)
@@ -1910,6 +1910,18 @@ static void target_destroy(struct target *target)
                free(target->working_areas);
        }
 
+       /* release the targets SMP list */
+       if (target->smp) {
+               struct target_list *head = target->head;
+               while (head != NULL) {
+                       struct target_list *pos = head->next;
+                       head->target->smp = 0;
+                       free(head);
+                       head = pos;
+               }
+               target->smp = 0;
+       }
+
        free(target->type);
        free(target->trace_info);
        free(target->fileio_info);