Fix a problem which made loader(8) load non-kld files twice.
For example, without this patch, the following three lines in /boot/loader.conf would result in /boot/root.img being preloaded twice, and two md(4) devices - md0 and md1 - being created. initmd_load="YES" initmd_type="md_image" initmd_name="/boot/root.img" Reviewed by: marcel@ MFC after: 1 month Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D3204
This commit is contained in:
parent
bf7c25adeb
commit
d8303f2c35
@ -102,6 +102,7 @@ COMMAND_SET(load, "load", "load a kernel or module", command_load);
|
||||
static int
|
||||
command_load(int argc, char *argv[])
|
||||
{
|
||||
struct preloaded_file *fp;
|
||||
char *typestr;
|
||||
int dofile, dokld, ch, error;
|
||||
|
||||
@ -139,6 +140,13 @@ command_load(int argc, char *argv[])
|
||||
command_errmsg = "invalid load type";
|
||||
return(CMD_ERROR);
|
||||
}
|
||||
|
||||
fp = file_findfile(argv[1], typestr);
|
||||
if (fp) {
|
||||
sprintf(command_errbuf, "warning: file '%s' already loaded", argv[1]);
|
||||
return (CMD_ERROR);
|
||||
}
|
||||
|
||||
return (file_loadraw(argv[1], typestr, 1) ? CMD_OK : CMD_ERROR);
|
||||
}
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user