On 2020-01-28 18:26:57 [+0800], kbuild test robot wrote:
…
sparse warnings: (new ones prefixed by >>)
include/linux/spinlock.h:393:9: sparse: sparse: context imbalance in
'pagevec_lru_move_fn' - unexpected unlock
This looks okay and is the same as upstream. The unlock only happens if
`pgdat' if set and this happens only in the for-loop.
>> mm/swap.c:348:9: sparse: sparse: context imbalance in
'rotate_reclaimable_page' - different lock contexts for basic block
>> mm/swap.c:440:13: sparse: sparse: context imbalance in
'__lru_cache_activate_page' - different lock contexts for basic block
>> mm/swap.c:505:13: sparse: sparse: context imbalance in '__lru_cache_add'
- different lock contexts for basic block
>> mm/swap.c:695:6: sparse: sparse: context imbalance in
'lru_add_drain_cpu' - different lock contexts for basic block
>> mm/swap.c:743:6: sparse: sparse: context imbalance in
'deactivate_file_page' - different lock contexts for basic block
>> mm/swap.c:775:9: sparse: sparse: context imbalance in 'deactivate_page'
- different lock contexts for basic block
>> mm/swap.c:801:9: sparse: sparse: context imbalance in
'mark_page_lazyfree' - different lock contexts for basic block
those look okay, took. The lock part deferences a per-CPU variable and
the local pointer is returned. The unlock part uses the local pointer.
This and the `if' (locked vs preempt-disable mode) might confuse sparse.
Sebastian