Commit 59cba4a0 authored by Bartosz Golaszewski's avatar Bartosz Golaszewski
Browse files

gpio: sysfs: extend the critical section for unregistering sysfs devices



Checking the gdev->mockdev pointer for NULL must be part of the critical
section.

Signed-off-by: default avatarBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Acked-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
parent b6f87adb
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0

#include <linux/bitops.h>
#include <linux/cleanup.h>
#include <linux/device.h>
#include <linux/idr.h>
#include <linux/init.h>
@@ -768,15 +769,15 @@ void gpiochip_sysfs_unregister(struct gpio_device *gdev)
	struct gpio_desc *desc;
	struct gpio_chip *chip = gdev->chip;

	scoped_guard(mutex, &sysfs_lock) {
		if (!gdev->mockdev)
			return;

		device_unregister(gdev->mockdev);

		/* prevent further gpiod exports */
	mutex_lock(&sysfs_lock);
		gdev->mockdev = NULL;
	mutex_unlock(&sysfs_lock);
	}

	/* unregister gpiod class devices owned by sysfs */
	for_each_gpio_desc_with_flag(chip, desc, FLAG_SYSFS) {