regmap: Reject fast_io regmap configurations with RBTREE and MAPLE caches
REGCACHE_RBTREE and REGCACHE_MAPLE dynamically allocate memory for regmap operations. This is incompatible with spinlock based locking which is used for fast_io operations. Reject affected configurations. Signed-off-by: Guenter Roeck <linux@roeck-us.net> Link: https://lore.kernel.org/r/20230720032848.1306349-2-linux@roeck-us.net Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
99aae70551
commit
ee43f5bb23
@ -723,6 +723,15 @@ struct regmap *__regmap_init(struct device *dev,
|
|||||||
} else {
|
} else {
|
||||||
if ((bus && bus->fast_io) ||
|
if ((bus && bus->fast_io) ||
|
||||||
config->fast_io) {
|
config->fast_io) {
|
||||||
|
/*
|
||||||
|
* fast_io is incompatible with REGCACHE_RBTREE and REGCACHE_MAPLE
|
||||||
|
* since both need to dynamically allocate memory.
|
||||||
|
*/
|
||||||
|
if (config->cache_type == REGCACHE_RBTREE ||
|
||||||
|
config->cache_type == REGCACHE_MAPLE) {
|
||||||
|
ret = -EINVAL;
|
||||||
|
goto err_name;
|
||||||
|
}
|
||||||
if (config->use_raw_spinlock) {
|
if (config->use_raw_spinlock) {
|
||||||
raw_spin_lock_init(&map->raw_spinlock);
|
raw_spin_lock_init(&map->raw_spinlock);
|
||||||
map->lock = regmap_lock_raw_spinlock;
|
map->lock = regmap_lock_raw_spinlock;
|
||||||
|
Loading…
Reference in New Issue
Block a user