RDMA/uverbs: Check existence of create_flow callback
authorJason Gunthorpe <jgg@mellanox.com>
Mon, 25 Jun 2018 21:21:15 +0000 (15:21 -0600)
committerJason Gunthorpe <jgg@mellanox.com>
Mon, 25 Jun 2018 21:21:56 +0000 (15:21 -0600)
In the accepted series "Refactor ib_uverbs_write path", we presented the
roadmap to get rid of uverbs_cmd_mask and uverbs_ex_cmd_mask fields in
favor of simple check of function pointer. So let's put NULL check of
create_flow function callback despite the fact that uverbs_ex_cmd_mask
still exists.

Link: https://www.spinics.net/lists/linux-rdma/msg60753.html
Suggested-by: Michael J Ruhl <michael.j.ruhl@intel.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/uverbs_cmd.c

index 908ee8a..985dc86 100644 (file)
@@ -3554,6 +3554,11 @@ int ib_uverbs_ex_create_flow(struct ib_uverbs_file *file,
                goto err_uobj;
        }
 
+       if (!qp->device->create_flow) {
+               err = -EOPNOTSUPP;
+               goto err_put;
+       }
+
        flow_attr = kzalloc(struct_size(flow_attr, flows,
                                cmd.flow_attr.num_of_specs), GFP_KERNEL);
        if (!flow_attr) {