Linux-RDMA Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH 0/7] drop unnecessary list_empty
@ 2020-07-26 10:58 Julia Lawall
  2020-07-26 10:58 ` [PATCH 4/7] net/mlx5: " Julia Lawall
  2020-07-30 22:28 ` [PATCH 0/7] " Mark Brown
  0 siblings, 2 replies; 5+ messages in thread
From: Julia Lawall @ 2020-07-26 10:58 UTC (permalink / raw)
  To: linux-rdma
  Cc: kernel-janitors, netdev, linux-kernel, alsa-devel, linux-media,
	linux-wireless

The various list iterators are able to handle an empty list.
The only effect of avoiding the loop is not initializing some
index variables.
Drop list_empty tests in cases where these variables are not
used.

The semantic patch that makes these changes is as follows:
(http://coccinelle.lip6.fr/)

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

-if (!(list_empty(x))) {
   list_for_each_entry(i,x,...) S
- }
 ... when != i
? i = e

@@
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;
)

@@
expression x,e;
iterator name list_for_each;
statement S;
identifier i;
@@

-if (!(list_empty(x))) {
   list_for_each(i,x) S
- }
 ... when != i
? i = e

@@
expression x,e;
iterator name list_for_each_safe;
statement S;
identifier i,j;
@@

-if (!(list_empty(x))) {
   list_for_each_safe(i,j,x) S
- }
 ... when != i
     when != j
(
  i = e;
|
? j = e;
)

// -------------------

@@
expression x,e;
statement S;
identifier i;
@@

-if (!(list_empty(x)))
   list_for_each_entry(i,x,...) S
 ... when != i
? i = e

@@
expression x,e;
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;
)

@@
expression x,e;
statement S;
identifier i;
@@

-if (!(list_empty(x)))
   list_for_each(i,x) S
 ... when != i
? i = e

@@
expression x,e;
statement S;
identifier i,j;
@@

-if (!(list_empty(x)))
   list_for_each_safe(i,j,x) S
 ... when != i
     when != j
(
  i = e;
|
? j = e;
)
</smpl>

---

 drivers/media/pci/saa7134/saa7134-core.c                      |   14 ++---
 drivers/media/usb/cx231xx/cx231xx-core.c                      |   16 ++----
 drivers/media/usb/tm6000/tm6000-core.c                        |   24 +++-------
 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_matcher.c |   13 ++---
 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_rule.c    |    5 --
 drivers/net/ethernet/sfc/ptp.c                                |   20 +++-----
 drivers/net/wireless/ath/dfs_pattern_detector.c               |   15 ++----
 sound/soc/intel/atom/sst/sst_loader.c                         |   10 +---
 sound/soc/intel/skylake/skl-pcm.c                             |    8 +--
 sound/soc/intel/skylake/skl-topology.c                        |    5 --
 10 files changed, 53 insertions(+), 77 deletions(-)

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 4/7] net/mlx5: drop unnecessary list_empty
  2020-07-26 10:58 [PATCH 0/7] drop unnecessary list_empty Julia Lawall
@ 2020-07-26 10:58 ` Julia Lawall
  2020-07-27 17:10   ` David Miller
  2020-07-30 22:28 ` [PATCH 0/7] " Mark Brown
  1 sibling, 1 reply; 5+ messages in thread
From: Julia Lawall @ 2020-07-26 10:58 UTC (permalink / raw)
  To: Saeed Mahameed
  Cc: kernel-janitors, Leon Romanovsky, David S. Miller,
	Jakub Kicinski, netdev, linux-rdma, linux-kernel

list_for_each_entry 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 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, 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;
statement S;
identifier i;
@@

-if (!(list_empty(x))) {
   list_for_each_entry(i,x,...) S
- }
 ... when != i
? i = e
</smpl>

Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr>

---
 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_matcher.c |   13 ++++------
 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_rule.c    |    5 +--
 2 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_matcher.c b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_matcher.c
index 31abcbb..23a1172 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_matcher.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_matcher.c
@@ -474,14 +474,13 @@ static int dr_matcher_add_to_tbl(struct mlx5dr_matcher *matcher)
 	int ret;
 
 	next_matcher = NULL;
-	if (!list_empty(&tbl->matcher_list))
-		list_for_each_entry(tmp_matcher, &tbl->matcher_list, matcher_list) {
-			if (tmp_matcher->prio >= matcher->prio) {
-				next_matcher = tmp_matcher;
-				break;
-			}
-			first = false;
+	list_for_each_entry(tmp_matcher, &tbl->matcher_list, matcher_list) {
+		if (tmp_matcher->prio >= matcher->prio) {
+			next_matcher = tmp_matcher;
+			break;
 		}
+		first = false;
+	}
 
 	prev_matcher = NULL;
 	if (next_matcher && !first)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_rule.c b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_rule.c
index cd708dc..6ec5106 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_rule.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_rule.c
@@ -574,9 +574,8 @@ void mlx5dr_rule_update_rule_member(struct mlx5dr_ste *ste,
 {
 	struct mlx5dr_rule_member *rule_mem;
 
-	if (!list_empty(&ste->rule_list))
-		list_for_each_entry(rule_mem, &ste->rule_list, use_ste_list)
-			rule_mem->ste = new_ste;
+	list_for_each_entry(rule_mem, &ste->rule_list, use_ste_list)
+		rule_mem->ste = new_ste;
 }
 
 static void dr_rule_clean_rule_members(struct mlx5dr_rule *rule,


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 4/7] net/mlx5: drop unnecessary list_empty
  2020-07-26 10:58 ` [PATCH 4/7] net/mlx5: " Julia Lawall
@ 2020-07-27 17:10   ` David Miller
  2020-07-28  7:53     ` Saeed Mahameed
  0 siblings, 1 reply; 5+ messages in thread
From: David Miller @ 2020-07-27 17:10 UTC (permalink / raw)
  To: Julia.Lawall
  Cc: saeedm, kernel-janitors, leon, kuba, netdev, linux-rdma, linux-kernel

From: Julia Lawall <Julia.Lawall@inria.fr>
Date: Sun, 26 Jul 2020 12:58:29 +0200

> list_for_each_entry 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 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, 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/)
 ...
> Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr>

Saeed, please pick this up.

Thank you.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 4/7] net/mlx5: drop unnecessary list_empty
  2020-07-27 17:10   ` David Miller
@ 2020-07-28  7:53     ` Saeed Mahameed
  0 siblings, 0 replies; 5+ messages in thread
From: Saeed Mahameed @ 2020-07-28  7:53 UTC (permalink / raw)
  To: davem, Julia.Lawall
  Cc: linux-rdma, kernel-janitors, kuba, netdev, leon, linux-kernel

On Mon, 2020-07-27 at 10:10 -0700, David Miller wrote:
> From: Julia Lawall <Julia.Lawall@inria.fr>
> Date: Sun, 26 Jul 2020 12:58:29 +0200
> 
> > list_for_each_entry 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 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, 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/)
>  ...
> > Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr>
> 
> Saeed, please pick this up.
> 
> Thank you.

Applied to net-next-mlx5.

Thanks !

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 0/7] drop unnecessary list_empty
  2020-07-26 10:58 [PATCH 0/7] drop unnecessary list_empty Julia Lawall
  2020-07-26 10:58 ` [PATCH 4/7] net/mlx5: " Julia Lawall
@ 2020-07-30 22:28 ` Mark Brown
  1 sibling, 0 replies; 5+ messages in thread
From: Mark Brown @ 2020-07-30 22:28 UTC (permalink / raw)
  To: linux-rdma, Julia Lawall
  Cc: linux-kernel, linux-wireless, netdev, alsa-devel, linux-media,
	kernel-janitors

On Sun, 26 Jul 2020 12:58:25 +0200, Julia Lawall wrote:
> The various list iterators are able to handle an empty list.
> The only effect of avoiding the loop is not initializing some
> index variables.
> Drop list_empty tests in cases where these variables are not
> used.
> 
> The semantic patch that makes these changes is as follows:
> (http://coccinelle.lip6.fr/)
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[1/1] ASoC: Intel: drop unnecessary list_empty
      commit: a383308e50244a28fe927b9c1acbe0a963bf186b

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, back to index

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-26 10:58 [PATCH 0/7] drop unnecessary list_empty Julia Lawall
2020-07-26 10:58 ` [PATCH 4/7] net/mlx5: " Julia Lawall
2020-07-27 17:10   ` David Miller
2020-07-28  7:53     ` Saeed Mahameed
2020-07-30 22:28 ` [PATCH 0/7] " Mark Brown

Linux-RDMA Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-rdma/0 linux-rdma/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-rdma linux-rdma/ https://lore.kernel.org/linux-rdma \
		linux-rdma@vger.kernel.org
	public-inbox-index linux-rdma

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-rdma


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git