coreboot-kgpe-d16/util/cbfstool
Julius Werner 1153b2ef5c cbfstool: Use flock() when accessing CBFS files
Trying to do multiple operations on the same CBFS image at the same time
likely leads to data corruption. For this reason, add BSD advisory file
locking (flock()) to cbfstool (and ifittool which is using the same file
I/O library), so that only one process will operate on the same file at
the same time and the others will wait in line. This should help resolve
parallel build issues with the INTERMEDIATE target on certain platforms.

Unfortunately, some platforms use the INTERMEDIATE target to do a direct
dd into the CBFS image. This should generally be discouraged and future
platforms should aim to clearly deliminate regions that need to be
written directly by platform scripts with custom FMAP sections, so that
they can be written with `cbfstool write`. For the time being, update
the legacy platforms that do this with explicit calls to the `flock`
utility.

Signed-off-by: Julius Werner <jwerner@chromium.org>
Change-Id: I022468f6957415ae68a7a7e70428ae6f82d23b06
Reviewed-on: https://review.coreboot.org/c/coreboot/+/49190
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-by: Furquan Shaikh <furquan@google.com>
2021-01-08 08:04:04 +00:00
..
console treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
flashmap util: Use SPDX headers 2020-05-11 19:38:40 +00:00
lz4 lz4: Fix out-of-bounds reads 2020-03-02 15:03:03 +00:00
lzma util/cbfstool/lzma: Make clang-11+'s indentation checker happy 2020-02-01 19:51:31 +00:00
.gitignore util/cbfstool/.gitignore: Add ifittool 2020-12-07 14:02:38 +00:00
EXAMPLE
Makefile util/cbfstool: Add SPDX header to generated linux_trampoline code, too 2020-05-11 19:39:12 +00:00
Makefile.inc cbfstool: Use cbfs_serialized.h and standard vboot helpers 2020-12-03 00:00:33 +00:00
ProcessorBind.h util: Use SPDX headers 2020-05-11 19:38:40 +00:00
amdcompress.c util/cbfstool/amdcompress: fix argument requirement 2020-11-15 16:49:30 +00:00
cbfs-mkpayload.c cbfstool: Use cbfs_serialized.h and standard vboot helpers 2020-12-03 00:00:33 +00:00
cbfs-mkstage.c cbfstool: Use cbfs_serialized.h and standard vboot helpers 2020-12-03 00:00:33 +00:00
cbfs-payload-linux.c cbfstool: Use cbfs_serialized.h and standard vboot helpers 2020-12-03 00:00:33 +00:00
cbfs.h cbfs: Add verification for RO CBFS metadata hash 2020-12-03 00:11:08 +00:00
cbfs_image.c util/cbfstool: Rename IS_TOP_ALIGNED_ADDRESS to IS_HOST_SPACE_ADDRESS 2020-12-08 18:57:35 +00:00
cbfs_image.h cbfstool: Hide hash printing behind -v and add to parseable output 2020-12-03 00:08:03 +00:00
cbfs_sections.c util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
cbfs_sections.h util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
cbfscomptool.c cbfstool: Use cbfs_serialized.h and standard vboot helpers 2020-12-03 00:00:33 +00:00
cbfstool.c util/cbfstool: Add support for mapping extended window for x86 platforms 2020-12-08 18:58:57 +00:00
coff.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
common.c util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
common.h util/cbfstool: Rename IS_TOP_ALIGNED_ADDRESS to IS_HOST_SPACE_ADDRESS 2020-12-08 18:57:35 +00:00
compress.c cbfstool: Use cbfs_serialized.h and standard vboot helpers 2020-12-03 00:00:33 +00:00
default-x86.fmd drivers/vpd: Add VPD region to default FMAP when selected 2021-01-04 23:12:35 +00:00
default.fmd
description.md util: Add description.md to each util 2018-07-26 13:26:50 +00:00
elf.h util: Use SPDX headers 2020-05-11 19:38:40 +00:00
elfheaders.c util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
elfparsing.h util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
fdt.h treewide: replace GPLv2 long form headers with SPDX header 2020-05-06 22:20:57 +00:00
fit.c util/cbfstool/fit.c: Add support for adding Boot Guard manifests 2020-12-11 07:33:51 +00:00
fit.h util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
flashmap_tests.c util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
fmap_from_fmd.c util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
fmap_from_fmd.h util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
fmaptool.c util/cbfstool/fmaptool: Generate list of terminal sections 2020-12-08 18:59:05 +00:00
fmd.c util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
fmd.h util/cbfstool/fmd: make flashmap_flags bitfield struct elements unsigned 2020-09-23 13:39:14 +00:00
fmd_parser.c_shipped cbfstool: Support new FMD flag "PRESERVE" 2019-03-05 20:51:39 +00:00
fmd_parser.h_shipped cbfstool: Support new FMD flag "PRESERVE" 2019-03-05 20:51:39 +00:00
fmd_parser.y util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
fmd_scanner.c_shipped cbfstool: Support new FMD flag "PRESERVE" 2019-03-05 20:51:39 +00:00
fmd_scanner.h_shipped cbfstool: Support new FMD flag "PRESERVE" 2019-03-05 20:51:39 +00:00
fmd_scanner.l util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
fv.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
ifittool.c util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
ifwitool.c util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
linux.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
linux_trampoline.S util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
linux_trampoline.c util/cbfstool: Add SPDX header to generated linux_trampoline code, too 2020-05-11 19:39:12 +00:00
linux_trampoline.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
option.h util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
partitioned_file.c cbfstool: Use flock() when accessing CBFS files 2021-01-08 08:04:04 +00:00
partitioned_file.h util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
rmodtool.c util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
rmodule.c util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
rmodule.h util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00
swab.h
xdr.c util/: Replace GPLv2 boiler plate with SPDX header 2020-05-09 21:22:08 +00:00