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
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to