Re: [PATCH v2 (RESEND)] lockdep: Fix fs_reclaim warning.

From: Tetsuo Handa
Date: Thu Mar 08 2018 - 10:31:11 EST


Andrew Morton wrote:
> On Wed, 28 Feb 2018 06:50:02 +0900 Tetsuo Handa <penguin-kernel@xxxxxxxxxxxxxxxxxxx> wrote:
>
> >
> > This warning is caused by commit d92a8cfcb37ecd13 ("locking/lockdep: Rework
> > FS_RECLAIM annotation") which replaced lockdep_set_current_reclaim_state()/
> > lockdep_clear_current_reclaim_state() in __perform_reclaim() and
> > lockdep_trace_alloc() in slab_pre_alloc_hook() with fs_reclaim_acquire()/
> > fs_reclaim_release(). Since __kmalloc_reserve() from __alloc_skb() adds
> > __GFP_NOMEMALLOC | __GFP_NOWARN to gfp_mask, and all reclaim path simply
> > propagates __GFP_NOMEMALLOC, fs_reclaim_acquire() in slab_pre_alloc_hook()
> > is trying to grab the 'fake' lock again when __perform_reclaim() already
> > grabbed the 'fake' lock.
>
> That's quite an audit trail.
>
> Shouldn't we be doing a cc:stable here? If so, which patch do we
> identify as being fixed, with "Fixes:"? d92a8cfcb37ecd13, I assume?

Yes please, if you think this patch qualifies for backport.

The test was outdated since v2.6.31, but only v4.14+ seems to trigger this warning.
Thus, I think it is OK to add:

Fixes: d92a8cfcb37ecd13 ("locking/lockdep: Rework FS_RECLAIM annotation")
Cc: <stable@xxxxxxxxxxxxxxx> # v4.14+

>
> I'd never even noticed fs_reclaim_acquire() and friends before. I do
> wish they had "lockdep" in their names, and a comment to explain what
> they do and why they exist.