On 6/19/2014 11:29 AM, Hefty, Sean wrote:
>> +            case RDMA_ROUTE:
>> +                    if (*optlen < sizeof(path_data)) {
>> +                            ret = EINVAL;
>> +                    } else {
>> +                            len = 0;
>> +                            opt = optval;
>> +                            path_rec = rs->cm_id->route.path_rec;
>> +                            num_paths = 0;
>> +                            if (len + sizeof(path_data) <= *optlen &&
> 
> len is 0 here and we've already checked *optlen
> 
>> +                                num_paths < rs->cm_id->route.num_paths) {
> 
> and num_paths is 0
> 
>> +                                    rs_convert_sa_path(path_rec, 
>> &path_data);
>> +                                    memcpy(opt, &path_data, 
>> sizeof(path_data));
>> +                                    len += sizeof(path_data);
>> +                                    opt += sizeof(path_data);
>> +                                    path_rec++;
>> +                                    num_paths++;
> 
> were you actually wanting a loop here?

Yes; if should have been while

> 
>> +                            }
> 
> This also needs to handle the case where rgetsockopt is called immediately 
> after rsetsockopt.  Something like:
> 
> if (rs->optval) {
>       memcpy(rs->optval, optval, rs->optlen);
>       *optlen = rs->optlen;
> }
> 
> assuming that rs->optlen is verified

Sure.

v2 patch shortly...

-- Hal
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to