| 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 |
| |
| 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> |
| [lizf: Backported to 3.4: dev_name() is passed to debugfs_create_dir() in 3.4] |
| Signed-off-by: Zefan Li <lizefan@huawei.com> |
| --- |
| drivers/base/regmap/regmap-debugfs.c | 7 ++++++- |
| 1 file changed, 6 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/base/regmap/regmap-debugfs.c |
| +++ b/drivers/base/regmap/regmap-debugfs.c |
| @@ -244,7 +244,12 @@ static const struct file_operations regm |
| |
| void regmap_debugfs_init(struct regmap *map) |
| { |
| - map->debugfs = debugfs_create_dir(dev_name(map->dev), |
| + const char *devname = "dummy"; |
| + |
| + if (map->dev) |
| + devname = dev_name(map->dev); |
| + |
| + map->debugfs = debugfs_create_dir(devname, |
| regmap_debugfs_root); |
| if (!map->debugfs) { |
| dev_warn(map->dev, "Failed to create debugfs directory\n"); |