diff options
| author | Roland Dreier <rolandd@cisco.com> | 2006-03-29 12:36:46 -0500 |
|---|---|---|
| committer | Roland Dreier <rolandd@cisco.com> | 2006-03-29 12:36:46 -0500 |
| commit | ef12d4561900d4af37f46a8f2d97dec3c4d59bf9 (patch) | |
| tree | 29b849109170341a546fbe0bdb52a43741b0341c | |
| parent | a07bacca7b4032dd361ad5c87b1c39ae229e6739 (diff) | |
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>
| -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 53a32f65788d..9b0bd7c746ca 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, | |||
| 723 | * destination address onto the front of the skb so we can | 723 | * destination address onto the front of the skb so we can |
| 724 | * figure out where to send the packet later. | 724 | * figure out where to send the packet later. |
| 725 | */ | 725 | */ |
| 726 | if (!skb->dst || !skb->dst->neighbour) { | 726 | if ((!skb->dst || !skb->dst->neighbour) && daddr) { |
| 727 | struct ipoib_pseudoheader *phdr = | 727 | struct ipoib_pseudoheader *phdr = |
| 728 | (struct ipoib_pseudoheader *) skb_push(skb, sizeof *phdr); | 728 | (struct ipoib_pseudoheader *) skb_push(skb, sizeof *phdr); |
| 729 | memcpy(phdr->hwaddr, daddr, INFINIBAND_ALEN); | 729 | memcpy(phdr->hwaddr, daddr, INFINIBAND_ALEN); |
