aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/softirq.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/softirq.c')
-rw-r--r--kernel/softirq.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/kernel/softirq.c b/kernel/softirq.c
index 3d6833f125d3..be3d3514c325 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -127,8 +127,7 @@ static inline void __local_bh_disable(unsigned long ip, unsigned int cnt)
127 127
128void local_bh_disable(void) 128void local_bh_disable(void)
129{ 129{
130 __local_bh_disable((unsigned long)__builtin_return_address(0), 130 __local_bh_disable(_RET_IP_, SOFTIRQ_DISABLE_OFFSET);
131 SOFTIRQ_DISABLE_OFFSET);
132} 131}
133 132
134EXPORT_SYMBOL(local_bh_disable); 133EXPORT_SYMBOL(local_bh_disable);
@@ -139,7 +138,7 @@ static void __local_bh_enable(unsigned int cnt)
139 WARN_ON_ONCE(!irqs_disabled()); 138 WARN_ON_ONCE(!irqs_disabled());
140 139
141 if (softirq_count() == cnt) 140 if (softirq_count() == cnt)
142 trace_softirqs_on((unsigned long)__builtin_return_address(0)); 141 trace_softirqs_on(_RET_IP_);
143 sub_preempt_count(cnt); 142 sub_preempt_count(cnt);
144} 143}
145 144
@@ -184,7 +183,7 @@ static inline void _local_bh_enable_ip(unsigned long ip)
184 183
185void local_bh_enable(void) 184void local_bh_enable(void)
186{ 185{
187 _local_bh_enable_ip((unsigned long)__builtin_return_address(0)); 186 _local_bh_enable_ip(_RET_IP_);
188} 187}
189EXPORT_SYMBOL(local_bh_enable); 188EXPORT_SYMBOL(local_bh_enable);
190 189
@@ -229,8 +228,7 @@ asmlinkage void __do_softirq(void)
229 pending = local_softirq_pending(); 228 pending = local_softirq_pending();
230 account_irq_enter_time(current); 229 account_irq_enter_time(current);
231 230
232 __local_bh_disable((unsigned long)__builtin_return_address(0), 231 __local_bh_disable(_RET_IP_, SOFTIRQ_OFFSET);
233 SOFTIRQ_OFFSET);
234 lockdep_softirq_enter(); 232 lockdep_softirq_enter();
235 233
236 cpu = smp_processor_id(); 234 cpu = smp_processor_id();
@@ -701,7 +699,7 @@ void send_remote_softirq(struct call_single_data *cp, int cpu, int softirq)
701} 699}
702EXPORT_SYMBOL(send_remote_softirq); 700EXPORT_SYMBOL(send_remote_softirq);
703 701
704static int __cpuinit remote_softirq_cpu_notify(struct notifier_block *self, 702static int remote_softirq_cpu_notify(struct notifier_block *self,
705 unsigned long action, void *hcpu) 703 unsigned long action, void *hcpu)
706{ 704{
707 /* 705 /*
@@ -730,7 +728,7 @@ static int __cpuinit remote_softirq_cpu_notify(struct notifier_block *self,
730 return NOTIFY_OK; 728 return NOTIFY_OK;
731} 729}
732 730
733static struct notifier_block __cpuinitdata remote_softirq_cpu_notifier = { 731static struct notifier_block remote_softirq_cpu_notifier = {
734 .notifier_call = remote_softirq_cpu_notify, 732 .notifier_call = remote_softirq_cpu_notify,
735}; 733};
736 734
@@ -832,7 +830,7 @@ static void takeover_tasklets(unsigned int cpu)
832} 830}
833#endif /* CONFIG_HOTPLUG_CPU */ 831#endif /* CONFIG_HOTPLUG_CPU */
834 832
835static int __cpuinit cpu_callback(struct notifier_block *nfb, 833static int cpu_callback(struct notifier_block *nfb,
836 unsigned long action, 834 unsigned long action,
837 void *hcpu) 835 void *hcpu)
838{ 836{
@@ -847,7 +845,7 @@ static int __cpuinit cpu_callback(struct notifier_block *nfb,
847 return NOTIFY_OK; 845 return NOTIFY_OK;
848} 846}
849 847
850static struct notifier_block __cpuinitdata cpu_nfb = { 848static struct notifier_block cpu_nfb = {
851 .notifier_call = cpu_callback 849 .notifier_call = cpu_callback
852}; 850};
853 851