summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ec/hp/kbc1126/Makefile.inc2
-rw-r--r--src/soc/amd/stoneyridge/Makefile.inc2
-rw-r--r--src/southbridge/amd/pi/hudson/Makefile.inc2
-rw-r--r--src/southbridge/intel/common/firmware/Makefile.inc2
-rw-r--r--util/cbfstool/partitioned_file.c6
5 files changed, 8 insertions, 6 deletions
diff --git a/src/ec/hp/kbc1126/Makefile.inc b/src/ec/hp/kbc1126/Makefile.inc
index 43e5d3fb0b..d767bad08f 100644
--- a/src/ec/hp/kbc1126/Makefile.inc
+++ b/src/ec/hp/kbc1126/Makefile.inc
@@ -22,7 +22,7 @@ ifeq ($(CONFIG_KBC1126_FIRMWARE),y)
printf " Building kbc1126_ec_insert.\n"
$(MAKE) -C util/kbc1126
printf " KBC1126 Inserting KBC1126 firmware blobs.\n"
- $(KBC1126_EC_INSERT) $(obj)/coreboot.pre \
+ flock $< $(KBC1126_EC_INSERT) $(obj)/coreboot.pre \
$(CONFIG_KBC1126_FW1_OFFSET) $(CONFIG_KBC1126_FW2_OFFSET)
endif
diff --git a/src/soc/amd/stoneyridge/Makefile.inc b/src/soc/amd/stoneyridge/Makefile.inc
index 969f5129eb..2ad07306b3 100644
--- a/src/soc/amd/stoneyridge/Makefile.inc
+++ b/src/soc/amd/stoneyridge/Makefile.inc
@@ -172,7 +172,7 @@ STONEYRIDGE_FWM_ROM_POSITION=$(call int-add, \
add_amdfw: $(obj)/coreboot.pre $(obj)/amdfw.rom
printf " DD Adding AMD Firmware at ROM offset 0x%x\n" \
"$(STONEYRIDGE_FWM_ROM_POSITION)"
- dd if=$(obj)/amdfw.rom \
+ flock $< dd if=$(obj)/amdfw.rom \
of=$(obj)/coreboot.pre conv=notrunc bs=1 \
seek=$(STONEYRIDGE_FWM_ROM_POSITION) >/dev/null 2>&1
diff --git a/src/southbridge/amd/pi/hudson/Makefile.inc b/src/southbridge/amd/pi/hudson/Makefile.inc
index 215a5a12bd..5eac024aa8 100644
--- a/src/southbridge/amd/pi/hudson/Makefile.inc
+++ b/src/southbridge/amd/pi/hudson/Makefile.inc
@@ -162,7 +162,7 @@ INTERMEDIATE+=add_amdfw
add_amdfw: $(obj)/coreboot.pre $(obj)/amdfw.rom
printf " DD Adding AMD Firmware\n"
- dd if=$(obj)/amdfw.rom \
+ flock $< dd if=$(obj)/amdfw.rom \
of=$(obj)/coreboot.pre conv=notrunc bs=1 seek=131072 >/dev/null 2>&1
else # ifeq ($(CONFIG_AMDFW_OUTSIDE_CBFS),y)
diff --git a/src/southbridge/intel/common/firmware/Makefile.inc b/src/southbridge/intel/common/firmware/Makefile.inc
index 516cd4d453..588c6633c0 100644
--- a/src/southbridge/intel/common/firmware/Makefile.inc
+++ b/src/southbridge/intel/common/firmware/Makefile.inc
@@ -35,7 +35,7 @@ add_intel_firmware: $(call strip_quotes,$(CONFIG_EC_BIN_PATH))
endif
add_intel_firmware: $(obj)/coreboot.pre $(IFDTOOL)
printf " DD Adding Intel Firmware Descriptor\n"
- dd if=$(IFD_BIN_PATH) \
+ flock $< dd if=$(IFD_BIN_PATH) \
of=$(obj)/coreboot.pre conv=notrunc >/dev/null 2>&1
ifeq ($(CONFIG_VALIDATE_INTEL_DESCRIPTOR),y)
$(objutil)/ifdtool/ifdtool \
diff --git a/util/cbfstool/partitioned_file.c b/util/cbfstool/partitioned_file.c
index b6d4f1b808..6e75600cca 100644
--- a/util/cbfstool/partitioned_file.c
+++ b/util/cbfstool/partitioned_file.c
@@ -8,6 +8,7 @@
#include <assert.h>
#include <stdlib.h>
#include <string.h>
+#include <sys/file.h>
struct partitioned_file {
struct fmap *fmap;
@@ -57,7 +58,7 @@ static partitioned_file_t *reopen_flat_file(const char *filename,
access_mode = write_access ? "rb+" : "rb";
file->stream = fopen(filename, access_mode);
- if (!file->stream) {
+ if (!file->stream || flock(fileno(file->stream), LOCK_EX)) {
perror(filename);
partitioned_file_close(file);
return NULL;
@@ -78,7 +79,7 @@ partitioned_file_t *partitioned_file_create_flat(const char *filename,
}
file->stream = fopen(filename, "wb");
- if (!file->stream) {
+ if (!file->stream || flock(fileno(file->stream), LOCK_EX)) {
perror(filename);
free(file);
return NULL;
@@ -268,6 +269,7 @@ void partitioned_file_close(partitioned_file_t *file)
file->fmap = NULL;
buffer_delete(&file->buffer);
if (file->stream) {
+ flock(fileno(file->stream), LOCK_UN);
fclose(file->stream);
file->stream = NULL;
}