Hi.
This patch adds the check of the return value of readmem().
Thanks
Ken'ichi Ohmichi
diff -puN makedumpfile.org/makedumpfile.c makedumpfile/makedumpfile.c
--- makedumpfile.org/makedumpfile.c 2006-10-04 16:34:21.000000000 +0900
+++ makedumpfile/makedumpfile.c 2006-10-04 16:34:46.000000000 +0900
@@ -1842,8 +1842,11 @@ reset_bitmap_of_free_pages(struct DumpIn
/* for (previous = head, curr = head->next;
curr != head; previous=curr, curr = curr->next) { */
previous = head;
- readmem(info, head + OFFSET(list_head.next), &curr,
- sizeof curr);
+ if (!readmem(info, head + OFFSET(list_head.next), &curr,
+ sizeof curr)) {
+ ERRMSG("Can't get next list_head.\n");
+ return FALSE;
+ }
for (;curr != head;) {
/* start_pfn = page_to_pfn(list_entry(curr, struct
page, lru)); */
curr_page = curr - OFFSET(page.lru);
@@ -1852,8 +1855,11 @@ reset_bitmap_of_free_pages(struct DumpIn
return FALSE;
/* if (previous != curr->prev) */
- readmem(info, curr + OFFSET(list_head.prev), &curr_prev,
- sizeof curr_prev);
+ if (!readmem(info, curr + OFFSET(list_head.prev),
+ &curr_prev, sizeof curr_prev)) {
+ ERRMSG("Can't get prev list_head.\n");
+ return FALSE;
+ }
if (previous != curr_prev) {
retcd = ANALYSIS_FAILED;
return FALSE;
@@ -1865,16 +1871,22 @@ reset_bitmap_of_free_pages(struct DumpIn
free_page_cnt += i;
previous=curr;
- readmem(info, curr + OFFSET(list_head.next), &curr,
- sizeof curr);
+ if (!readmem(info, curr + OFFSET(list_head.next), &curr,
+ sizeof curr)) {
+ ERRMSG("Can't get next list_head.\n");
+ return FALSE;
+ }
}
}
/*
* Check the number of free pages.
*/
- readmem(info, node_zones + OFFSET(zone.free_pages),
- &free_pages, sizeof free_pages);
+ if (!readmem(info, node_zones + OFFSET(zone.free_pages), &free_pages,
+ sizeof free_pages)) {
+ ERRMSG("Can't get free_pages.\n");
+ return FALSE;
+ }
if (free_pages != free_page_cnt) {
retcd = ANALYSIS_FAILED;
return FALSE;
@@ -1905,8 +1917,11 @@ dump_memory_nodes(struct DumpInfo *info)
}
node_zones = pgdat + OFFSET(pglist_data.node_zones);
for (i = 0; i < vt->nr_zones; i++) {
- readmem(info, node_zones + OFFSET(zone.spanned_pages),
- &spanned_pages, sizeof spanned_pages);
+ if (!readmem(info,node_zones+OFFSET(zone.spanned_pages),
+ &spanned_pages, sizeof spanned_pages)) {
+ ERRMSG("Can't get spanned_pages.\n");
+ return FALSE;
+ }
if (!spanned_pages)
continue;
if (!reset_bitmap_of_free_pages(info, node_zones))
_
_______________________________________________
fastboot mailing list
[email protected]
https://lists.osdl.org/mailman/listinfo/fastboot