[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