Commit 656cc2e8 authored by Koichiro Den's avatar Koichiro Den Committed by Bartosz Golaszewski
Browse files

gpio: virtuser: fix handling of multiple conn_ids in lookup table



Creating a virtuser device via configfs with multiple conn_ids fails due
to incorrect indexing of lookup entries. Correct the indexing logic to
ensure proper functionality when multiple gpio_virtuser_lookup are
created.

Fixes: 91581c4b ("gpio: virtuser: new virtual testing driver for the GPIO API")
Signed-off-by: default avatarKoichiro Den <koichiro.den@canonical.com>
Link: https://lore.kernel.org/r/20250103141829.430662-3-koichiro.den@canonical.com


Signed-off-by: default avatarBartosz Golaszewski <bartosz.golaszewski@linaro.org>
parent a619cba8
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -1410,7 +1410,7 @@ gpio_virtuser_make_lookup_table(struct gpio_virtuser_device *dev)
	size_t num_entries = gpio_virtuser_get_lookup_count(dev);
	struct gpio_virtuser_lookup_entry *entry;
	struct gpio_virtuser_lookup *lookup;
	unsigned int i = 0;
	unsigned int i = 0, idx;

	lockdep_assert_held(&dev->lock);

@@ -1424,12 +1424,12 @@ gpio_virtuser_make_lookup_table(struct gpio_virtuser_device *dev)
		return -ENOMEM;

	list_for_each_entry(lookup, &dev->lookup_list, siblings) {
		idx = 0;
		list_for_each_entry(entry, &lookup->entry_list, siblings) {
			table->table[i] =
			table->table[i++] =
				GPIO_LOOKUP_IDX(entry->key,
						entry->offset < 0 ? U16_MAX : entry->offset,
						lookup->con_id, i, entry->flags);
			i++;
						lookup->con_id, idx++, entry->flags);
		}
	}