Skip to contentSkip to conversation

regmap: Also protect hwspinlock in error handling path

PATCH In review Mark Brown 1 participant 4 messages Nov 3, 2017

Subsystems (2)
lore
Share & tools
lore

Mark Brown

author maintainer
#0 lore raw

PATCH 1/2 regmap: Also protect hwspinlock in error handling path

The previous patch to allow the hwspinlock code to be disabled missed handling the free in the error path, do so using the better IS_ENABLED() pattern as suggested by Baolin. While we're at it also check that we have a hardware spinlock before freeing it - the core code reports an error when freeing an invalid lock.

---
 drivers/base/regmap/regmap.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/base/regmap/regmap.c +2 -1
index ff6ef6a579c6..5ff549fa880b 100644
@@ -1116,7 +1116,8 @@ struct regmap *__regmap_init(struct device *dev,
 	regmap_range_exit(map);
 	kfree(map->work_buf);
 err_hwlock:
-	hwspin_lock_free(map->hwlock);
+	if (IS_ENABLED(REGMAP_HWSPINLOCK) && map->hwlock)
+		hwspin_lock_free(map->hwlock);
 err_map:
 	kfree(map);
 err:
Signature · 1 line
2.15.0
author maintainer
#1 lore raw

PATCH 2/2 regmap: Clean up hwspinlock on regmap exit

We should free any hwspinlocks when we destroy the regmap, do so.

---
 drivers/base/regmap/regmap.c | 2 ++
 1 file changed, 2 insertions(+)
drivers/base/regmap/regmap.c +2 -0
index 5ff549fa880b..bfe2f250d011 100644
@@ -1305,6 +1305,8 @@ void regmap_exit(struct regmap *map)
 		kfree(async->work_buf);
 		kfree(async);
 	}
+	if (IS_ENABLED(REGMAP_HWSPINLOCK) && map->hwlock)
+		hwspin_lock_free(map->hwlock);
 	kfree(map);
 }
 EXPORT_SYMBOL_GPL(regmap_exit);
Signature · 1 line
2.15.0
author maintainer
#2 lore raw

Applied "regmap: Clean up hwspinlock on regmap exit" to the regmap tree

The patch

regmap: Clean up hwspinlock on regmap exit

has been applied to the regmap tree at

https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git

All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying to this mail.

Thanks,
Mark

Quoted 1 line

From e8419c40a5ad58eaa112173f554148accc6794f3 Mon Sep 17 00:00:00 2001

From: Mark Brown <[email protected]>
Date: Fri, 3 Nov 2017 19:53:56 +0000
Subject: [PATCH] regmap: Clean up hwspinlock on regmap exit

We should free any hwspinlocks when we destroy the regmap, do so.

---
 drivers/base/regmap/regmap.c | 2 ++
 1 file changed, 2 insertions(+)
drivers/base/regmap/regmap.c +2 -0
index 5ff549fa880b..bfe2f250d011 100644
@@ -1305,6 +1305,8 @@ void regmap_exit(struct regmap *map)
 		kfree(async->work_buf);
 		kfree(async);
 	}
+	if (IS_ENABLED(REGMAP_HWSPINLOCK) && map->hwlock)
+		hwspin_lock_free(map->hwlock);
 	kfree(map);
 }
 EXPORT_SYMBOL_GPL(regmap_exit);
Signature · 1 line
2.15.0
author maintainer
#3 lore raw

Applied "regmap: Also protect hwspinlock in error handling path" to the regmap tree

In reply to Mark Brown

The patch

regmap: Also protect hwspinlock in error handling path

has been applied to the regmap tree at

https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git

All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying to this mail.

Thanks,
Mark

Quoted 1 line

From 267f3e4f18f1ccf9e8cf72c3b4689df03025516d Mon Sep 17 00:00:00 2001

From: Mark Brown <[email protected]>
Date: Fri, 3 Nov 2017 19:50:20 +0000
Subject: [PATCH] regmap: Also protect hwspinlock in error handling path

The previous patch to allow the hwspinlock code to be disabled missed handling the free in the error path, do so using the better IS_ENABLED() pattern as suggested by Baolin. While we're at it also check that we have a hardware spinlock before freeing it - the core code reports an error when freeing an invalid lock.

---
 drivers/base/regmap/regmap.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/base/regmap/regmap.c +2 -1
index ff6ef6a579c6..5ff549fa880b 100644
@@ -1116,7 +1116,8 @@ struct regmap *__regmap_init(struct device *dev,
 	regmap_range_exit(map);
 	kfree(map->work_buf);
 err_hwlock:
-	hwspin_lock_free(map->hwlock);
+	if (IS_ENABLED(REGMAP_HWSPINLOCK) && map->hwlock)
+		hwspin_lock_free(map->hwlock);
 err_map:
 	kfree(map);
 err:
Signature · 1 line
2.15.0