aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2023-02-23 17:30:49 -0500
committerTom Rini <trini@konsulko.com>2023-02-23 17:30:49 -0500
commit0b58258a33280a536c5b1e5e90dfdf0b5b5852cc (patch)
tree418dbaf5a7f88305974186a1297ff2e9ae4c5aaa
parent8c39999acb726ef083d3d5de12f20318ee0e5070 (diff)
parent5b4acb0ff79df642ef6b1e35fd4b193a4dc3c62b (diff)
downloadu-boot-0b58258a33280a536c5b1e5e90dfdf0b5b5852cc.zip
u-boot-0b58258a33280a536c5b1e5e90dfdf0b5b5852cc.tar.gz
u-boot-0b58258a33280a536c5b1e5e90dfdf0b5b5852cc.tar.bz2
Merge branch '2023-02-23-assorted-fixes'
- btrfs bugfix, silence a bunch of gcc-12.2 linker warnings finally, relax one of the trace test time requirements (so CI doesn't fail due to test being slightly slow, but still correct), and correct env on MMC and checking for where GPT can be
-rw-r--r--Makefile1
-rw-r--r--arch/x86/config.mk3
-rw-r--r--env/mmc.c12
-rw-r--r--fs/btrfs/volumes.c2
-rw-r--r--test/py/tests/test_trace.py5
5 files changed, 16 insertions, 7 deletions
diff --git a/Makefile b/Makefile
index 54f894d..bc1ee94 100644
--- a/Makefile
+++ b/Makefile
@@ -806,6 +806,7 @@ KBUILD_CPPFLAGS += $(KCPPFLAGS)
KBUILD_AFLAGS += $(KAFLAGS)
KBUILD_CFLAGS += $(KCFLAGS)
+KBUILD_LDFLAGS += -z noexecstack
KBUILD_LDFLAGS += $(call ld-option,--no-warn-rwx-segments)
KBUILD_HOSTCFLAGS += $(if $(CONFIG_TOOLS_DEBUG),-g)
diff --git a/arch/x86/config.mk b/arch/x86/config.mk
index a4a694d..26ec1af 100644
--- a/arch/x86/config.mk
+++ b/arch/x86/config.mk
@@ -37,7 +37,8 @@ KBUILD_LDFLAGS += -m $(if $(IS_32BIT),elf_i386,elf_x86_64)
# This is used in the top-level Makefile which does not include
# KBUILD_LDFLAGS
-LDFLAGS_EFI_PAYLOAD := -Bsymbolic -Bsymbolic-functions -shared --no-undefined -s
+LDFLAGS_EFI_PAYLOAD := -Bsymbolic -Bsymbolic-functions -shared --no-undefined \
+ -s -zexecstack
OBJCOPYFLAGS_EFI := -j .text -j .sdata -j .data -j .dynamic -j .dynsym \
-j .rel -j .rela -j .reloc --strip-all
diff --git a/env/mmc.c b/env/mmc.c
index 5b01f65..7a5836a 100644
--- a/env/mmc.c
+++ b/env/mmc.c
@@ -94,7 +94,7 @@ static inline int mmc_offset_try_partition(const char *str, int copy, s64 *val)
return 0;
}
-static inline s64 mmc_offset(int copy)
+static inline s64 mmc_offset(struct mmc *mmc, int copy)
{
const struct {
const char *offset_redund;
@@ -108,8 +108,12 @@ static inline s64 mmc_offset(int copy)
s64 val = 0, defvalue;
const char *propname;
const char *str;
+ int hwpart = 0;
int err;
+ if (IS_ENABLED(CONFIG_SYS_MMC_ENV_PART))
+ hwpart = mmc_get_env_part(mmc);
+
/* look for the partition in mmc CONFIG_SYS_MMC_ENV_DEV */
str = ofnode_conf_read_str(dt_prop.partition);
if (str) {
@@ -121,7 +125,7 @@ static inline s64 mmc_offset(int copy)
}
/* try the GPT partition with "U-Boot ENV" TYPE GUID */
- if (IS_ENABLED(CONFIG_PARTITION_TYPE_GUID)) {
+ if (IS_ENABLED(CONFIG_PARTITION_TYPE_GUID) && hwpart == 0) {
err = mmc_offset_try_partition(NULL, copy, &val);
if (!err)
return val;
@@ -138,7 +142,7 @@ static inline s64 mmc_offset(int copy)
return ofnode_conf_read_int(propname, defvalue);
}
#else
-static inline s64 mmc_offset(int copy)
+static inline s64 mmc_offset(struct mmc *mmc, int copy)
{
s64 offset = ENV_MMC_OFFSET;
@@ -151,7 +155,7 @@ static inline s64 mmc_offset(int copy)
__weak int mmc_get_env_addr(struct mmc *mmc, int copy, u32 *env_addr)
{
- s64 offset = mmc_offset(copy);
+ s64 offset = mmc_offset(mmc, copy);
if (offset == ENV_MMC_INVALID_OFFSET) {
printf("Invalid ENV offset in MMC, copy=%d\n", copy);
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index 4aaaeab..7d4095d 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -956,6 +956,7 @@ int __btrfs_map_block(struct btrfs_fs_info *fs_info, int rw,
struct btrfs_mapping_tree *map_tree = &fs_info->mapping_tree;
struct cache_extent *ce;
struct map_lookup *map;
+ u64 orig_len = *length;
u64 offset;
u64 stripe_offset;
u64 *raid_map = NULL;
@@ -1047,6 +1048,7 @@ again:
} else {
*length = ce->size - offset;
}
+ *length = min_t(u64, *length, orig_len);
if (!multi_ret)
goto out;
diff --git a/test/py/tests/test_trace.py b/test/py/tests/test_trace.py
index 14584d1..ac3e959 100644
--- a/test/py/tests/test_trace.py
+++ b/test/py/tests/test_trace.py
@@ -299,6 +299,7 @@ def test_trace(u_boot_console):
fg_time = check_flamegraph(cons, fname, proftool, map_fname, trace_fg)
- # Check that bootstage and flamegraph agree to within 10%
+ # Check that bootstage and flamegraph agree to within 30%
+ # This allows for CI being slow to run
diff = abs(fg_time - dm_f_time)
- assert diff / dm_f_time < 0.1
+ assert diff / dm_f_time < 0.3