|
@@ -8226,20 +8226,25 @@ void __might_sleep(char *file, int line)
|
|
|
#ifdef in_atomic
|
|
|
static unsigned long prev_jiffy; /* ratelimiting */
|
|
|
|
|
|
- if ((in_atomic() || irqs_disabled()) &&
|
|
|
- system_state == SYSTEM_RUNNING && !oops_in_progress) {
|
|
|
- if (time_before(jiffies, prev_jiffy + HZ) && prev_jiffy)
|
|
|
- return;
|
|
|
- prev_jiffy = jiffies;
|
|
|
- printk(KERN_ERR "BUG: sleeping function called from invalid"
|
|
|
- " context at %s:%d\n", file, line);
|
|
|
- printk("in_atomic():%d, irqs_disabled():%d, pid: %d, name: %s\n",
|
|
|
- in_atomic(), irqs_disabled(), current->pid, current->comm);
|
|
|
- debug_show_held_locks(current);
|
|
|
- if (irqs_disabled())
|
|
|
- print_irqtrace_events(current);
|
|
|
- dump_stack();
|
|
|
- }
|
|
|
+ if ((!in_atomic() && !irqs_disabled()) ||
|
|
|
+ system_state != SYSTEM_RUNNING || oops_in_progress)
|
|
|
+ return;
|
|
|
+ if (time_before(jiffies, prev_jiffy + HZ) && prev_jiffy)
|
|
|
+ return;
|
|
|
+ prev_jiffy = jiffies;
|
|
|
+
|
|
|
+ printk(KERN_ERR
|
|
|
+ "BUG: sleeping function called from invalid context at %s:%d\n",
|
|
|
+ file, line);
|
|
|
+ printk(KERN_ERR
|
|
|
+ "in_atomic(): %d, irqs_disabled(): %d, pid: %d, name: %s\n",
|
|
|
+ in_atomic(), irqs_disabled(),
|
|
|
+ current->pid, current->comm);
|
|
|
+
|
|
|
+ debug_show_held_locks(current);
|
|
|
+ if (irqs_disabled())
|
|
|
+ print_irqtrace_events(current);
|
|
|
+ dump_stack();
|
|
|
#endif
|
|
|
}
|
|
|
EXPORT_SYMBOL(__might_sleep);
|