summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2021-05-27 07:41:25 -0400
committerTom Rini <trini@konsulko.com>2021-05-27 07:41:25 -0400
commita0ecfa568d3309bb21869622bfc7147665c4260d (patch)
tree977aa2f50c7cbc50ddf7dc4384e6126b38e293c1
parentf4b2786b80583c8b48245ac5f90fda47328f3a6c (diff)
parentcb6c9c83e2f1cb5b96851445dbf3dea8541cb212 (diff)
downloadu-boot-a0ecfa568d3309bb21869622bfc7147665c4260d.tar.gz
u-boot-a0ecfa568d3309bb21869622bfc7147665c4260d.tar.xz
u-boot-a0ecfa568d3309bb21869622bfc7147665c4260d.zip
Merge branch '2021-05-26-assorted-bugfixes'
-rw-r--r--.gitlab-ci.yml1
-rw-r--r--arch/powerpc/lib/traps.c1
-rw-r--r--common/spl/Kconfig24
-rw-r--r--disk/part.c6
-rw-r--r--drivers/pinctrl/pinctrl-single.c10
-rw-r--r--fs/btrfs/disk-io.c2
-rw-r--r--fs/squashfs/sqfs.c2
-rw-r--r--include/test/ut.h17
-rw-r--r--test/dm/part.c37
-rw-r--r--test/py/tests/test_fs/conftest.py48
10 files changed, 88 insertions, 60 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3e250f3654..d072e833a3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -189,7 +189,6 @@ sandbox_spl test.py:
<<: *buildman_and_testpy_dfn
sandbox_noinst_test.py:
- tags: [ 'all' ]
variables:
TEST_PY_BD: "sandbox_noinst"
TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl"
diff --git a/arch/powerpc/lib/traps.c b/arch/powerpc/lib/traps.c
index c7bce82a44..ab8ca269a5 100644
--- a/arch/powerpc/lib/traps.c
+++ b/arch/powerpc/lib/traps.c
@@ -4,6 +4,7 @@
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*/
+#include <common.h>
#include <init.h>
#include <asm/global_data.h>
diff --git a/common/spl/Kconfig b/common/spl/Kconfig
index df5468f1ac..b709a05a7b 100644
--- a/common/spl/Kconfig
+++ b/common/spl/Kconfig
@@ -165,7 +165,7 @@ config SPL_BOARD_INIT
provided by the board.
config SPL_BOOTROM_SUPPORT
- bool "Support returning to the BOOTROM"
+ bool "Support returning to the BOOTROM"
help
Some platforms (e.g. the Rockchip RK3368) provide support in their
ROM for loading the next boot-stage after performing basic setup
@@ -707,7 +707,7 @@ config SYS_MMCSD_FS_BOOT_PARTITION
default 1
help
Partition on the MMC to load U-Boot from when the MMC is being
- used in fs mode
+ used in fs mode
config SPL_MMC_TINY
bool "Tiny MMC framework in SPL"
@@ -784,8 +784,8 @@ config SPL_NAND_SIMPLE
config SPL_NAND_BASE
depends on SPL_NAND_DRIVERS
bool "Use Base NAND Driver"
- help
- Include nand_base.c in the SPL.
+ help
+ Include nand_base.c in the SPL.
config SPL_NAND_IDENT
depends on SPL_NAND_BASE
@@ -1301,7 +1301,7 @@ config SPL_ATF_LOAD_IMAGE_V2
method, say Y.
config SPL_ATF_NO_PLATFORM_PARAM
- bool "Pass no platform parameter"
+ bool "Pass no platform parameter"
depends on SPL_ATF
help
While we expect to call a pointer to a valid FDT (or NULL)
@@ -1395,7 +1395,7 @@ config TPL_BOOTCOUNT_LIMIT
For example, it may be useful to choose the device to boot.
config TPL_LDSCRIPT
- string "Linker script for the TPL stage"
+ string "Linker script for the TPL stage"
depends on TPL
default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64
default "arch/\$(ARCH)/cpu/u-boot-spl.lds"
@@ -1409,7 +1409,7 @@ config TPL_LDSCRIPT
fall back to the linker-script used for the SPL stage.
config TPL_NEEDS_SEPARATE_TEXT_BASE
- bool "TPL needs a separate text-base"
+ bool "TPL needs a separate text-base"
default n
depends on TPL
help
@@ -1418,7 +1418,7 @@ config TPL_NEEDS_SEPARATE_TEXT_BASE
.text sections of the TPL stage has to be set below.
config TPL_NEEDS_SEPARATE_STACK
- bool "TPL needs a separate initial stack-pointer"
+ bool "TPL needs a separate initial stack-pointer"
default n
depends on TPL
help
@@ -1426,20 +1426,20 @@ config TPL_NEEDS_SEPARATE_STACK
stack-pointer from the settings for the SPL stage.
config TPL_TEXT_BASE
- hex "Base address for the .text section of the TPL stage"
+ hex "Base address for the .text section of the TPL stage"
depends on TPL_NEEDS_SEPARATE_TEXT_BASE
help
The base address for the .text section of the TPL stage.
config TPL_MAX_SIZE
- int "Maximum size (in bytes) for the TPL stage"
+ int "Maximum size (in bytes) for the TPL stage"
default 0
depends on TPL
help
The maximum size (in bytes) of the TPL stage.
config TPL_STACK
- hex "Address of the initial stack-pointer for the TPL stage"
+ hex "Address of the initial stack-pointer for the TPL stage"
depends on TPL_NEEDS_SEPARATE_STACK
help
The address of the initial stack-pointer for the TPL stage.
@@ -1457,7 +1457,7 @@ config TPL_READ_ONLY
device-private data.
config TPL_BOOTROM_SUPPORT
- bool "Support returning to the BOOTROM (from TPL)"
+ bool "Support returning to the BOOTROM (from TPL)"
help
Some platforms (e.g. the Rockchip RK3368) provide support in their
ROM for loading the next boot-stage after performing basic setup
diff --git a/disk/part.c b/disk/part.c
index 5e7e59cf25..086da84b7f 100644
--- a/disk/part.c
+++ b/disk/part.c
@@ -714,7 +714,11 @@ static int part_get_info_by_dev_and_name(const char *dev_iface,
int ret;
/* Separate device and partition name specification */
- part_str = strchr(dev_part_str, '#');
+ if (dev_part_str)
+ part_str = strchr(dev_part_str, '#');
+ else
+ part_str = NULL;
+
if (part_str) {
dup_str = strdup(dev_part_str);
dup_str[part_str - dev_part_str] = 0;
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
index ebb7602dde..7af6c5f0b0 100644
--- a/drivers/pinctrl/pinctrl-single.c
+++ b/drivers/pinctrl/pinctrl-single.c
@@ -509,19 +509,13 @@ static int single_of_to_plat(struct udevice *dev)
return -EINVAL;
}
- addr = dev_read_addr_size(dev, "reg", &size);
+ addr = dev_read_addr_size_index(dev, 0, &size);
if (addr == FDT_ADDR_T_NONE) {
- dev_err(dev, "failed to get base register size\n");
+ dev_err(dev, "failed to get base register address\n");
return -EINVAL;
}
pdata->offset = size - pdata->width / BITS_PER_BYTE;
-
- addr = dev_read_addr(dev);
- if (addr == FDT_ADDR_T_NONE) {
- dev_dbg(dev, "no valid base register address\n");
- return -EINVAL;
- }
pdata->base = addr;
ret = dev_read_u32(dev, "pinctrl-single,function-mask", &pdata->mask);
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index c6fdec95c1..349411c3cc 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -291,7 +291,7 @@ error_out:
int btrfs_read_dev_super(struct blk_desc *desc, struct disk_partition *part,
struct btrfs_super_block *sb)
{
- char tmp[BTRFS_SUPER_INFO_SIZE];
+ ALLOC_CACHE_ALIGN_BUFFER(char, tmp, BTRFS_SUPER_INFO_SIZE);
struct btrfs_super_block *buf = (struct btrfs_super_block *)tmp;
int ret;
diff --git a/fs/squashfs/sqfs.c b/fs/squashfs/sqfs.c
index 29805c3c6f..997be2dcf4 100644
--- a/fs/squashfs/sqfs.c
+++ b/fs/squashfs/sqfs.c
@@ -876,7 +876,7 @@ int sqfs_opendir(const char *filename, struct fs_dir_stream **dirsp)
char **token_list = NULL, *path = NULL;
u32 *pos_list = NULL;
- dirs = malloc(sizeof(*dirs));
+ dirs = calloc(1, sizeof(*dirs));
if (!dirs)
return -EINVAL;
diff --git a/include/test/ut.h b/include/test/ut.h
index fbbba286ee..656e25fe57 100644
--- a/include/test/ut.h
+++ b/include/test/ut.h
@@ -177,23 +177,6 @@ int ut_check_console_dump(struct unit_test_state *uts, int total_bytes);
} \
}
-/*
- * Assert that two string expressions are equal, up to length of the
- * first
- */
-#define ut_asserteq_strn(expr1, expr2) { \
- const char *_val1 = (expr1), *_val2 = (expr2); \
- int _len = strlen(_val1); \
- \
- if (memcmp(_val1, _val2, _len)) { \
- ut_failf(uts, __FILE__, __LINE__, __func__, \
- #expr1 " = " #expr2, \
- "Expected \"%.*s\", got \"%.*s\"", \
- _len, _val1, _len, _val2); \
- return CMD_RET_FAILURE; \
- } \
-}
-
/* Assert that two memory areas are equal */
#define ut_asserteq_mem(expr1, expr2, len) { \
const u8 *_val1 = (u8 *)(expr1), *_val2 = (u8 *)(expr2); \
diff --git a/test/dm/part.c b/test/dm/part.c
index 051e9010b6..78dd8472c2 100644
--- a/test/dm/part.c
+++ b/test/dm/part.c
@@ -11,11 +11,25 @@
#include <dm/test.h>
#include <test/ut.h>
+static inline int do_test(struct unit_test_state *uts, int expected,
+ const char *part_str, bool whole)
+{
+ struct blk_desc *mmc_dev_desc;
+ struct disk_partition part_info;
+
+ ut_asserteq(expected,
+ part_get_info_by_dev_and_name_or_num("mmc", part_str,
+ &mmc_dev_desc,
+ &part_info, whole));
+ return 0;
+}
+
static int dm_test_part(struct unit_test_state *uts)
{
+ char *oldbootdevice;
char str_disk_guid[UUID_STR_LEN + 1];
+ int ret;
struct blk_desc *mmc_dev_desc;
- struct disk_partition part_info;
struct disk_partition parts[2] = {
{
.start = 48, /* GPT data takes up the first 34 blocks or so */
@@ -38,16 +52,22 @@ static int dm_test_part(struct unit_test_state *uts)
ut_assertok(gpt_restore(mmc_dev_desc, str_disk_guid, parts,
ARRAY_SIZE(parts)));
-#define test(expected, part_str, whole) \
- ut_asserteq(expected, \
- part_get_info_by_dev_and_name_or_num("mmc", part_str, \
- &mmc_dev_desc, \
- &part_info, whole))
+ oldbootdevice = env_get("bootdevice");
+#define test(expected, part_str, whole) do { \
+ ret = do_test(uts, expected, part_str, whole); \
+ if (ret) \
+ goto out; \
+} while (0)
+
+ env_set("bootdevice", NULL);
+ test(-ENODEV, NULL, true);
test(-ENODEV, "", true);
env_set("bootdevice", "0");
+ test(0, NULL, true);
test(0, "", true);
env_set("bootdevice", "1");
+ test(1, NULL, false);
test(1, "", false);
test(1, "-", false);
env_set("bootdevice", "");
@@ -70,7 +90,10 @@ static int dm_test_part(struct unit_test_state *uts)
test(-EINVAL, "1#bogus", false);
test(1, "1#test1", false);
test(2, "1#test2", false);
+ ret = 0;
- return 0;
+out:
+ env_set("bootdevice", oldbootdevice);
+ return ret;
}
DM_TEST(dm_test_part, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
diff --git a/test/py/tests/test_fs/conftest.py b/test/py/tests/test_fs/conftest.py
index 50af9efcf7..410a675b97 100644
--- a/test/py/tests/test_fs/conftest.py
+++ b/test/py/tests/test_fs/conftest.py
@@ -278,14 +278,19 @@ def fs_obj_basic(request, u_boot_config):
check_call('mkdir -p %s' % mount_dir, shell=True)
except CalledProcessError as err:
pytest.skip('Preparing mount folder failed for filesystem: ' + fs_type + '. {}'.format(err))
- return
- finally:
call('rm -f %s' % fs_img, shell=True)
+ return
try:
# Mount the image so we can populate it.
mount_fs(fs_type, fs_img, mount_dir)
+ except CalledProcessError as err:
+ pytest.skip('Mounting to folder failed for filesystem: ' + fs_type + '. {}'.format(err))
+ call('rmdir %s' % mount_dir, shell=True)
+ call('rm -f %s' % fs_img, shell=True)
+ return
+ try:
# Create a subdirectory.
check_call('mkdir %s/SUBDIR' % mount_dir, shell=True)
@@ -348,11 +353,12 @@ def fs_obj_basic(request, u_boot_config):
except CalledProcessError as err:
pytest.skip('Setup failed for filesystem: ' + fs_type + '. {}'.format(err))
+ umount_fs(mount_dir)
return
else:
+ umount_fs(mount_dir)
yield [fs_ubtype, fs_img, md5val]
finally:
- umount_fs(mount_dir)
call('rmdir %s' % mount_dir, shell=True)
call('rm -f %s' % fs_img, shell=True)
@@ -394,14 +400,19 @@ def fs_obj_ext(request, u_boot_config):
check_call('mkdir -p %s' % mount_dir, shell=True)
except CalledProcessError as err:
pytest.skip('Preparing mount folder failed for filesystem: ' + fs_type + '. {}'.format(err))
- return
- finally:
call('rm -f %s' % fs_img, shell=True)
+ return
try:
# Mount the image so we can populate it.
mount_fs(fs_type, fs_img, mount_dir)
+ except CalledProcessError as err:
+ pytest.skip('Mounting to folder failed for filesystem: ' + fs_type + '. {}'.format(err))
+ call('rmdir %s' % mount_dir, shell=True)
+ call('rm -f %s' % fs_img, shell=True)
+ return
+ try:
# Create a test directory
check_call('mkdir %s/dir1' % mount_dir, shell=True)
@@ -443,11 +454,12 @@ def fs_obj_ext(request, u_boot_config):
check_call('rm %s' % tmp_file, shell=True)
except CalledProcessError:
pytest.skip('Setup failed for filesystem: ' + fs_type)
+ umount_fs(mount_dir)
return
else:
+ umount_fs(mount_dir)
yield [fs_ubtype, fs_img, md5val]
finally:
- umount_fs(mount_dir)
call('rmdir %s' % mount_dir, shell=True)
call('rm -f %s' % fs_img, shell=True)
@@ -517,14 +529,19 @@ def fs_obj_unlink(request, u_boot_config):
check_call('mkdir -p %s' % mount_dir, shell=True)
except CalledProcessError as err:
pytest.skip('Preparing mount folder failed for filesystem: ' + fs_type + '. {}'.format(err))
- return
- finally:
call('rm -f %s' % fs_img, shell=True)
+ return
try:
# Mount the image so we can populate it.
mount_fs(fs_type, fs_img, mount_dir)
+ except CalledProcessError as err:
+ pytest.skip('Mounting to folder failed for filesystem: ' + fs_type + '. {}'.format(err))
+ call('rmdir %s' % mount_dir, shell=True)
+ call('rm -f %s' % fs_img, shell=True)
+ return
+ try:
# Test Case 1 & 3
check_call('mkdir %s/dir1' % mount_dir, shell=True)
check_call('dd if=/dev/urandom of=%s/dir1/file1 bs=1K count=1'
@@ -548,11 +565,12 @@ def fs_obj_unlink(request, u_boot_config):
except CalledProcessError:
pytest.skip('Setup failed for filesystem: ' + fs_type)
+ umount_fs(mount_dir)
return
else:
+ umount_fs(mount_dir)
yield [fs_ubtype, fs_img]
finally:
- umount_fs(mount_dir)
call('rmdir %s' % mount_dir, shell=True)
call('rm -f %s' % fs_img, shell=True)
@@ -594,14 +612,19 @@ def fs_obj_symlink(request, u_boot_config):
check_call('mkdir -p %s' % mount_dir, shell=True)
except CalledProcessError as err:
pytest.skip('Preparing mount folder failed for filesystem: ' + fs_type + '. {}'.format(err))
- return
- finally:
call('rm -f %s' % fs_img, shell=True)
+ return
try:
# Mount the image so we can populate it.
mount_fs(fs_type, fs_img, mount_dir)
+ except CalledProcessError as err:
+ pytest.skip('Mounting to folder failed for filesystem: ' + fs_type + '. {}'.format(err))
+ call('rmdir %s' % mount_dir, shell=True)
+ call('rm -f %s' % fs_img, shell=True)
+ return
+ try:
# Create a subdirectory.
check_call('mkdir %s/SUBDIR' % mount_dir, shell=True)
@@ -625,10 +648,11 @@ def fs_obj_symlink(request, u_boot_config):
except CalledProcessError:
pytest.skip('Setup failed for filesystem: ' + fs_type)
+ umount_fs(mount_dir)
return
else:
+ umount_fs(mount_dir)
yield [fs_ubtype, fs_img, md5val]
finally:
- umount_fs(mount_dir)
call('rmdir %s' % mount_dir, shell=True)
call('rm -f %s' % fs_img, shell=True)