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