svn commit: r286234 - head/sys/boot/common

Andriy Gapon avg at FreeBSD.org
Mon Aug 3 17:56:17 UTC 2015


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


More information about the svn-src-head mailing list