public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
From: Steve Wise <swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
To: roland-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
Cc: Thadeu Lima de Souza Cascardo
	<cascardo-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>,
	swise-ut6Up61K2wZBDgjK7y7TUQ@public.gmane.org,
	sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH] iw_cxgb4: do not crash when peer address is 0.0.0.0
Date: Fri, 01 Jun 2012 13:50:28 -0500	[thread overview]
Message-ID: <4FC90EF4.9050600@opengridcomputing.com> (raw)
In-Reply-To: <4FC8E4E5.7060501-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>

On 06/01/2012 10:51 AM, Steve Wise wrote:
> On 05/17/2012 03:51 PM, Thadeu Lima de Souza Cascardo wrote:
>> When using rping -c -a 0.0.0.0 with iw_cxgb4, the system crashes when
>> rdma_connect is called. ip_dev_find will return NULL, but pdev is
>> accessed anyway.
>>
>> Checking that pdev is NULL and returning -ENODEV prevents the system
>> from crashing.
>>
>> Signed-off-by: Thadeu Lima de Souza 
>> Cascardo<cascardo-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
>> ---
>>   drivers/infiniband/hw/cxgb4/cm.c |    4 ++++
>>   1 files changed, 4 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/infiniband/hw/cxgb4/cm.c 
>> b/drivers/infiniband/hw/cxgb4/cm.c
>> index 92b4c2b..0e75e30 100644
>> --- a/drivers/infiniband/hw/cxgb4/cm.c
>> +++ b/drivers/infiniband/hw/cxgb4/cm.c
>> @@ -1572,6 +1572,10 @@ static int import_ep(struct c4iw_ep *ep, 
>> __be32 peer_ip, struct dst_entry *dst,
>>           struct net_device *pdev;
>>
>>           pdev = ip_dev_find(&init_net, peer_ip);
>> +        if (!pdev) {
>> +            err = -ENODEV;
>> +            goto out;
>> +        }
>>           ep->l2t = cxgb4_l2t_get(cdev->rdev.lldi.l2t,
>>                       n, pdev, 0);
>>           if (!ep->l2t)
>
> This patch seems good, but I'm curious why the cm passed this down to 
> the iwarp driver?  0.0.0.0 shouldn't have mapped to any device, eh?
>
>

Apparently 0.0.0.0 gets treated as a loopback address by the CMA.  The 
CMA picks the first available device in this case (see 
cma_bind_loopback()).  The T4 driver then lookups up in the neighbour 
table for this address and gets back the 'lo' interface, which is fine.  
Then the T4 driver calls ip_dev_find() on this address to attempt to 
find the correct T4 interface.  It assumed the dest ipaddr, though, is 
the t4 interface ip addr.  Not 0.0.0.0 (nor 127.0.0.1).  Of course 
ip_dev_find() finds no interface with the dest address of 0.0.0.0.

So either T4 fails this usage as you have done in your patch, or we 
change T4 to pick the an ip address of the T4 interface and use that for 
the connection.

Given I don't think anyone is doing rdma connections intentionally to 
0.0.0.0, I say:

Acked-by: Steve Wise <swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>

Roland, can you please merge this?

Steve


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2012-06-01 18:50 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-17 20:51 [PATCH] iw_cxgb4: do not crash when peer address is 0.0.0.0 Thadeu Lima de Souza Cascardo
     [not found] ` <1337287913-7294-1-git-send-email-cascardo-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2012-06-01 15:51   ` Steve Wise
     [not found]     ` <4FC8E4E5.7060501-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
2012-06-01 18:50       ` Steve Wise [this message]
     [not found]         ` <4FC90EF4.9050600-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
2012-06-04  5:59           ` Roland Dreier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4FC90EF4.9050600@opengridcomputing.com \
    --to=swise-7bpotxp6k4+p2yhjcf5u+vpxobypeauw@public.gmane.org \
    --cc=cascardo-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=roland-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=swise-ut6Up61K2wZBDgjK7y7TUQ@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox