|
@@ -2593,6 +2593,9 @@ out_put:
|
|
|
static int kern_spec_to_ib_spec(struct ib_uverbs_flow_spec *kern_spec,
|
|
|
union ib_flow_spec *ib_spec)
|
|
|
{
|
|
|
+ if (kern_spec->reserved)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
ib_spec->type = kern_spec->type;
|
|
|
|
|
|
switch (ib_spec->type) {
|
|
@@ -2671,6 +2674,10 @@ int ib_uverbs_ex_create_flow(struct ib_uverbs_file *file,
|
|
|
(cmd.flow_attr.num_of_specs * sizeof(struct ib_uverbs_flow_spec)))
|
|
|
return -EINVAL;
|
|
|
|
|
|
+ if (cmd.flow_attr.reserved[0] ||
|
|
|
+ cmd.flow_attr.reserved[1])
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
if (cmd.flow_attr.num_of_specs) {
|
|
|
kern_flow_attr = kmalloc(sizeof(*kern_flow_attr) + cmd.flow_attr.size,
|
|
|
GFP_KERNEL);
|