summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSatyajit Desai <sadesai@codeaurora.org>2016-10-20 14:29:07 -0700
committerSatyajit Desai <sadesai@codeaurora.org>2016-10-20 15:07:51 -0700
commit2e131bfcaf771f2a6b34b966c218a17ec2179e4b (patch)
tree8a7be261354e721ff887fae59d8f17cf847c61c0
parent1ff56658f3493b9e56cb30d1ddcd7e6646d14c85 (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>
-rw-r--r--drivers/hwtracing/coresight/coresight-tmc.c18
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)