1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00

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: 8bd76b3d3f ("gpio: sim: lock up configfs that an instantiated device depends on")
Tested-by: Koichiro Den <koichiro.den@canonical.com>
Link: https://lore.kernel.org/r/20250203110123.87701-1-brgl@bgdev.pl
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
This commit is contained in:
Bartosz Golaszewski 2025-02-03 12:01:23 +01:00
parent d6179f6c62
commit 015b7dae08

View file

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