summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnant Goel <anantg@codeaurora.org>2018-06-14 18:40:51 -0700
committerAnant Goel <anantg@codeaurora.org>2018-06-15 13:32:42 -0700
commita6672f6af9009ed68e431211e683f1d29a57b40e (patch)
treefb3c64872e103d4625a647703e07d857a7961501
parent53c73b71906f5ce07686603d9ff7fb20a06d296e (diff)
soc: qcom: subsystem_restart: Add checks to verify validity of a device
Extra checks are added to ensure a subsystem device is valid before accessing any of its fields. Change-Id: Ia8e3dced005485b1edb5d6ccf9429f90d31fa613 Signed-off-by: Anant Goel <anantg@codeaurora.org>
-rw-r--r--drivers/soc/qcom/subsystem_restart.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/soc/qcom/subsystem_restart.c b/drivers/soc/qcom/subsystem_restart.c
index ae249f382339..ea94456ccef8 100644
--- a/drivers/soc/qcom/subsystem_restart.c
+++ b/drivers/soc/qcom/subsystem_restart.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2017, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2011-2018, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -1083,7 +1083,7 @@ int subsystem_restart_dev(struct subsys_device *dev)
{
const char *name;
- if (!get_device(&dev->dev))
+ if ((!dev) || !get_device(&dev->dev))
return -ENODEV;
if (!try_module_get(dev->owner)) {
@@ -1177,11 +1177,21 @@ EXPORT_SYMBOL(subsystem_crashed);
void subsys_set_crash_status(struct subsys_device *dev,
enum crash_status crashed)
{
+ if (!dev) {
+ pr_err("Invalid subsystem device\n");
+ return;
+ }
+
dev->crashed = crashed;
}
enum crash_status subsys_get_crash_status(struct subsys_device *dev)
{
+ if (!dev) {
+ pr_err("Invalid subsystem device\n");
+ return CRASH_STATUS_NO_CRASH;
+ }
+
return dev->crashed;
}