diff options
author | Roland Dreier <rolandd@cisco.com> | 2006-03-29 09:36:46 -0800 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2006-03-29 09:36:46 -0800 |
commit | ef12d4561900d4af37f46a8f2d97dec3c4d59bf9 (patch) | |
tree | 29b849109170341a546fbe0bdb52a43741b0341c /drivers | |
parent | a07bacca7b4032dd361ad5c87b1c39ae229e6739 (diff) | |
download | op-kernel-dev-ef12d4561900d4af37f46a8f2d97dec3c4d59bf9.zip op-kernel-dev-ef12d4561900d4af37f46a8f2d97dec3c4d59bf9.tar.gz |
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: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_main.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c index 53a32f6..9b0bd7c 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c @@ -723,7 +723,7 @@ static int ipoib_hard_header(struct sk_buff *skb, * destination address onto the front of the skb so we can * 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 *) skb_push(skb, sizeof *phdr); memcpy(phdr->hwaddr, daddr, INFINIBAND_ALEN); |