[sorry for answering only now, this email slipped through somehow]

2018-02-16 16:28 GMT-08:00 Andrew Morton <akpm@linux-foundation.org>:
On Sat, 10 Feb 2018 12:02:52 +0100 Vitaly Wool <vitalywool@gmail.com> wrote:

> Currently if z3fold couldn't find an unbuddied page it would first
> try to pull a page off the stale list. The problem with this
> approach is that we can't 100% guarantee that the page is not
> processed by the workqueue thread at the same time unless we run
> cancel_work_sync() on it, which we can't do if we're in an atomic
> context. So let's just limit stale list usage to non-atomic
> contexts only.

This smells like a bugfix.  What are the end-user visible effects of
the bug?


I have only seen this happening in real life once, and then z3fold ended up using a page which had been already freed and got blocked on a spinlock.

~Vitaly