mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	regmap: Hold the regmap lock when allocating and freeing the cache
For the benefit of the maple tree's lockdep checking hold the lock while creating and exiting the cache. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://patch.msgid.link/20240822-b4-regmap-maple-nolock-v1-2-d5e6dbae3396@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
		
							parent
							
								
									c69bb91c47
								
							
						
					
					
						commit
						fd4ebc07b4
					
				
					 2 changed files with 5 additions and 0 deletions
				
			
		| 
						 | 
					@ -195,7 +195,9 @@ int regcache_init(struct regmap *map, const struct regmap_config *config)
 | 
				
			||||||
	if (map->cache_ops->init) {
 | 
						if (map->cache_ops->init) {
 | 
				
			||||||
		dev_dbg(map->dev, "Initializing %s cache\n",
 | 
							dev_dbg(map->dev, "Initializing %s cache\n",
 | 
				
			||||||
			map->cache_ops->name);
 | 
								map->cache_ops->name);
 | 
				
			||||||
 | 
							map->lock(map->lock_arg);
 | 
				
			||||||
		ret = map->cache_ops->init(map);
 | 
							ret = map->cache_ops->init(map);
 | 
				
			||||||
 | 
							map->unlock(map->lock_arg);
 | 
				
			||||||
		if (ret)
 | 
							if (ret)
 | 
				
			||||||
			goto err_free;
 | 
								goto err_free;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -223,7 +225,9 @@ void regcache_exit(struct regmap *map)
 | 
				
			||||||
	if (map->cache_ops->exit) {
 | 
						if (map->cache_ops->exit) {
 | 
				
			||||||
		dev_dbg(map->dev, "Destroying %s cache\n",
 | 
							dev_dbg(map->dev, "Destroying %s cache\n",
 | 
				
			||||||
			map->cache_ops->name);
 | 
								map->cache_ops->name);
 | 
				
			||||||
 | 
							map->lock(map->lock_arg);
 | 
				
			||||||
		map->cache_ops->exit(map);
 | 
							map->cache_ops->exit(map);
 | 
				
			||||||
 | 
							map->unlock(map->lock_arg);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1445,6 +1445,7 @@ void regmap_exit(struct regmap *map)
 | 
				
			||||||
	struct regmap_async *async;
 | 
						struct regmap_async *async;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	regcache_exit(map);
 | 
						regcache_exit(map);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	regmap_debugfs_exit(map);
 | 
						regmap_debugfs_exit(map);
 | 
				
			||||||
	regmap_range_exit(map);
 | 
						regmap_range_exit(map);
 | 
				
			||||||
	if (map->bus && map->bus->free_context)
 | 
						if (map->bus && map->bus->free_context)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue