| .. | .. |
|---|
| 76 | 76 | |
|---|
| 77 | 77 | static void do_mcu_done(struct rk_tb_serv *serv) |
|---|
| 78 | 78 | { |
|---|
| 79 | | - struct rk_tb_client *client, *client_s; |
|---|
| 79 | + struct rk_tb_client *client; |
|---|
| 80 | 80 | struct rockchip_mbox_msg msg; |
|---|
| 81 | 81 | |
|---|
| 82 | 82 | rockchip_mbox_read_msg(serv->mbox_rx_chan, &msg); |
|---|
| .. | .. |
|---|
| 97 | 97 | return; |
|---|
| 98 | 98 | } |
|---|
| 99 | 99 | |
|---|
| 100 | | - list_for_each_entry_safe(client, client_s, &clients_list, node) { |
|---|
| 100 | + while (!list_empty(&clients_list)) { |
|---|
| 101 | + client = list_first_entry(&clients_list, struct rk_tb_client, node); |
|---|
| 102 | + list_del(&client->node); |
|---|
| 101 | 103 | spin_unlock(&lock); |
|---|
| 102 | 104 | if (client->cb) |
|---|
| 103 | 105 | client->cb(client->data); |
|---|
| 104 | 106 | spin_lock(&lock); |
|---|
| 105 | | - list_del(&client->node); |
|---|
| 106 | 107 | } |
|---|
| 107 | 108 | atomic_set(&mcu_done, 1); |
|---|
| 108 | 109 | spin_unlock(&lock); |
|---|