gpiommc: Add locking
PATCH 1/1 gpiommc: Add locking
The gpiommc configfs context structure needs locking, as configfs does not lock access between files (or if it does, we shouldn't depend on this to magically happen).
Signed-off-by Michael Buesch <[email protected]>
drivers/mmc/host/gpiommc.c +11 -0
@@ -143,6 +143,8 @@ struct gpiommc_configfs_device {struct platform_device *pdev;/* The configuration */ struct gpiommc_platform_data pdata; +/* Mutex to protect this structure */ +struct mutex mutex; };#define GPIO_INVALID -1
@@ -233,6 +235,8 @@ static ssize_t gpiommc_config_attr_show(unsigned int gpio;int err =0 ; +mutex_lock (&dev->mutex); +if (attr == &gpiommc_attr_DI) { gpio = dev->pdata.pins.gpio_di;if (gpio ==GPIO_INVALID )
@@ -293,6 +297,8 @@ static ssize_t gpiommc_config_attr_show(WARN_ON (1 ); err = -ENOSYS ; out: +mutex_unlock (&dev->mutex); +return err ? err : count; }
@@ -352,6 +358,8 @@ static ssize_t gpiommc_config_attr_storeint err = -EINVAL ;unsigned long data; +mutex_lock (&dev->mutex); +if (attr == &gpiommc_attr_register) { err =strict_strtoul (page,10 , &data);if (err)
@@ -477,6 +485,8 @@ static ssize_t gpiommc_config_attr_storeWARN_ON (1 ); err = -ENOSYS ; out: +mutex_unlock (&dev->mutex); +return err ? err : count; }
@@ -513,6 +523,7 @@ static struct config_item *gpiommc_make_if (!dev)return NULL ; +mutex_init (&dev->mutex);config_item_init_type_name (&dev->item, name, &gpiommc_dev_ci_type);
Signature · 1 line
Greetings Michael.