- fix dereference of NULL return value. Add a NULL check
Coverity id : 23335
- fix logically dead code
handle function return values and use them for error checking
Coverity id : 23733
- fix write to pointer after free
free the pointer only after all operations are performed on it
Coverity id : 23719
- fix dereference before NULL check
check for NULL before dereferencing the variable
Coverity id : 22918
- fix out of bounds read
first check if value of variable 'i' is within range and
then only use it as array index
Coverity id : 23662
Bug
1329327
Change-Id: I70c9d6b00672211c7aaecc023ff2229efb52517f
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: http://git-master/r/256283
Reviewed-by: Mandar Padmawar <mpadmawar@nvidia.com>
Tested-by: Mandar Padmawar <mpadmawar@nvidia.com>
static int validate_reg(struct platform_device *ndev, u32 offset, int count)
{
- struct resource *r = platform_get_resource(ndev, IORESOURCE_MEM, 0);
int err = 0;
+ struct resource *r = platform_get_resource(ndev, IORESOURCE_MEM, 0);
+ if (!r) {
+ dev_err(&ndev->dev, "failed to get memory resource\n");
+ return -ENODEV;
+ }
if (offset + 4 * count > resource_size(r)
|| (offset + 4 * count < offset))
#ifdef CONFIG_PM_RUNTIME
if (pdata->clockgate_delay)
- pm_runtime_put_sync_autosuspend(&dev->dev);
+ err = pm_runtime_put_sync_autosuspend(&dev->dev);
else
- pm_runtime_put(&dev->dev);
+ err = pm_runtime_put(&dev->dev);
if (err)
- return err;
+ goto fail;
#endif
dev_info(&dev->dev, "initialized\n");
nvhost_memmgr_put(nvhost_get_host(dev)->memmgr, m->mem_r);
m->mem_r = NULL;
}
+ m->valid = false;
kfree(m);
set_msenc(dev, NULL);
- m->valid = false;
}
int nvhost_msenc_finalize_poweron(struct platform_device *dev)
/* initialize clocks to known state (=enabled) */
pdata->num_clks = 0;
INIT_LIST_HEAD(&pdata->client_list);
- while (pdata->clocks[i].name && i < NVHOST_MODULE_MAX_CLOCKS) {
+ while (i < NVHOST_MODULE_MAX_CLOCKS && pdata->clocks[i].name) {
char devname[MAX_DEVID_LENGTH];
long rate = pdata->clocks[i].default_rate;
struct clk *c;