wakeup: fix endless loop in wakeup source show [1/1]
authorJianxin Pan <jianxin.pan@amlogic.com>
Fri, 28 Jun 2019 05:23:55 +0000 (01:23 -0400)
committerNick Xie <nick@khadas.com>
Mon, 5 Aug 2019 07:29:21 +0000 (15:29 +0800)
PD#SWPL-10134

Problem:
endless loop in wakeup source show

Solution:
fix endless loop in wakeup source show

Verify:
TL1

Change-Id: If2318e31388b4a656cf8d99058f8aeaf76ff97a0
Signed-off-by: Jianxin Pan <jianxin.pan@amlogic.com>
drivers/base/power/wakeup.c

index fd1b5c8..03eb3eb 100644 (file)
@@ -1075,8 +1075,16 @@ static int wakeup_sources_stats_show(struct seq_file *m, void *unused)
                "last_change\tprevent_suspend_time\n");
 
        srcuidx = srcu_read_lock(&wakeup_srcu);
-       list_for_each_entry_rcu(ws, &wakeup_sources, entry)
+       list_for_each_entry_rcu(ws, &wakeup_sources, entry) {
                print_wakeup_source_stats(m, ws);
+#ifdef CONFIG_AMLOGIC_MODIFY
+               if (ws->entry.next == ws->entry.prev) {
+                       pr_err(" <%s> name:%s <%p, %p>\n", __func__,
+                               ws->name,  ws->entry.next, ws->entry.prev);
+                       break;
+               }
+#endif
+       }
        srcu_read_unlock(&wakeup_srcu, srcuidx);
 
        print_wakeup_source_stats(m, &deleted_ws);