diff --git a/include/util.h b/include/util.h index b633b123f..d4e3e3d20 100644 --- a/include/util.h +++ b/include/util.h @@ -118,21 +118,6 @@ extern void pr_vma(unsigned int loglevel, const struct vma_area *vma_area); } while (0) #define pr_info_vma_list(head) pr_vma_list(LOG_INFO, head) -/* - * Note since VMA_AREA_NONE = 0 we can skip assignment - * here and simply rely on xzalloc - */ -#define alloc_vma_area() \ - ({ \ - struct vma_area *p__ = xzalloc(sizeof(*p__)); \ - if (p__) { \ - vma_entry__init(&p__->vma); \ - p__->vm_file_fd = -1; \ - p__->vma.fd = -1; \ - } \ - p__; \ - }) - extern int move_img_fd(int *img_fd, int want_fd); extern int close_safe(int *fd); diff --git a/include/vma.h b/include/vma.h index 03994a6eb..c40d5438c 100644 --- a/include/vma.h +++ b/include/vma.h @@ -31,6 +31,7 @@ struct vma_area { struct stat *st; }; +extern struct vma_area *alloc_vma_area(void); extern int collect_mappings(pid_t pid, struct vm_area_list *vma_area_list); extern void free_mappings(struct vm_area_list *vma_area_list); extern bool privately_dump_vma(struct vma_area *vma); diff --git a/util.c b/util.c index 118ef89a6..053980a45 100644 --- a/util.c +++ b/util.c @@ -642,3 +642,21 @@ out: close(fd); return ret; } + +/* + * Note since VMA_AREA_NONE = 0 we can skip assignment + * here and simply rely on xzalloc + */ +struct vma_area *alloc_vma_area(void) +{ + struct vma_area *p; + + p = xzalloc(sizeof(*p)); + if (p) { + vma_entry__init(&p->vma); + p->vm_file_fd = -1; + p->vma.fd = -1; + } + + return p; +}