Browse Source

dm: core: Check for empty list in uclass_find_device()

This function needs to check the list has entries before traversing it.
Fix this bug.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Simon Glass 9 years ago
parent
commit
2fda14ae6a
1 changed files with 2 additions and 0 deletions
  1. 2 0
      drivers/core/uclass.c

+ 2 - 0
drivers/core/uclass.c

@@ -153,6 +153,8 @@ int uclass_find_device(enum uclass_id id, int index, struct udevice **devp)
 	ret = uclass_get(id, &uc);
 	ret = uclass_get(id, &uc);
 	if (ret)
 	if (ret)
 		return ret;
 		return ret;
+	if (list_empty(&uc->dev_head))
+		return -ENODEV;
 
 
 	list_for_each_entry(dev, &uc->dev_head, uclass_node) {
 	list_for_each_entry(dev, &uc->dev_head, uclass_node) {
 		if (!index--) {
 		if (!index--) {