diff options
author | royger <royger@FreeBSD.org> | 2017-05-09 09:53:18 +0000 |
---|---|---|
committer | royger <royger@FreeBSD.org> | 2017-05-09 09:53:18 +0000 |
commit | f20a7aeef0f6912c9d47d5ceb488ff7b745c5369 (patch) | |
tree | c81475e713b208d6570fe587744b6141305847c8 /sys/boot/common | |
parent | e776c54686e61cb89b170e3ec621f197edd73050 (diff) | |
download | FreeBSD-src-f20a7aeef0f6912c9d47d5ceb488ff7b745c5369.zip FreeBSD-src-f20a7aeef0f6912c9d47d5ceb488ff7b745c5369.tar.gz |
MFC r316754: loader/multiboot: fix multiboot loading
Sponsored by: Citrix Systems R&D
Diffstat (limited to 'sys/boot/common')
-rw-r--r-- | sys/boot/common/bootstrap.h | 1 | ||||
-rw-r--r-- | sys/boot/common/module.c | 16 |
2 files changed, 17 insertions, 0 deletions
diff --git a/sys/boot/common/bootstrap.h b/sys/boot/common/bootstrap.h index 472fc3e..a4c8939 100644 --- a/sys/boot/common/bootstrap.h +++ b/sys/boot/common/bootstrap.h @@ -229,6 +229,7 @@ void file_discard(struct preloaded_file *fp); void file_addmetadata(struct preloaded_file *fp, int type, size_t size, void *p); int file_addmodule(struct preloaded_file *fp, char *modname, int version, struct kernel_module **newmp); +void file_removemetadata(struct preloaded_file *fp); /* MI module loaders */ #ifdef __elfN diff --git a/sys/boot/common/module.c b/sys/boot/common/module.c index 15c4807..e96aabb 100644 --- a/sys/boot/common/module.c +++ b/sys/boot/common/module.c @@ -642,6 +642,22 @@ file_findmetadata(struct preloaded_file *fp, int type) return(md); } +/* + * Remove all metadata from the file. + */ +void +file_removemetadata(struct preloaded_file *fp) +{ + struct file_metadata *md, *next; + + for (md = fp->f_metadata; md != NULL; md = next) + { + next = md->md_next; + free(md); + } + fp->f_metadata = NULL; +} + struct file_metadata * metadata_next(struct file_metadata *md, int type) { |