static u32 rand1, preh_val, posth_val, jph_val;
 static int errors, handler_errors, num_tests;
+static u32 (*target)(u32 value);
 
 static noinline u32 kprobe_target(u32 value)
 {
-       /*
-        * gcc ignores noinline on some architectures unless we stuff
-        * sufficient lard into the function. The get_kprobe() here is
-        * just for that.
-        *
-        * NOTE: We aren't concerned about the correctness of get_kprobe()
-        * here; hence, this call is neither under !preempt nor with the
-        * kprobe_mutex held. This is fine(tm)
-        */
-       if (get_kprobe((void *)0xdeadbeef))
-               printk(KERN_INFO "Kprobe smoke test: probe on 0xdeadbeef!\n");
-
        return (value / div_factor);
 }
 
                return ret;
        }
 
-       ret = kprobe_target(rand1);
+       ret = target(rand1);
        unregister_kprobe(&kp);
 
        if (preh_val == 0) {
                return ret;
        }
 
-       ret = kprobe_target(rand1);
+       ret = target(rand1);
        unregister_jprobe(&jp);
        if (jph_val == 0) {
                printk(KERN_ERR "Kprobe smoke test failed: "
                return ret;
        }
 
-       ret = kprobe_target(rand1);
+       ret = target(rand1);
        unregister_kretprobe(&rp);
        if (krph_val != rand1) {
                printk(KERN_ERR "Kprobe smoke test failed: "
 {
        int ret;
 
+       target = kprobe_target;
+
        do {
                rand1 = random32();
        } while (rand1 <= div_factor);