[U-Boot] [PATCH] binman: ensure temp filenames don't collide

Simon Glass sjg at chromium.org
Thu Jul 19 01:32:04 UTC 2018


Hi Stephen,

On 16 July 2018 at 16:51, Stephen Warren <swarren at wwwdotorg.org> wrote:
> From: Stephen Warren <swarren at nvidia.com>
>
> The U-Boot Makefile can invoke binman multiple times in parallel. This
> is problematic because binman uses a static hard-coded temporary file
> name. If two instances of binman use that filename at the same time, one
> writing one reading, they may silently read the wrong content or actively
> detect missing signatures and error out the build process. Fix this by
> using a PID-specific filename instead.
>
> Signed-off-by: Stephen Warren <swarren at nvidia.com>
> ---
>  tools/binman/control.py | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/binman/control.py b/tools/binman/control.py
> index a40b300fdacb..515999278949 100644
> --- a/tools/binman/control.py
> +++ b/tools/binman/control.py
> @@ -121,7 +121,7 @@ def Binman(options, args):
>              # output into a file in our output directly. Then scan it for use
>              # in binman.
>              dtb_fname = fdt_util.EnsureCompiled(dtb_fname)
> -            fname = tools.GetOutputFilename('u-boot-out.dtb')
> +            fname = tools.GetOutputFilename('u-boot-out.dtb') + str(os.getpid())
>              with open(dtb_fname) as infd:
>                  with open(fname, 'wb') as outfd:
>                      outfd.write(infd.read())
> --
> 2.18.0
>

But the output directory is itself (normally) a temporary dir. That
determines the directly which GetOutputFilename() uses. So I am not
sure how this can happen in practice?

Regards,
Simon


More information about the U-Boot mailing list