gpio: sim: lock hog configfs items if present

BugLink: https://bugs.launchpad.net/bugs/2107449

[ Upstream commit 015b7dae084fa95465ff89f6cbf15fe49906a370 ]

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

Fixes: 8bd76b3d3f3a ("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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit f014a926eb5aeaff6bcc6c09298f7985a6d80f39 linux-6.12.y)
[koichiroden: follow-up fix from v6.12.14]
Signed-off-by: Koichiro Den <koichiro.den@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
This commit is contained in:
Bartosz Golaszewski
2025-02-03 12:01:23 +01:00
committed by Stefan Bader
parent a538e6eb0c
commit 57a182b1c7
+8 -5
View File
@@ -1015,20 +1015,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);
}
}
}