Andrei Vagin
2017-Mar-16 01:12 UTC
[Bridge] linux-next: WARNING: CPU: 1 PID: 19544 at net/bridge/br_fdb.c:109 br_fdb_find+0x19d/0x1b0
Hello, We execute CRIU tests for linux-next and here is a new warning: [ 178.930950] ------------[ cut here ]------------ [ 178.930960] WARNING: CPU: 1 PID: 19544 at net/bridge/br_fdb.c:109 br_fdb_find+0x19d/0x1b0 [ 178.930961] Modules linked in: [ 178.930966] CPU: 1 PID: 19544 Comm: criu Not tainted 4.11.0-rc1-next-20170310 #1 [ 178.930968] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 [ 178.930970] Call Trace: [ 178.930976] dump_stack+0x85/0xc9 [ 178.930982] __warn+0xd1/0xf0 [ 178.930988] warn_slowpath_null+0x1d/0x20 [ 178.930990] br_fdb_find+0x19d/0x1b0 [ 178.930994] br_fdb_change_mac_address+0x38/0x80 [ 178.930999] br_stp_change_bridge_id+0x44/0x140 [ 178.931003] br_dev_newlink+0x3f/0x70 [ 178.931009] rtnl_newlink+0x68e/0x830 [ 178.931014] ? netlink_broadcast_filtered+0x134/0x3e0 [ 178.931025] ? get_partial_node.isra.76+0x4b/0x2a0 [ 178.931032] ? nla_parse+0xa3/0x100 [ 178.931035] ? nla_strlcpy+0x5b/0x70 [ 178.931037] ? rtnl_link_ops_get+0x39/0x50 [ 178.931040] ? rtnl_newlink+0x158/0x830 [ 178.931064] rtnetlink_rcv_msg+0x95/0x230 [ 178.931068] ? rtnl_newlink+0x830/0x830 [ 178.931072] netlink_rcv_skb+0xa7/0xc0 [ 178.931075] rtnetlink_rcv+0x2a/0x40 [ 178.931078] netlink_unicast+0x15b/0x210 [ 178.931082] netlink_sendmsg+0x31a/0x3a0 [ 178.931089] sock_sendmsg+0x38/0x50 [ 178.931092] ___sys_sendmsg+0x26c/0x280 [ 178.931099] ? __generic_file_write_iter+0x19b/0x1e0 [ 178.931105] ? up_write+0x1f/0x40 [ 178.931110] ? ext4_file_write_iter+0xa4/0x390 [ 178.931120] __sys_sendmsg+0x45/0x80 [ 178.931126] SyS_sendmsg+0x12/0x20 [ 178.931130] entry_SYSCALL_64_fastpath+0x23/0xc2 [ 178.931132] RIP: 0033:0x2b71009f99a0 [ 178.931134] RSP: 002b:00007ffed7413c58 EFLAGS: 00000246 ORIG_RAX: 000000000000002e [ 178.931137] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00002b71009f99a0 [ 178.931139] RDX: 0000000000000000 RSI: 00007ffed7413c90 RDI: 0000000000000002 [ 178.931140] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000 [ 178.931142] R10: 00002b710180cfe0 R11: 0000000000000246 R12: 0000000000000001 [ 178.931144] R13: 0000000000000004 R14: 00007ffed74134b0 R15: 0000000000000003 [ 178.931152] ---[ end trace 61d5dd5e3b9abaf8 ]--- [ 178.931453] IPv6: ADDRCONF(NETDEV_UP): zdtmbr0: li All logs are here: https://s3.amazonaws.com/archive.travis-ci.org/jobs/211220073/log.txt
Cong Wang
2017-Mar-16 04:19 UTC
[Bridge] linux-next: WARNING: CPU: 1 PID: 19544 at net/bridge/br_fdb.c:109 br_fdb_find+0x19d/0x1b0
On Wed, Mar 15, 2017 at 6:12 PM, Andrei Vagin <avagin at gmail.com> wrote:> Hello, > > We execute CRIU tests for linux-next and here is a new warning: > [ 178.930950] ------------[ cut here ]------------ > [ 178.930960] WARNING: CPU: 1 PID: 19544 at net/bridge/br_fdb.c:109 > br_fdb_find+0x19d/0x1b0 > [ 178.930961] Modules linked in: > [ 178.930966] CPU: 1 PID: 19544 Comm: criu Not tainted > 4.11.0-rc1-next-20170310 #1 > [ 178.930968] Hardware name: Google Google Compute Engine/Google > Compute Engine, BIOS Google 01/01/2011 > [ 178.930970] Call Trace: > [ 178.930976] dump_stack+0x85/0xc9 > [ 178.930982] __warn+0xd1/0xf0 > [ 178.930988] warn_slowpath_null+0x1d/0x20 > [ 178.930990] br_fdb_find+0x19d/0x1b0 > [ 178.930994] br_fdb_change_mac_address+0x38/0x80 > [ 178.930999] br_stp_change_bridge_id+0x44/0x140 > [ 178.931003] br_dev_newlink+0x3f/0x70 > [ 178.931009] rtnl_newlink+0x68e/0x830 > [ 178.931014] ? netlink_broadcast_filtered+0x134/0x3e0 > [ 178.931025] ? get_partial_node.isra.76+0x4b/0x2a0 > [ 178.931032] ? nla_parse+0xa3/0x100 > [ 178.931035] ? nla_strlcpy+0x5b/0x70 > [ 178.931037] ? rtnl_link_ops_get+0x39/0x50 > [ 178.931040] ? rtnl_newlink+0x158/0x830 > [ 178.931064] rtnetlink_rcv_msg+0x95/0x230 > [ 178.931068] ? rtnl_newlink+0x830/0x830 > [ 178.931072] netlink_rcv_skb+0xa7/0xc0 > [ 178.931075] rtnetlink_rcv+0x2a/0x40 > [ 178.931078] netlink_unicast+0x15b/0x210 > [ 178.931082] netlink_sendmsg+0x31a/0x3a0 > [ 178.931089] sock_sendmsg+0x38/0x50 > [ 178.931092] ___sys_sendmsg+0x26c/0x280 > [ 178.931099] ? __generic_file_write_iter+0x19b/0x1e0 > [ 178.931105] ? up_write+0x1f/0x40 > [ 178.931110] ? ext4_file_write_iter+0xa4/0x390 > [ 178.931120] __sys_sendmsg+0x45/0x80 > [ 178.931126] SyS_sendmsg+0x12/0x20 > [ 178.931130] entry_SYSCALL_64_fastpath+0x23/0xc2 > [ 178.931132] RIP: 0033:0x2b71009f99a0 > [ 178.931134] RSP: 002b:00007ffed7413c58 EFLAGS: 00000246 ORIG_RAX: > 000000000000002e > [ 178.931137] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00002b71009f99a0 > [ 178.931139] RDX: 0000000000000000 RSI: 00007ffed7413c90 RDI: 0000000000000002 > [ 178.931140] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000 > [ 178.931142] R10: 00002b710180cfe0 R11: 0000000000000246 R12: 0000000000000001 > [ 178.931144] R13: 0000000000000004 R14: 00007ffed74134b0 R15: 0000000000000003 > [ 178.931152] ---[ end trace 61d5dd5e3b9abaf8 ]--- > [ 178.931453] IPv6: ADDRCONF(NETDEV_UP): zdtmbr0: li > > All logs are here: > https://s3.amazonaws.com/archive.travis-ci.org/jobs/211220073/log.txtCould the attached patch fix this false alarm? Thanks. -------------- next part -------------- diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c index 4f598dc..ab09c3c 100644 --- a/net/bridge/br_fdb.c +++ b/net/bridge/br_fdb.c @@ -106,7 +106,7 @@ static struct net_bridge_fdb_entry *br_fdb_find(struct net_bridge *br, struct hlist_head *head = &br->hash[br_mac_hash(addr, vid)]; struct net_bridge_fdb_entry *fdb; - WARN_ON_ONCE(!br_hash_lock_held(br)); + lockdep_assert_held(&br->hash_lock); rcu_read_lock(); fdb = fdb_find_rcu(head, addr, vid); diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h index 2288fca..6136818 100644 --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h @@ -531,15 +531,6 @@ int br_fdb_external_learn_add(struct net_bridge *br, struct net_bridge_port *p, int br_fdb_external_learn_del(struct net_bridge *br, struct net_bridge_port *p, const unsigned char *addr, u16 vid); -static inline bool br_hash_lock_held(struct net_bridge *br) -{ -#ifdef CONFIG_LOCKDEP - return lockdep_is_held(&br->hash_lock); -#else - return true; -#endif -} - /* br_forward.c */ enum br_pkt_type { BR_PKT_UNICAST,