Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 255023
b: refs/heads/master
c: ec433f0
h: refs/heads/master
i:
  255021: 401eb0b
  255019: 049f51a
  255015: 00bce0d
  255007: a3805db
v: v3
  • Loading branch information
Peter Zijlstra authored and Paul E. McKenney committed Jul 20, 2011
1 parent 57c0d65 commit 7996c75
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c5d753a55ac92e09816d410cd17093813f1a904b
refs/heads/master: ec433f0c51527426989ea8a38a856d810d739414
2 changes: 1 addition & 1 deletion trunk/kernel/rcutree_plugin.h
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ static noinline void rcu_read_unlock_special(struct task_struct *t)
}

/* Hardware IRQ handlers cannot block. */
if (in_irq()) {
if (in_irq() || in_serving_softirq()) {
local_irq_restore(flags);
return;
}
Expand Down
12 changes: 10 additions & 2 deletions trunk/kernel/softirq.c
Original file line number Diff line number Diff line change
Expand Up @@ -315,16 +315,24 @@ static inline void invoke_softirq(void)
{
if (!force_irqthreads)
__do_softirq();
else
else {
__local_bh_disable((unsigned long)__builtin_return_address(0),
SOFTIRQ_OFFSET);
wakeup_softirqd();
__local_bh_enable(SOFTIRQ_OFFSET);
}
}
#else
static inline void invoke_softirq(void)
{
if (!force_irqthreads)
do_softirq();
else
else {
__local_bh_disable((unsigned long)__builtin_return_address(0),
SOFTIRQ_OFFSET);
wakeup_softirqd();
__local_bh_enable(SOFTIRQ_OFFSET);
}
}
#endif

Expand Down

0 comments on commit 7996c75

Please sign in to comment.