Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ea942baf authored by Mahesh Sivasubramanian's avatar Mahesh Sivasubramanian Committed by Gerrit - the friendly Code Review server
Browse files

drivers: cpuidle: lpm-levels: Fix untrusted pointer dereference.



The list_for_each macro was not used correctly, where the intermediate
variable would be LIST_POISON, resulting in a untrusted pointer
dereference. Switch to using list_for_each_entry_safe to for safe
removal of a list entry.

Change-Id: I0e0fd5dd9f251b5093d6e9d6335387512ec59249
Signed-off-by: default avatarMahesh Sivasubramanian <msivasub@codeaurora.org>
parent aaa974b1
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -820,14 +820,12 @@ failed:

void free_cluster_node(struct lpm_cluster *cluster)
{
	struct list_head *list;
	int i;
	struct lpm_cluster *cl, *m;

	list_for_each(list, &cluster->child) {
		struct lpm_cluster *n;
		n = list_entry(list, typeof(*n), list);
		list_del(list);
		free_cluster_node(n);
	list_for_each_entry_safe(cl, m, &cluster->child, list) {
		list_del(&cl->list);
		free_cluster_node(cl);
	};

	if (cluster->cpu) {