On Wed, Jan 09, 2019 at 05:43:40PM +0200, Leon Romanovsky wrote: > On Wed, Jan 09, 2019 at 08:32:40AM -0700, Jason Gunthorpe wrote: > > On Wed, Jan 09, 2019 at 10:44:56AM +0200, Leon Romanovsky wrote: > > > On Tue, Jan 08, 2019 at 04:39:21PM -0700, Jason Gunthorpe wrote: > > > > On Tue, Jan 08, 2019 at 09:55:54PM +0000, Majd Dibbiny wrote: > > > > > > @@ -537,11 +538,13 @@ static int setup_device(struct ib_device *device) > > > > > > } > > > > > > > > > > > > memset(&device->attrs, 0, sizeof(device->attrs)); > > > > > > - ret = device->ops.query_device(device, &device->attrs, &uhw); > > > > > > - if (ret) { > > > > > > - dev_warn(&device->dev, > > > > > > - "Couldn't query the device attributes\n"); > > > > > > - goto port_cleanup; > > > > > > + if (device->ops.query_device) { > > > > > > > > > Why do we need these kind of checks now? In case device doesn’t > > > > > implement all mandatory kverbs, then clients won’t add it.. uverbs > > > > > has uverbs_cmd_mask in write path, and checks function pointer in > > > > > the ioctl path.. Maybe I’m missing something.. > > > > > > > > Yah, I agree, the checks should be in the uverbs layer, and presumably > > > > they are all there already, it just needs careful checking. > > > > > > Didn't we plan to remove uverbs_cmd_mask and move to != NULL checks? > > > > The uverbs layer now uses the NULL checks exhaustively, I think. > > So, what does it mean "Yah, I agree,"? Are you agree to check in uverbs > layer and remove uverbs_cmd_mask? That we should generally rely on existing uverbs checks and the new no-clients model. The cmd_mask and NULL checks should be equivilent right now. Jason