2013-07-04 11:17:27

by Daniel Mack

[permalink] [raw]
Subject: [PATCH] regmap: cache: bail in regmap_async_complete() for bus-less maps

Commit f8bd822cb ("regmap: cache: Factor out block sync") made
regcache_rbtree_sync() call regmap_async_complete(), which in turn does
not check for map->bus before dereferencing it.

This causes a NULL pointer dereference on bus-less maps.

Signed-off-by: Daniel Mack <[email protected]>
Cc: [email protected] [v3.10 only]
---
drivers/base/regmap/regmap.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
index a941dcf..d0c81d1 100644
--- a/drivers/base/regmap/regmap.c
+++ b/drivers/base/regmap/regmap.c
@@ -1717,7 +1717,7 @@ int regmap_async_complete(struct regmap *map)
int ret;

/* Nothing to do with no async support */
- if (!map->bus->async_write)
+ if (!map->bus || !map->bus->async_write)
return 0;

trace_regmap_async_complete_start(map->dev);
--
1.8.1.4


2013-07-04 12:55:21

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH] regmap: cache: bail in regmap_async_complete() for bus-less maps

On Thu, Jul 04, 2013 at 01:11:03PM +0200, Daniel Mack wrote:
> Commit f8bd822cb ("regmap: cache: Factor out block sync") made
> regcache_rbtree_sync() call regmap_async_complete(), which in turn does
> not check for map->bus before dereferencing it.

Applied, thanks.


Attachments:
(No filename) (268.00 B)
signature.asc (836.00 B)
Digital signature
Download all attachments