| From 2c98e0c1cc6b8e86f1978286c3d4e0769ee9d733 Mon Sep 17 00:00:00 2001 |
| From: Xiubo Li <Li.Xiubo@freescale.com> |
| Date: Sun, 28 Sep 2014 11:35:25 +0800 |
| Subject: regmap: debugfs: fix possbile NULL pointer dereference |
| |
| From: Xiubo Li <Li.Xiubo@freescale.com> |
| |
| commit 2c98e0c1cc6b8e86f1978286c3d4e0769ee9d733 upstream. |
| |
| If 'map->dev' is NULL and there will lead dev_name() to be NULL pointer |
| dereference. So before dev_name(), we need to have check of the map->dev |
| pionter. |
| |
| We also should make sure that the 'name' pointer shouldn't be NULL for |
| debugfs_create_dir(). So here using one default "dummy" debugfs name when |
| the 'name' pointer and 'map->dev' are both NULL. |
| |
| Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com> |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/base/regmap/regmap-debugfs.c | 8 ++++++-- |
| 1 file changed, 6 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/base/regmap/regmap-debugfs.c |
| +++ b/drivers/base/regmap/regmap-debugfs.c |
| @@ -460,16 +460,20 @@ void regmap_debugfs_init(struct regmap * |
| { |
| struct rb_node *next; |
| struct regmap_range_node *range_node; |
| + const char *devname = "dummy"; |
| |
| INIT_LIST_HEAD(&map->debugfs_off_cache); |
| mutex_init(&map->cache_lock); |
| |
| + if (map->dev) |
| + devname = dev_name(map->dev); |
| + |
| if (name) { |
| map->debugfs_name = kasprintf(GFP_KERNEL, "%s-%s", |
| - dev_name(map->dev), name); |
| + devname, name); |
| name = map->debugfs_name; |
| } else { |
| - name = dev_name(map->dev); |
| + name = devname; |
| } |
| |
| map->debugfs = debugfs_create_dir(name, regmap_debugfs_root); |