• Amol Grover's avatar
    ipmr: Add lockdep expression to ipmr_for_each_table macro · 7013908c
    Amol Grover authored
    During the initialization process, ipmr_new_table() is called
    to create new tables which in turn calls ipmr_get_table() which
    traverses net->ipv4.mr_tables without holding the writer lock.
    However, this is safe to do so as no tables exist at this time.
    Hence add a suitable lockdep expression to silence the following
    false-positive warning:
    
    =============================
    WARNING: suspicious RCU usage
    5.7.0-rc3-next-20200428-syzkaller #0 Not tainted
    -----------------------------
    net/ipv4/ipmr.c:136 RCU-list traversed in non-reader section!!
    
    ipmr_get_table+0x130/0x160 net/ipv4/ipmr.c:136
    ipmr_new_table net/ipv4/ipmr.c:403 [inline]
    ipmr_rules_init net/ipv4/ipmr.c:248 [inline]
    ipmr_net_init+0x133/0x430 net/ipv4/ipmr.c:3089
    
    Fixes: f0ad0860 ("ipv4: ipmr: support multiple tables")
    Reported-by: syzbot+1519f497f2f9f08183c6@syzkaller.appspotmail.com
    Suggested-by: default avatarJakub Kicinski <kuba@kernel.org>
    Signed-off-by: default avatarAmol Grover <frextrite@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    7013908c
ipmr.c 76.1 KB