On Wed, Aug 28, 2013 at 03:47:54PM +0300, Matan Barak wrote:
> +
> +     if (cmd.comp_mask)
> +             return -EINVAL;

So, how do you propose to interoperate with new user space/old
kernels?

How will user space know what comp_mask values the kernel will
support?

The notion that was established in the verbs patches is that extra
structure fields are ignored by old software.

> +     if ((cmd.flow_attr.type == IB_FLOW_ATTR_SNIFFER &&
> +          !capable(CAP_NET_ADMIN)) || !capable(CAP_NET_RAW))
> +             return -EPERM;
> +
> +     if (cmd.flow_attr.num_of_specs < 0 ||
> +         cmd.flow_attr.num_of_specs > IB_FLOW_SPEC_SUPPORT_LAYERS)
> +             return -EINVAL;
> +
> +     kern_attr_size = cmd.flow_attr.size - sizeof(cmd) -
> +                      sizeof(struct ib_uverbs_cmd_hdr_ex);
> +
> +     if (cmd.flow_attr.size < 0 || cmd.flow_attr.size > in_len ||
> +         kern_attr_size < 0 || kern_attr_size >
> +         (cmd.flow_attr.num_of_specs * sizeof(struct ib_kern_spec)))
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Watch out for integer overflow here..

Jason
--
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