Commit 015b7dae authored by Bartosz Golaszewski's avatar Bartosz Golaszewski
Browse files

gpio: sim: lock hog configfs items if present



Depending on the user config, the leaf entry may be the hog directory,
not line. Check it and lock the correct item.

Fixes: 8bd76b3d ("gpio: sim: lock up configfs that an instantiated device depends on")
Tested-by: default avatarKoichiro Den <koichiro.den@canonical.com>
Link: https://lore.kernel.org/r/20250203110123.87701-1-brgl@bgdev.pl


Signed-off-by: default avatarBartosz Golaszewski <bartosz.golaszewski@linaro.org>
parent d6179f6c
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -1028,20 +1028,23 @@ gpio_sim_device_lockup_configfs(struct gpio_sim_device *dev, bool lock)
	struct configfs_subsystem *subsys = dev->group.cg_subsys;
	struct gpio_sim_bank *bank;
	struct gpio_sim_line *line;
	struct config_item *item;

	/*
	 * The device only needs to depend on leaf line entries. This is
	 * The device only needs to depend on leaf entries. This is
	 * sufficient to lock up all the configfs entries that the
	 * instantiated, alive device depends on.
	 */
	list_for_each_entry(bank, &dev->bank_list, siblings) {
		list_for_each_entry(line, &bank->line_list, siblings) {
			item = line->hog ? &line->hog->item
					 : &line->group.cg_item;

			if (lock)
				WARN_ON(configfs_depend_item_unlocked(
						subsys, &line->group.cg_item));
				WARN_ON(configfs_depend_item_unlocked(subsys,
								      item));
			else
				configfs_undepend_item_unlocked(
						&line->group.cg_item);
				configfs_undepend_item_unlocked(item);
		}
	}
}