mirror of https://gitee.com/openkylin/linux.git
ASoC: Intel: 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 is as follows (with another variant for the no brace case): (http://coccinelle.lip6.fr/) <smpl> @@ expression x,e; iterator name list_for_each_entry_safe; statement S; identifier i,j; @@ -if (!(list_empty(x))) { list_for_each_entry_safe(i,j,x,...) S - } ... when != i when != j ( i = e; | ? j = e; ) </smpl> Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr> Link: https://lore.kernel.org/r/1595761112-11003-2-git-send-email-Julia.Lawall@inria.fr Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
39473c2cbd
commit
a383308e50
|
@ -276,12 +276,10 @@ void sst_memcpy_free_resources(struct intel_sst_drv *sst_drv_ctx)
|
|||
struct sst_memcpy_list *listnode, *tmplistnode;
|
||||
|
||||
/* Free the list */
|
||||
if (!list_empty(&sst_drv_ctx->memcpy_list)) {
|
||||
list_for_each_entry_safe(listnode, tmplistnode,
|
||||
&sst_drv_ctx->memcpy_list, memcpylist) {
|
||||
list_del(&listnode->memcpylist);
|
||||
kfree(listnode);
|
||||
}
|
||||
list_for_each_entry_safe(listnode, tmplistnode,
|
||||
&sst_drv_ctx->memcpy_list, memcpylist) {
|
||||
list_del(&listnode->memcpylist);
|
||||
kfree(listnode);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1509,11 +1509,9 @@ int skl_platform_unregister(struct device *dev)
|
|||
struct skl_dev *skl = bus_to_skl(bus);
|
||||
struct skl_module_deferred_bind *modules, *tmp;
|
||||
|
||||
if (!list_empty(&skl->bind_list)) {
|
||||
list_for_each_entry_safe(modules, tmp, &skl->bind_list, node) {
|
||||
list_del(&modules->node);
|
||||
kfree(modules);
|
||||
}
|
||||
list_for_each_entry_safe(modules, tmp, &skl->bind_list, node) {
|
||||
list_del(&modules->node);
|
||||
kfree(modules);
|
||||
}
|
||||
|
||||
kfree(skl->dais);
|
||||
|
|
|
@ -3773,9 +3773,8 @@ void skl_tplg_exit(struct snd_soc_component *component, struct hdac_bus *bus)
|
|||
struct skl_dev *skl = bus_to_skl(bus);
|
||||
struct skl_pipeline *ppl, *tmp;
|
||||
|
||||
if (!list_empty(&skl->ppl_list))
|
||||
list_for_each_entry_safe(ppl, tmp, &skl->ppl_list, node)
|
||||
list_del(&ppl->node);
|
||||
list_for_each_entry_safe(ppl, tmp, &skl->ppl_list, node)
|
||||
list_del(&ppl->node);
|
||||
|
||||
/* clean up topology */
|
||||
snd_soc_tplg_component_remove(component, SND_SOC_TPLG_INDEX_ALL);
|
||||
|
|
Loading…
Reference in New Issue