mirror of https://github.com/torvalds/linux.git
I hit this during driver probe with the latest fnic updates (this trace
is from a backport into a distro kernel, but the issue is the same).
> BUG: sleeping function called from invalid context at mm/slab.c:3113
> in_atomic(): 0, irqs_disabled(): 1, pid: 610, name: work_for_cpu
> INFO: lockdep is turned off.
> irq event stamp: 0
> hardirqs last enabled at (0): [<(null)>] (null)
> hardirqs last disabled at (0): [<ffffffff81070aa5>]
> copy_process+0x5e5/0x1670
> softirqs last enabled at (0): [<ffffffff81070aa5>]
> copy_process+0x5e5/0x1670
> softirqs last disabled at (0): [<(null)>] (null)
> Pid: 610, comm: work_for_cpu Not tainted
> Call Trace:
> [<ffffffff810b2d10>] ? print_irqtrace_events+0xd0/0xe0
> [<ffffffff8105c1a7>] ? __might_sleep+0xf7/0x130
> [<ffffffff81184efb>] ? kmem_cache_alloc_trace+0x20b/0x2d0
> [<ffffffff8109709e>] ? __create_workqueue_key+0x3e/0x1d0
> [<ffffffff8109709e>] ? __create_workqueue_key+0x3e/0x1d0
> [<ffffffffa00c101c>] ? fnic_probe+0x977/0x11aa [fnic]
> [<ffffffffa00c1048>] ? fnic_probe+0x9a3/0x11aa [fnic]
> [<ffffffff81096f00>] ? do_work_for_cpu+0x0/0x30
> [<ffffffff812c6da7>] ? local_pci_probe+0x17/0x20
> [<ffffffff81096f18>] ? do_work_for_cpu+0x18/0x30
> [<ffffffff8109cdc6>] ? kthread+0x96/0xa0
> [<ffffffff8100c1ca>] ? child_rip+0xa/0x20
> [<ffffffff81550f80>] ? _spin_unlock_irq+0x30/0x40
> [<ffffffff8100bb10>] ? restore_args+0x0/0x30
> [<ffffffff8109cd30>] ? kthread+0x0/0xa0
> [<ffffffff8100c1c0>] ? child_rip+0x0/0x20
The problem is in this hunk of "FIP VLAN Discovery Feature Support"
(
|
||
|---|---|---|
| .. | ||
| Makefile | ||
| cq_desc.h | ||
| cq_enet_desc.h | ||
| cq_exch_desc.h | ||
| fcpio.h | ||
| fnic.h | ||
| fnic_attrs.c | ||
| fnic_debugfs.c | ||
| fnic_fcs.c | ||
| fnic_fip.h | ||
| fnic_io.h | ||
| fnic_isr.c | ||
| fnic_main.c | ||
| fnic_res.c | ||
| fnic_res.h | ||
| fnic_scsi.c | ||
| fnic_trace.c | ||
| fnic_trace.h | ||
| rq_enet_desc.h | ||
| vnic_cq.c | ||
| vnic_cq.h | ||
| vnic_cq_copy.h | ||
| vnic_dev.c | ||
| vnic_dev.h | ||
| vnic_devcmd.h | ||
| vnic_intr.c | ||
| vnic_intr.h | ||
| vnic_nic.h | ||
| vnic_resource.h | ||
| vnic_rq.c | ||
| vnic_rq.h | ||
| vnic_scsi.h | ||
| vnic_stats.h | ||
| vnic_wq.c | ||
| vnic_wq.h | ||
| vnic_wq_copy.c | ||
| vnic_wq_copy.h | ||
| wq_enet_desc.h | ||