Hi Sean,

Thanks for looking into this.

I checked nfiniBand TM Architecture Release 1.2.1 VOLUME 1 - GENERAL
SPECIFICATIONS, for RDMA IP CM service,
the private data for CM REQ is defined in:
Table 532 IP Addressing CM REQ Message Private Data Format
So you mean even for RDMA IB, the private data format is also
required, could you point me a little more detail?



On Tue, Dec 16, 2014 at 10:29 PM, Hefty, Sean <sean.he...@intel.com> wrote:
>> If user attach private data for AF_IB, the first byte will
>> be overwritten, because we always set the cma version no matter
>> family is AF_IB, so move the version set inside if condition.
>>
>> Reported-by: Fabian Holler <fabian.hol...@profitbricks.com>
>> Signed-off-by: Jack Wang <jinpu.w...@profitbricks.com>
>> ---
>>  drivers/infiniband/core/cma.c | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
>> index d570030..22a22e2 100644
>> --- a/drivers/infiniband/core/cma.c
>> +++ b/drivers/infiniband/core/cma.c
>> @@ -2618,10 +2618,10 @@ static int cma_format_hdr(void *hdr, struct
>> rdma_id_private *id_priv)
>>       struct cma_hdr *cma_hdr;
>>
>>       cma_hdr = hdr;
>> -     cma_hdr->cma_version = CMA_VERSION;
>>       if (cma_family(id_priv) == AF_INET) {
>>               struct sockaddr_in *src4, *dst4;
>>
>> +             cma_hdr->cma_version = CMA_VERSION;
>>               src4 = (struct sockaddr_in *) cma_src_addr(id_priv);
>>               dst4 = (struct sockaddr_in *) cma_dst_addr(id_priv);
>>
>> @@ -2632,6 +2632,7 @@ static int cma_format_hdr(void *hdr, struct
>> rdma_id_private *id_priv)
>>       } else if (cma_family(id_priv) == AF_INET6) {
>>               struct sockaddr_in6 *src6, *dst6;
>>
>> +             cma_hdr->cma_version = CMA_VERSION;
>>               src6 = (struct sockaddr_in6 *) cma_src_addr(id_priv);
>>               dst6 = (struct sockaddr_in6 *) cma_dst_addr(id_priv);
>
> I don't think this is sufficient.  The RDMA CM private data header is defined 
> by the IB spec.  If the service ID starts with the prefix 0x0000000001, it's 
> reasonable to assume that the header is part of the private data.  The 
> receive side should probably even check the version and discard any unknown 
> values.
>
> - Sean



-- 
Mit freundlichen Grüßen,
Best Regards,

Jack Wang

Linux Kernel Developer Storage
ProfitBricks GmbH  The IaaS-Company.

ProfitBricks GmbH
Greifswalder Str. 207
D - 10405 Berlin
Tel: +49 30 5770083-42
Fax: +49 30 5770085-98
Email: jinpu.w...@profitbricks.com
URL: http://www.profitbricks.de

Sitz der Gesellschaft: Berlin.
Registergericht: Amtsgericht Charlottenburg, HRB 125506 B.
Geschäftsführer: Andreas Gauger, Achim Weiss.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to