hc
2024-05-10 23fa18eaa71266feff7ba8d83022d9e1cc83c65a
kernel/net/tipc/monitor.c
....@@ -130,7 +130,7 @@
130130
131131 static int map_get(u64 up_map, int i)
132132 {
133
- return (up_map & (1 << i)) >> i;
133
+ return (up_map & (1ULL << i)) >> i;
134134 }
135135
136136 static struct tipc_peer *peer_prev(struct tipc_peer *peer)
....@@ -322,9 +322,13 @@
322322 void tipc_mon_remove_peer(struct net *net, u32 addr, int bearer_id)
323323 {
324324 struct tipc_monitor *mon = tipc_monitor(net, bearer_id);
325
- struct tipc_peer *self = get_self(net, bearer_id);
325
+ struct tipc_peer *self;
326326 struct tipc_peer *peer, *prev, *head;
327327
328
+ if (!mon)
329
+ return;
330
+
331
+ self = get_self(net, bearer_id);
328332 write_lock_bh(&mon->lock);
329333 peer = get_peer(mon, addr);
330334 if (!peer)
....@@ -407,11 +411,15 @@
407411 void tipc_mon_peer_down(struct net *net, u32 addr, int bearer_id)
408412 {
409413 struct tipc_monitor *mon = tipc_monitor(net, bearer_id);
410
- struct tipc_peer *self = get_self(net, bearer_id);
414
+ struct tipc_peer *self;
411415 struct tipc_peer *peer, *head;
412416 struct tipc_mon_domain *dom;
413417 int applied;
414418
419
+ if (!mon)
420
+ return;
421
+
422
+ self = get_self(net, bearer_id);
415423 write_lock_bh(&mon->lock);
416424 peer = get_peer(mon, addr);
417425 if (!peer) {
....@@ -713,7 +721,7 @@
713721 if (!hdr)
714722 return -EMSGSIZE;
715723
716
- attrs = nla_nest_start(msg->skb, TIPC_NLA_MON_PEER);
724
+ attrs = nla_nest_start_noflag(msg->skb, TIPC_NLA_MON_PEER);
717725 if (!attrs)
718726 goto msg_full;
719727
....@@ -802,7 +810,7 @@
802810 if (!hdr)
803811 return -EMSGSIZE;
804812
805
- attrs = nla_nest_start(msg->skb, TIPC_NLA_MON);
813
+ attrs = nla_nest_start_noflag(msg->skb, TIPC_NLA_MON);
806814 if (!attrs)
807815 goto msg_full;
808816