On Fri, May 19, 2017 at 10:22 AM, Akshay Narayan <aksh...@mit.edu> wrote:
> netlink_broadcast_filtered() calls yield() when a slow listener causes
> the buffer to fill. yield() is the wrong choice here, as pointed out by
> Commit 8e3fabfde4 (sched: Update yield() docs); in some cases, its use causes
> "BUG: scheduling while atomic" and, when fewer cores are available,
> kernel hangs:


I don't want to defend the use of yield() but it looks like there is other
problem.

>
> (note: "ccp" is a kernel module which multicasts netlink messages upon
> certain TCP events)

Does this module call netlink_broadcast() with __GFP_DIRECT_RECLAIM
in IRQ context? If so you should adjust the gfp flags.

Reply via email to