On Wed, May 25, 2011 at 09:34:57PM +0300, Mika Westerberg wrote: > On Wed, May 25, 2011 at 10:09:40AM -0400, Dave Anderson wrote: > > > > > > ----- Original Message ----- > > > Hello Dave, > > > > > > While I was investigating ARM support for CONFIG_SPARSEMEM, I noticed > > > read_module_unwind_table in unwind_arm.c would call free(tbl->idx) twice > > > if(!readmem(idx_start, KVADDR, tbl->idx, idx, size, > > > "module unwind index table", RETURN_ON_ERROR)) > > > > > > I think you can remove free(tbl->idx) which just before "return FALSE". > > > > > > Takuo > > > > The ARM code is maintained by the Jan and Mika, but you are correct. > > I also note that it would do a free(NULL) in the case of a calloc() > > failure just above that. > > Yeah, my bad. I'll send a patch for that asap. Here is the patch. Hope I got it right this time. Thanks, MW diff --git a/unwind_arm.c b/unwind_arm.c index 18fdad9..fd6ac65 100644 --- a/unwind_arm.c +++ b/unwind_arm.c @@ -185,8 +185,10 @@ init_kernel_unwind_table(void) /* now read in the index table */ if (!readmem(idx_start, KVADDR, kernel_unwind_table->idx, idx_size, - "master kernel unwind table", RETURN_ON_ERROR)) + "master kernel unwind table", RETURN_ON_ERROR)) { + free(kernel_unwind_table->idx); goto fail; + } kernel_unwind_table->start = kernel_unwind_table->idx; kernel_unwind_table->end = (struct unwind_idx *) @@ -210,7 +212,6 @@ init_kernel_unwind_table(void) return TRUE; fail: - free(kernel_unwind_table->idx); free(kernel_unwind_table); return FALSE; } @@ -283,7 +284,6 @@ read_module_unwind_table(struct unwind_table *tbl, ulong addr) fail: FREEBUF(buf); - free(tbl->idx); return FALSE; } -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility