void local_bh_disable(void)
 {
-       __local_bh_disable((unsigned long)__builtin_return_address(0),
-                               SOFTIRQ_DISABLE_OFFSET);
+       __local_bh_disable(_RET_IP_, SOFTIRQ_DISABLE_OFFSET);
 }
 
 EXPORT_SYMBOL(local_bh_disable);
        WARN_ON_ONCE(!irqs_disabled());
 
        if (softirq_count() == cnt)
-               trace_softirqs_on((unsigned long)__builtin_return_address(0));
+               trace_softirqs_on(_RET_IP_);
        sub_preempt_count(cnt);
 }
 
 
 void local_bh_enable(void)
 {
-       _local_bh_enable_ip((unsigned long)__builtin_return_address(0));
+       _local_bh_enable_ip(_RET_IP_);
 }
 EXPORT_SYMBOL(local_bh_enable);
 
        pending = local_softirq_pending();
        account_irq_enter_time(current);
 
-       __local_bh_disable((unsigned long)__builtin_return_address(0),
-                               SOFTIRQ_OFFSET);
+       __local_bh_disable(_RET_IP_, SOFTIRQ_OFFSET);
        lockdep_softirq_enter();
 
        cpu = smp_processor_id();