struct maps_list *tmp;
struct pageframe *match, *pageframe = NULL;
long start, len, i;
- unsigned long long pf;
+ unsigned long long pf[10240];
int ret, error;
if (maps == NULL)
}
for (i = 0; i < len; i++) {
- ret = fread(&pf, 1, sizeof(pf), file);
- if (ret != sizeof(pf)) {
+ if (!ret)
+ ret = fread(&pf, 1,
+ MIN(sizeof(pf), len - i), file);
+ if (ret < 0) {
error = errno;
continue;
}
if (!pageframe)
pageframe = alloc_pageframe();
-
- pageframe_to_struct(pf, pageframe);
+ ret -= sizeof(pf[0]);
+ pageframe_to_struct(pf[ret / sizeof(pf[0])], pageframe);
if (add_to_tree) {
match = tree_to_pageframe(