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

Reply via email to