diff options
author | Shreshtha Sahu <ssahu@nvidia.com> | 2013-08-01 16:14:59 +0530 |
---|---|---|
committer | Matthew Pedro <mapedro@nvidia.com> | 2013-08-07 10:09:49 -0700 |
commit | af42f432f683430df34a2a2ba084492daaae0a5c (patch) | |
tree | 8fa47c7ce091efab1add28f0eca6d34961dfc4ee /drivers/media/video/tegra/max77665-flash.c | |
parent | b358015d5dc66e1c2de23f68aeb6b53d485f1365 (diff) |
media: video: tegra: fix miscdevice registeration nametegra-l4t-r17.1tegra-l4t-r17-17r1
Allocate driver name string in info struct, rather than passing
a pointer to a stack allocated array when registering a miscdevice.
This prevents 'cat /proc/misc' from dereferencing a dangling
pointer.
Drivers of following devices were updated - ad5816, as364x, dw9718,
imx091, max77387, max77665-flash, ov5693, ov9772, sh532u, ssl3250a
and tps61050.
Change-Id: I2344e6fefabdeda962ea33bc10803881e07ab3f0
Signed-off-by: Shreshtha Sahu <ssahu@nvidia.com>
Reviewed-on: http://git-master/r/256818
GVS: Gerrit_Virtual_Submit
Reviewed-by: Kiran Adduri <kadduri@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Reviewed-by: Matthew Pedro <mapedro@nvidia.com>
Diffstat (limited to 'drivers/media/video/tegra/max77665-flash.c')
-rw-r--r-- | drivers/media/video/tegra/max77665-flash.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/media/video/tegra/max77665-flash.c b/drivers/media/video/tegra/max77665-flash.c index 2feee300eb42..c6a2cf25da36 100644 --- a/drivers/media/video/tegra/max77665-flash.c +++ b/drivers/media/video/tegra/max77665-flash.c @@ -275,6 +275,7 @@ struct max77665_f_info { u8 ttimer_mode; u8 new_ftimer; u8 new_ttimer; + char devname[16]; }; static const struct max77665_f_caps_struct max77665_f_caps = { @@ -1550,7 +1551,6 @@ static int max77665_f_probe(struct platform_device *pdev) { struct max77665_f_info *info; struct max77665 *maxim; - char dname[16]; dev_info(&pdev->dev, "%s\n", __func__); @@ -1594,18 +1594,19 @@ static int max77665_f_probe(struct platform_device *pdev) mutex_init(&info->mutex); if (info->pdata->dev_name != NULL) - strcpy(dname, info->pdata->dev_name); + strncpy(info->devname, info->pdata->dev_name, + sizeof(info->devname) - 1); else - strcpy(dname, "max77665_f"); + strncpy(info->devname, "max77665_f", sizeof(info->devname) - 1); if (info->pdata->num) - snprintf(dname, sizeof(dname), "%s.%u", - dname, info->pdata->num); - info->miscdev.name = dname; + snprintf(info->devname, sizeof(info->devname), "%s.%u", + info->devname, info->pdata->num); + info->miscdev.name = info->devname; info->miscdev.fops = &max77665_f_fileops; info->miscdev.minor = MISC_DYNAMIC_MINOR; if (misc_register(&info->miscdev)) { dev_err(&pdev->dev, "%s unable to register misc device %s\n", - __func__, dname); + __func__, info->devname); max77665_f_del(info); return -ENODEV; } |