Commit 18c25b40 authored by Julia Lawall's avatar Julia Lawall Committed by Kalle Valo

ath: drop unnecessary list_empty

list_for_each_entry{_safe} is able to handle an empty list.
The only effect of avoiding the loop is not initializing the
index variable.
Drop list_empty tests in cases where these variables are not
used.

Note that list_for_each_entry{_safe} is defined in terms of
list_first_entry, which indicates that it should not be used on an
empty list.  But in list_for_each_entry{_safe}, the element obtained
by list_first_entry is not really accessed, only the address of its
list_head field is compared to the address of the list head, so the
list_first_entry is safe.

The semantic patch that makes this change for the list_for_each_entry
case is as follows: (http://coccinelle.lip6.fr/)

<smpl>
@@
expression x,e;
statement S;
identifier i;
@@

-if (!(list_empty(x)))
   list_for_each_entry(i,x,...) S
 ... when != i
? i = e
</smpl>
Signed-off-by: default avatarJulia Lawall <Julia.Lawall@inria.fr>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/1595761112-11003-8-git-send-email-Julia.Lawall@inria.fr
parent 221af813
...@@ -253,7 +253,6 @@ channel_detector_get(struct dfs_pattern_detector *dpd, u16 freq) ...@@ -253,7 +253,6 @@ channel_detector_get(struct dfs_pattern_detector *dpd, u16 freq)
static void dpd_reset(struct dfs_pattern_detector *dpd) static void dpd_reset(struct dfs_pattern_detector *dpd)
{ {
struct channel_detector *cd; struct channel_detector *cd;
if (!list_empty(&dpd->channel_detectors))
list_for_each_entry(cd, &dpd->channel_detectors, head) list_for_each_entry(cd, &dpd->channel_detectors, head)
channel_detector_reset(dpd, cd); channel_detector_reset(dpd, cd);
...@@ -261,7 +260,6 @@ static void dpd_reset(struct dfs_pattern_detector *dpd) ...@@ -261,7 +260,6 @@ static void dpd_reset(struct dfs_pattern_detector *dpd)
static void dpd_exit(struct dfs_pattern_detector *dpd) static void dpd_exit(struct dfs_pattern_detector *dpd)
{ {
struct channel_detector *cd, *cd0; struct channel_detector *cd, *cd0;
if (!list_empty(&dpd->channel_detectors))
list_for_each_entry_safe(cd, cd0, &dpd->channel_detectors, head) list_for_each_entry_safe(cd, cd0, &dpd->channel_detectors, head)
channel_detector_exit(dpd, cd); channel_detector_exit(dpd, cd);
kfree(dpd); kfree(dpd);
...@@ -331,7 +329,6 @@ static bool dpd_set_domain(struct dfs_pattern_detector *dpd, ...@@ -331,7 +329,6 @@ static bool dpd_set_domain(struct dfs_pattern_detector *dpd,
return false; return false;
/* delete all channel detectors for previous DFS domain */ /* delete all channel detectors for previous DFS domain */
if (!list_empty(&dpd->channel_detectors))
list_for_each_entry_safe(cd, cd0, &dpd->channel_detectors, head) list_for_each_entry_safe(cd, cd0, &dpd->channel_detectors, head)
channel_detector_exit(dpd, cd); channel_detector_exit(dpd, cd);
dpd->radar_spec = rt->radar_types; dpd->radar_spec = rt->radar_types;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment