drivers/cpuidle: Move dereference after NULL test
Julia Lawall [Tue, 15 Dec 2009 02:00:09 +0000 (18:00 -0800)]
It does not seem possible that ldev can be NULL, so drop the unnecessary
test.  If ldev can somehow be NULL, then the initialization of last_idx
should be moved below the test.

A simplified version of the semantic match that detects this problem is as
follows (http://coccinelle.lip6.fr/):

// <smpl>
@match exists@
expression x, E;
identifier fld;
@@

* x->fld
  ... when != \(x = E\|&x\)
* x == NULL
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Acked-by: Arjan van de Ven <arjan@linux.intel.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

drivers/cpuidle/governors/ladder.c

index a4bec3f..1c1ceb4 100644 (file)
@@ -69,9 +69,6 @@ static int ladder_select_state(struct cpuidle_device *dev)
        int last_residency, last_idx = ldev->last_state_idx;
        int latency_req = pm_qos_requirement(PM_QOS_CPU_DMA_LATENCY);
 
-       if (unlikely(!ldev))
-               return 0;
-
        /* Special case when user has set very strict latency requirement */
        if (unlikely(latency_req == 0)) {
                ladder_do_selection(ldev, last_idx, 0);