Re: [PATCH v2 01/11] RDMA/CMA: Mark IPv4 addresses correctly when the listener is IPv6

Jason Gunthorpe
2015-04-20T16:41:40Z

On Mon, Apr 20, 2015 at 12:03:32PM +0300, Haggai Eran wrote:
> From: Yotam Kenneth <yotamke-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
>
> When accepting a new connection with the listener being IPv6, the
> family of the new connection is set as IPv6. This causes cma_zero_addr
> function to return true on an non-zero address. As a result, the wrong
> code path is taken. This causes the connection request to be rejected,
> as the RDMA-CM code looks for the wrong type of device.

This description doesn't really make sense as to what the problem is.

> @@ -866,12 +866,12 @@ static void cma_save_ip4_info(struct rdma_cm_id *id, struct rdma_cm_id *listen_i
>
> listen4 = (struct sockaddr_in *) &listen_id->route.addr.src_addr;
> ip4 = (struct sockaddr_in *) &id->route.addr.src_addr;
> - ip4->sin_family = listen4->sin_family;
> + ip4->sin_family = AF_INET;

If listen_id->route.addr.src_addr.ss_family != AF_INET then it is
invalid to cast to sockaddr_in.

So listen4->sin_family MUST be AF_INET or this function MUST NOT be
called.

Forcing to AF_INET cannot be correct here.

What does this patch have to do with this series?

Jason