public inbox for linux-i2c@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH next] i2c: Fix end of loop test in i2c_atr_find_mapping_by_addr()
@ 2025-04-23  8:21 Dan Carpenter
  2025-04-23 15:25 ` Romain Gantois
  2025-05-02 14:40 ` Wolfram Sang
  0 siblings, 2 replies; 7+ messages in thread
From: Dan Carpenter @ 2025-04-23  8:21 UTC (permalink / raw)
  To: Romain Gantois
  Cc: Tomi Valkeinen, Luca Ceresoli, Wolfram Sang, Andi Shyti,
	linux-i2c, linux-kernel, kernel-janitors

When the list_for_each_entry_reverse() exits without hitting a break
then the list cursor points to invalid memory.  So this check for
if (c2a->fixed) is checking bogus memory.  Fix it by using a "found"
variable to track if we found what we were looking for or not.

Fixes: c3f55241882b ("i2c: Support dynamic address translation")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
---
 drivers/i2c/i2c-atr.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c
index d5aa6738370c..1aeaecacc26c 100644
--- a/drivers/i2c/i2c-atr.c
+++ b/drivers/i2c/i2c-atr.c
@@ -240,6 +240,7 @@ i2c_atr_find_mapping_by_addr(struct i2c_atr_chan *chan, u16 addr)
 	struct i2c_atr *atr = chan->atr;
 	struct i2c_atr_alias_pair *c2a;
 	struct list_head *alias_pairs;
+	bool found = false;
 	u16 alias;
 	int ret;
 
@@ -258,11 +259,14 @@ i2c_atr_find_mapping_by_addr(struct i2c_atr_chan *chan, u16 addr)
 		if (unlikely(list_empty(alias_pairs)))
 			return NULL;
 
-		list_for_each_entry_reverse(c2a, alias_pairs, node)
-			if (!c2a->fixed)
+		list_for_each_entry_reverse(c2a, alias_pairs, node) {
+			if (!c2a->fixed) {
+				found = true;
 				break;
+			}
+		}
 
-		if (c2a->fixed)
+		if (!found)
 			return NULL;
 
 		atr->ops->detach_addr(atr, chan->chan_id, c2a->addr);
-- 
2.47.2


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

end of thread, other threads:[~2025-05-02 14:40 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-23  8:21 [PATCH next] i2c: Fix end of loop test in i2c_atr_find_mapping_by_addr() Dan Carpenter
2025-04-23 15:25 ` Romain Gantois
2025-04-23 17:29   ` Dan Carpenter
2025-04-24  6:32     ` Tomi Valkeinen
2025-04-24  7:10       ` Romain Gantois
2025-04-30 12:25         ` Luca Ceresoli
2025-05-02 14:40 ` Wolfram Sang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox