On Wed, 4 Jan 2017 18:06:57 +0530 Kirti Wankhede <kwankhede@xxxxxxxxxx> wrote: > Thanks Paul for catching this. > > In that case we should go with 'long' since mdev_parent_ops->ioctl() is > called from vfio_device_ops->ioctl() for which the return type is 'long'. Agreed, we're mirroring the struct file_operations definition of ioctl, so the return should be a long. Thanks, Alex > On 1/4/2017 1:06 AM, Paul Gortmaker wrote: > > What appears to be a copy and paste error from the line above gets > > the ioctl a ssize_t return value instead of the traditional "int". > > > > The associated sample code used "long" which meant it would compile > > for x86-64 but not i386, with the latter failing as follows: > > > > CC [M] samples/vfio-mdev/mtty.o > > samples/vfio-mdev/mtty.c:1418:20: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types] > > .ioctl = mtty_ioctl, > > ^ > > samples/vfio-mdev/mtty.c:1418:20: note: (near initialization for ‘mdev_fops.ioctl’) > > cc1: some warnings being treated as errors > > > > Use the standard "int" ioctl return value in both the header and > > the sample code to fix the issue. > > > > Fixes: 9d1a546c53b4 ("docs: Sample driver to demonstrate how to use Mediated device framework.") > > Cc: Kirti Wankhede <kwankhede@xxxxxxxxxx> > > Cc: Neo Jia <cjia@xxxxxxxxxx> > > Cc: Alex Williamson <alex.williamson@xxxxxxxxxx> > > Cc: kvm@xxxxxxxxxxxxxxx > > Signed-off-by: Paul Gortmaker <paul.gortmaker@xxxxxxxxxxxxx> > > --- > > include/linux/mdev.h | 2 +- > > samples/vfio-mdev/mtty.c | 2 +- > > 2 files changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/include/linux/mdev.h b/include/linux/mdev.h > > index 3ee44b8d2bb3..46659572ab00 100644 > > --- a/include/linux/mdev.h > > +++ b/include/linux/mdev.h > > @@ -78,7 +78,7 @@ struct mdev_parent_ops { > > size_t count, loff_t *ppos); > > ssize_t (*write)(struct mdev_device *mdev, const char __user *buf, > > size_t count, loff_t *ppos); > > - ssize_t (*ioctl)(struct mdev_device *mdev, unsigned int cmd, > > + int (*ioctl)(struct mdev_device *mdev, unsigned int cmd, > > unsigned long arg); > > int (*mmap)(struct mdev_device *mdev, struct vm_area_struct *vma); > > }; > > diff --git a/samples/vfio-mdev/mtty.c b/samples/vfio-mdev/mtty.c > > index 919c10d5b12e..6f0713b1f717 100644 > > --- a/samples/vfio-mdev/mtty.c > > +++ b/samples/vfio-mdev/mtty.c > > @@ -1147,7 +1147,7 @@ int mtty_get_device_info(struct mdev_device *mdev, > > return 0; > > } > > > > -static long mtty_ioctl(struct mdev_device *mdev, unsigned int cmd, > > +static int mtty_ioctl(struct mdev_device *mdev, unsigned int cmd, > > unsigned long arg) > > { > > int ret = 0; > > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html