[sorry for answering only now, this email slipped through somehow]
2018-02-16 16:28 GMT-08:00 Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>:
On Sat, 10 Feb 2018 12:02:52 +0100 Vitaly Wool <vitalywool@xxxxxxxxx> 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