Date: Mon, 03 Aug 2015 20:54:51 +0300 From: Andriy Gapon <avg@FreeBSD.org> To: Edward Tomasz Napierala <trasz@FreeBSD.org>, src-committers@FreeBSD.org, svn-src-all@FreeBSD.org, svn-src-head@FreeBSD.org Subject: Re: svn commit: r286234 - head/sys/boot/common Message-ID: <55BFAAEB.2020900@FreeBSD.org> In-Reply-To: <201508031627.t73GRbTB092225@repo.freebsd.org> References: <201508031627.t73GRbTB092225@repo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 03/08/2015 19:27, Edward Tomasz Napierala wrote: > Author: trasz > Date: Mon Aug 3 16:27:36 2015 > New Revision: 286234 > URL: https://svnweb.freebsd.org/changeset/base/286234 > > Log: > Fix a problem which made loader(8) load non-kld files twice. What was the problem? The change looks like defensive coding, but it's not clear why the loader would attempt to load the same file more than once in the first place. > 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 > > Modified: > head/sys/boot/common/module.c > > Modified: head/sys/boot/common/module.c > ============================================================================== > --- head/sys/boot/common/module.c Mon Aug 3 14:58:46 2015 (r286233) > +++ head/sys/boot/common/module.c Mon Aug 3 16:27:36 2015 (r286234) > @@ -102,6 +102,7 @@ COMMAND_SET(load, "load", "load a kernel > 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); > } > /* > -- Andriy Gapon
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?55BFAAEB.2020900>