macintosh/windfarm_pm121.c: Fix for possible null pointer dereference
authorRickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
Sat, 17 May 2014 17:20:57 +0000 (19:20 +0200)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 20 May 2014 00:56:00 +0000 (10:56 +1000)
There is otherwise a risk of a possible null pointer dereference.

Was largely found by using a static code analysis program called cppcheck.

Signed-off-by: Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
drivers/macintosh/windfarm_pm121.c

index 7fe58b0ae8b4713a5cc135cf914160fc0e9e9883..b350fb86ff08c93f9bc11c43d642d4c3feed765d 100644 (file)
@@ -555,8 +555,18 @@ static void pm121_create_sys_fans(int loop_id)
        pid_param.interval      = PM121_SYS_INTERVAL;
        pid_param.history_len   = PM121_SYS_HISTORY_SIZE;
        pid_param.itarget       = param->itarget;
-       pid_param.min           = control->ops->get_min(control);
-       pid_param.max           = control->ops->get_max(control);
+       if(control)
+       {
+               pid_param.min           = control->ops->get_min(control);
+               pid_param.max           = control->ops->get_max(control);
+       } else {
+               /*
+                * This is probably not the right!?
+                * Perhaps goto fail  if control == NULL  above?
+                */
+               pid_param.min           = 0;
+               pid_param.max           = 0;
+       }
 
        wf_pid_init(&pm121_sys_state[loop_id]->pid, &pid_param);
 
@@ -571,7 +581,7 @@ static void pm121_create_sys_fans(int loop_id)
           control the same control */
        printk(KERN_WARNING "pm121: failed to set up %s loop "
               "setting \"%s\" to max speed.\n",
-              loop_names[loop_id], control->name);
+              loop_names[loop_id], control ? control->name : "uninitialized value");
 
        if (control)
                wf_control_set_max(control);