diff options
-rw-r--r-- | fs/jffs2/jffs2_1pass.c | 17 | ||||
-rw-r--r-- | lib_ppc/bootm.c | 2 |
2 files changed, 16 insertions, 3 deletions
diff --git a/fs/jffs2/jffs2_1pass.c b/fs/jffs2/jffs2_1pass.c index 8c9e2eb..b61a6f9 100644 --- a/fs/jffs2/jffs2_1pass.c +++ b/fs/jffs2/jffs2_1pass.c @@ -1457,6 +1457,8 @@ jffs2_1pass_build_lists(struct part_info * part) if (!sumptr) { putstr("Can't get memory for summary " "node!\n"); + free(buf); + jffs2_free_cache(part); return 0; } memcpy(sumptr + sumlen - buf_len, buf + @@ -1478,8 +1480,11 @@ jffs2_1pass_build_lists(struct part_info * part) if (buf_size && sumlen > buf_size) free(sumptr); - if (ret < 0) + if (ret < 0) { + free(buf); + jffs2_free_cache(part); return 0; + } if (ret) continue; @@ -1592,8 +1597,11 @@ jffs2_1pass_build_lists(struct part_info * part) break; if (insert_node(&pL->frag, (u32) part->offset + - ofs) == NULL) + ofs) == NULL) { + free(buf); + jffs2_free_cache(part); return 0; + } if (max_totlen < node->totlen) max_totlen = node->totlen; break; @@ -1619,8 +1627,11 @@ jffs2_1pass_build_lists(struct part_info * part) if (! (counterN%100)) puts ("\b\b. "); if (insert_node(&pL->dir, (u32) part->offset + - ofs) == NULL) + ofs) == NULL) { + free(buf); + jffs2_free_cache(part); return 0; + } if (max_totlen < node->totlen) max_totlen = node->totlen; counterN++; diff --git a/lib_ppc/bootm.c b/lib_ppc/bootm.c index 0d702bf..8385749 100644 --- a/lib_ppc/bootm.c +++ b/lib_ppc/bootm.c @@ -94,6 +94,7 @@ static void boot_jump_linux(bootm_headers_t *images) #endif debug (" Booting using OF flat tree...\n"); + WATCHDOG_RESET (); (*kernel) ((bd_t *)of_flat_tree, 0, 0, EPAPR_MAGIC, CONFIG_SYS_BOOTMAPSZ, 0, 0); /* does not return */ @@ -117,6 +118,7 @@ static void boot_jump_linux(bootm_headers_t *images) bd_t *kbd = images->kbd; debug (" Booting using board info...\n"); + WATCHDOG_RESET (); (*kernel) (kbd, initrd_start, initrd_end, cmd_start, cmd_end, 0, 0); /* does not return */ |