diff --git a/src/flash/nor/lpc2000.c b/src/flash/nor/lpc2000.c
index 18085432b9a1d1f95cc5ddc348c19eb0339f36ea..15d9eb81c5c4ff29324124199fd33455946195fe 100644
--- a/src/flash/nor/lpc2000.c
+++ b/src/flash/nor/lpc2000.c
@@ -1207,6 +1207,9 @@ static int get_lpc2000_part_id(struct flash_bank *bank, uint32_t *part_id)
 	   firmwares, so ignore it. */
 	lpc2000_iap_call(bank, iap_working_area, 54, param_table, result_table);
 
+	struct target *target = bank->target;
+	target_free_working_area(target, iap_working_area);
+
 	/* If the result is zero, the command probably didn't work out. */
 	if (result_table[0] == 0)
 		return LPC2000_INVALID_COMMAND;