diff options
| author | David S. Miller <[email protected]> | 2017-09-02 00:42:05 +0000 |
|---|---|---|
| committer | David S. Miller <[email protected]> | 2017-09-02 00:42:05 +0000 |
| commit | 6026e043d09012c6269f9a96a808d52d9c498224 (patch) | |
| tree | a80578915557db98596821ff60d2ff37dafffb4f /net/tipc/node.c | |
| parent | inetpeer: fix RCU lookup() (diff) | |
| parent | epoll: fix race between ep_poll_callback(POLLFREE) and ep_free()/ep_remove() (diff) | |
| download | kernel-6026e043d09012c6269f9a96a808d52d9c498224.tar.gz kernel-6026e043d09012c6269f9a96a808d52d9c498224.zip | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Three cases of simple overlapping changes.
Signed-off-by: David S. Miller <[email protected]>
Diffstat (limited to 'net/tipc/node.c')
| -rw-r--r-- | net/tipc/node.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/tipc/node.c b/net/tipc/node.c index eb728397c810..198dbc7adbe1 100644 --- a/net/tipc/node.c +++ b/net/tipc/node.c @@ -1126,8 +1126,8 @@ int tipc_node_get_linkname(struct net *net, u32 bearer_id, u32 addr, strncpy(linkname, tipc_link_name(link), len); err = 0; } -exit: tipc_node_read_unlock(node); +exit: tipc_node_put(node); return err; } @@ -1551,6 +1551,8 @@ void tipc_rcv(struct net *net, struct sk_buff *skb, struct tipc_bearer *b) /* Check/update node state before receiving */ if (unlikely(skb)) { + if (unlikely(skb_linearize(skb))) + goto discard; tipc_node_write_lock(n); if (tipc_node_check_state(n, skb, bearer_id, &xmitq)) { if (le->link) { |
