diff options
author | Satyajit Desai <sadesai@codeaurora.org> | 2016-10-20 14:29:07 -0700 |
---|---|---|
committer | Satyajit Desai <sadesai@codeaurora.org> | 2016-10-20 15:07:51 -0700 |
commit | 2e131bfcaf771f2a6b34b966c218a17ec2179e4b (patch) | |
tree | 8a7be261354e721ff887fae59d8f17cf847c61c0 /drivers/hwtracing | |
parent | 1ff56658f3493b9e56cb30d1ddcd7e6646d14c85 (diff) |
coresight: tmc: avoid null pointer dereference
Add NULL pointer checks to avoid kernel NULL pointer dereference.
Change-Id: I06426109ab39d33e2b11514082c0bc989c4c8167
Signed-off-by: Satyajit Desai <sadesai@codeaurora.org>
Diffstat (limited to 'drivers/hwtracing')
-rw-r--r-- | drivers/hwtracing/coresight/coresight-tmc.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/drivers/hwtracing/coresight/coresight-tmc.c b/drivers/hwtracing/coresight/coresight-tmc.c index 306465ededf9..0ec83d1437cd 100644 --- a/drivers/hwtracing/coresight/coresight-tmc.c +++ b/drivers/hwtracing/coresight/coresight-tmc.c @@ -792,11 +792,14 @@ static int tmc_enable(struct tmc_drvdata *drvdata, enum tmc_mode mode) drvdata->out_mode == TMC_ETR_OUT_MODE_USB) { drvdata->usbch = usb_qdss_open("qdss", drvdata, usb_notifier); - if (IS_ERR(drvdata->usbch)) { + if (IS_ERR_OR_NULL(drvdata->usbch)) { dev_err(drvdata->dev, "usb_qdss_open failed\n"); ret = PTR_ERR(drvdata->usbch); pm_runtime_put(drvdata->dev); mutex_unlock(&drvdata->mem_lock); + if (!ret) + ret = -ENODEV; + return ret; } } else if (drvdata->config_type == TMC_CONFIG_TYPE_ETB || @@ -1840,12 +1843,13 @@ static int tmc_probe(struct amba_device *adev, const struct amba_id *id) struct device_node *np = adev->dev.of_node; struct coresight_cti_data *ctidata; - if (np) { - pdata = of_get_coresight_platform_data(dev, np); - if (IS_ERR(pdata)) - return PTR_ERR(pdata); - adev->dev.platform_data = pdata; - } + if (!np) + return -ENODEV; + + pdata = of_get_coresight_platform_data(dev, np); + if (IS_ERR(pdata)) + return PTR_ERR(pdata); + adev->dev.platform_data = pdata; drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL); if (!drvdata) |