return -ENODEV;
 
        cpus_allowed = current->cpus_allowed;
-       set_cpus_allowed(current, cpumask_of_cpu(cpu));
+       set_cpus_allowed_ptr(current, cpumask_of(cpu));
 
        if (cpufreq_frequency_table_target
            (policy, &loongson2_clockmod_table[0], target_freq, relation,
        /* notifiers */
        cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
 
-       set_cpus_allowed(current, cpus_allowed);
+       set_cpus_allowed_ptr(current, &cpus_allowed);
 
        /* setting the cpu frequency */
        clk_set_rate(cpuclk, freq);
 
        if (test_ti_thread_flag(ti, TIF_FPUBOUND) &&
            cpus_intersects(new_mask, mt_fpu_cpumask)) {
                cpus_and(effective_mask, new_mask, mt_fpu_cpumask);
-               retval = set_cpus_allowed(p, effective_mask);
+               retval = set_cpus_allowed_ptr(p, &effective_mask);
        } else {
                clear_ti_thread_flag(ti, TIF_FPUBOUND);
-               retval = set_cpus_allowed(p, new_mask);
+               retval = set_cpus_allowed_ptr(p, &new_mask);
        }
 
 out_unlock:
 
                                = current->cpus_allowed;
                        cpus_and(tmask, current->cpus_allowed,
                                mt_fpu_cpumask);
-                       set_cpus_allowed(current, tmask);
+                       set_cpus_allowed_ptr(current, &tmask);
                        set_thread_flag(TIF_FPUBOUND);
                }
        }