mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-26 12:27:12 +00:00
dm: Avoid accessing uclasses before they are ready
Don't allow access to uclasses before they have been initialised. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
f4cdead24a
commit
c910e2e2da
3 changed files with 18 additions and 1 deletions
|
@ -95,7 +95,7 @@ are provided in test/dm. To run them, try:
|
||||||
You should see something like this:
|
You should see something like this:
|
||||||
|
|
||||||
<...U-Boot banner...>
|
<...U-Boot banner...>
|
||||||
Running 16 driver model tests
|
Running 17 driver model tests
|
||||||
Test: dm_test_autobind
|
Test: dm_test_autobind
|
||||||
Test: dm_test_autoprobe
|
Test: dm_test_autoprobe
|
||||||
Test: dm_test_children
|
Test: dm_test_children
|
||||||
|
@ -116,6 +116,7 @@ You should see something like this:
|
||||||
Test: dm_test_pre_reloc
|
Test: dm_test_pre_reloc
|
||||||
Test: dm_test_remove
|
Test: dm_test_remove
|
||||||
Test: dm_test_uclass
|
Test: dm_test_uclass
|
||||||
|
Test: dm_test_uclass_before_ready
|
||||||
Failures: 0
|
Failures: 0
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,8 @@ struct uclass *uclass_find(enum uclass_id key)
|
||||||
{
|
{
|
||||||
struct uclass *uc;
|
struct uclass *uc;
|
||||||
|
|
||||||
|
if (!gd->dm_root)
|
||||||
|
return NULL;
|
||||||
/*
|
/*
|
||||||
* TODO(sjg@chromium.org): Optimise this, perhaps moving the found
|
* TODO(sjg@chromium.org): Optimise this, perhaps moving the found
|
||||||
* node to the start of the list, or creating a linear array mapping
|
* node to the start of the list, or creating a linear array mapping
|
||||||
|
|
|
@ -570,3 +570,17 @@ static int dm_test_pre_reloc(struct dm_test_state *dms)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
DM_TEST(dm_test_pre_reloc, 0);
|
DM_TEST(dm_test_pre_reloc, 0);
|
||||||
|
|
||||||
|
static int dm_test_uclass_before_ready(struct dm_test_state *dms)
|
||||||
|
{
|
||||||
|
struct uclass *uc;
|
||||||
|
|
||||||
|
ut_assertok(uclass_get(UCLASS_TEST, &uc));
|
||||||
|
|
||||||
|
memset(gd, '\0', sizeof(*gd));
|
||||||
|
ut_asserteq_ptr(NULL, uclass_find(UCLASS_TEST));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DM_TEST(dm_test_uclass_before_ready, 0);
|
||||||
|
|
Loading…
Add table
Reference in a new issue