msm: kgsl: Check for NULL from kgsl_get_device_from_dev
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
diff --git a/drivers/gpu/msm/kgsl_pwrctrl.c b/drivers/gpu/msm/kgsl_pwrctrl.c
index fb74c35..4089966 100644
--- a/drivers/gpu/msm/kgsl_pwrctrl.c
+++ b/drivers/gpu/msm/kgsl_pwrctrl.c
@@ -49,7 +49,11 @@
{ int ret, i, delta = 5000000;
unsigned long val;
struct kgsl_device *device = kgsl_device_from_dev(dev);
- struct kgsl_pwrctrl *pwr = &device->pwrctrl;
+ struct kgsl_pwrctrl *pwr;
+
+ if (device == NULL)
+ return 0;
+ pwr = &device->pwrctrl;
ret = sscanf(buf, "%ld", &val);
if (ret != 1)
@@ -95,7 +99,10 @@
char *buf)
{
struct kgsl_device *device = kgsl_device_from_dev(dev);
- struct kgsl_pwrctrl *pwr = &device->pwrctrl;
+ struct kgsl_pwrctrl *pwr;
+ if (device == NULL)
+ return 0;
+ pwr = &device->pwrctrl;
return snprintf(buf, PAGE_SIZE, "%d\n",
pwr->pwrlevels[pwr->thermal_pwrlevel].gpu_freq);
}
@@ -112,7 +119,10 @@
char *buf)
{
struct kgsl_device *device = kgsl_device_from_dev(dev);
- struct kgsl_pwrctrl *pwr = &device->pwrctrl;
+ struct kgsl_pwrctrl *pwr;
+ if (device == NULL)
+ return 0;
+ pwr = &device->pwrctrl;
return snprintf(buf, PAGE_SIZE, "%d\n",
pwr->pwrlevels[pwr->active_pwrlevel].gpu_freq);
}
@@ -124,9 +134,13 @@
char temp[20];
unsigned long val;
struct kgsl_device *device = kgsl_device_from_dev(dev);
- struct kgsl_pwrctrl *pwr = &device->pwrctrl;
+ struct kgsl_pwrctrl *pwr;
int rc;
+ if (device == NULL)
+ return 0;
+ pwr = &device->pwrctrl;
+
snprintf(temp, sizeof(temp), "%.*s",
(int)min(count, sizeof(temp) - 1), buf);
rc = strict_strtoul(temp, 0, &val);
@@ -150,8 +164,9 @@
char *buf)
{
struct kgsl_device *device = kgsl_device_from_dev(dev);
- struct kgsl_pwrctrl *pwr = &device->pwrctrl;
- return snprintf(buf, PAGE_SIZE, "%d\n", pwr->nap_allowed);
+ if (device == NULL)
+ return 0;
+ return snprintf(buf, PAGE_SIZE, "%d\n", device->pwrctrl.nap_allowed);
}
@@ -162,11 +177,15 @@
char temp[20];
unsigned long val;
struct kgsl_device *device = kgsl_device_from_dev(dev);
- struct kgsl_pwrctrl *pwr = &device->pwrctrl;
+ struct kgsl_pwrctrl *pwr;
const long div = 1000/HZ;
static unsigned int org_interval_timeout = 1;
int rc;
+ if (device == NULL)
+ return 0;
+ pwr = &device->pwrctrl;
+
snprintf(temp, sizeof(temp), "%.*s",
(int)min(count, sizeof(temp) - 1), buf);
rc = strict_strtoul(temp, 0, &val);
@@ -193,8 +212,10 @@
char *buf)
{
struct kgsl_device *device = kgsl_device_from_dev(dev);
- struct kgsl_pwrctrl *pwr = &device->pwrctrl;
- return snprintf(buf, PAGE_SIZE, "%d\n", pwr->interval_timeout);
+ if (device == NULL)
+ return 0;
+ return snprintf(buf, PAGE_SIZE, "%d\n",
+ device->pwrctrl.interval_timeout);
}
DEVICE_ATTR(gpuclk, 0644, kgsl_pwrctrl_gpuclk_show, kgsl_pwrctrl_gpuclk_store);