Commit ef12d456 authored by Roland Dreier's avatar Roland Dreier

IPoIB: Fix oops with raw sockets

ipoib_hard_header() needs to handle the case that daddr is NULL.  This
can happen when packets are injected via a raw socket, and IPoIB
shouldn't oops in this case.

Reported by Anton Blanchard <anton@samba.org>
Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
parent a07bacca
...@@ -723,7 +723,7 @@ static int ipoib_hard_header(struct sk_buff *skb, ...@@ -723,7 +723,7 @@ static int ipoib_hard_header(struct sk_buff *skb,
* destination address onto the front of the skb so we can * destination address onto the front of the skb so we can
* figure out where to send the packet later. * figure out where to send the packet later.
*/ */
if (!skb->dst || !skb->dst->neighbour) { if ((!skb->dst || !skb->dst->neighbour) && daddr) {
struct ipoib_pseudoheader *phdr = struct ipoib_pseudoheader *phdr =
(struct ipoib_pseudoheader *) skb_push(skb, sizeof *phdr); (struct ipoib_pseudoheader *) skb_push(skb, sizeof *phdr);
memcpy(phdr->hwaddr, daddr, INFINIBAND_ALEN); memcpy(phdr->hwaddr, daddr, INFINIBAND_ALEN);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment