RE: [PATCH 04/20] dlb2: add device ioctl layer and first 4 ioctls

From: Eads, Gage
Date: Fri Jul 17 2020 - 14:20:16 EST




> -----Original Message-----
> From: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
> Sent: Sunday, July 12, 2020 9:54 AM
> To: Eads, Gage <gage.eads@xxxxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx;
> arnd@xxxxxxxx; gregkh@xxxxxxxxxxxxxxxxxxx
> Cc: Karlsson, Magnus <magnus.karlsson@xxxxxxxxx>; Topel, Bjorn
> <bjorn.topel@xxxxxxxxx>
> Subject: Re: [PATCH 04/20] dlb2: add device ioctl layer and first 4 ioctls
>
> On 7/12/20 6:43 AM, Gage Eads wrote:
> > +int dlb2_ioctl_dispatcher(struct dlb2_dev *dev,
> > + unsigned int cmd,
> > + unsigned long arg)
> > +{
> > + u16 sz = _IOC_SIZE(cmd);
> > +
> > + if (_IOC_NR(cmd) >= NUM_DLB2_CMD) {
>
> Does this bounds check need to use array_index_nospec() from
> <linux/nospec.h> ?
>
> > + dev_err(dev->dlb2_device,
> > + "[%s()] Unexpected DLB command %d\n",
> > + __func__, _IOC_NR(cmd));
> > + return -1;
> > + }
> > +
> > + return dlb2_ioctl_callback_fns[_IOC_NR(cmd)](dev, arg, sz); }
>
> I don't know if it needs to or not. I just want to make sure that you or
> someone has thought about it.

Thanks for catching this -- it does. Per Arnd's suggestion, I'm going to convert this to a switch statement and avoid the index altogether.

Thanks,
Gage

>
> --
> ~Randy