Skip to content

Commit 746a1ed

Browse files
Hoang Ledavem330
authored andcommitted
tipc: add NULL pointer check to prevent kernel oops
Calling: tipc_node_link_down()-> - tipc_node_write_unlock()->tipc_mon_peer_down() - tipc_mon_peer_down() just after disabling bearer could be caused kernel oops. Fix this by adding a sanity check to make sure valid memory access. Acked-by: Jon Maloy <[email protected]> Signed-off-by: Hoang Le <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent e228c5c commit 746a1ed

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

net/tipc/monitor.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,9 +322,13 @@ static void mon_assign_roles(struct tipc_monitor *mon, struct tipc_peer *head)
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 @@ void tipc_mon_peer_up(struct net *net, u32 addr, int bearer_id)
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) {

0 commit comments

Comments
 (0)