diff --git a/cr-dump.c b/cr-dump.c index 229804d16..ee0d9815e 100644 --- a/cr-dump.c +++ b/cr-dump.c @@ -75,12 +75,13 @@ static int collect_mappings(pid_t pid, struct list_head *vma_area_list) pr_info("----------------------------------------\n"); ret = parse_maps(pid, vma_area_list, true); - if (ret) + if (ret < 0) goto err; pr_info_vma_list(vma_area_list); pr_info("----------------------------------------\n"); + ret = 0; err: return ret; diff --git a/cr-restore.c b/cr-restore.c index 11c2c4640..7ae515251 100644 --- a/cr-restore.c +++ b/cr-restore.c @@ -1661,7 +1661,7 @@ static void sigreturn_restore(pid_t pid) ret = parse_maps(pid, &self_vma_list, false); close_pid_proc(); - if (ret) + if (ret < 0) goto err; /* pr_info_vma_list(&self_vma_list); */ diff --git a/proc_parse.c b/proc_parse.c index d65a11d8a..7c35264d6 100644 --- a/proc_parse.c +++ b/proc_parse.c @@ -23,7 +23,7 @@ int parse_maps(pid_t pid, struct list_head *vma_area_list, bool use_map_files) unsigned long ino; char r,w,x,s; int dev_maj, dev_min; - int ret = -1; + int ret = -1, nr = 0; DIR *map_files_dir = NULL; FILE *maps = NULL; @@ -157,10 +157,11 @@ int parse_maps(pid_t pid, struct list_head *vma_area_list, bool use_map_files) } list_add_tail(&vma_area->list, vma_area_list); + nr++; } vma_area = NULL; - ret = 0; + ret = nr; err: if (maps)