Message ID | 20170103193643.8631-1-paul.gortmaker@windriver.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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'. Thanks, Kirti 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@nvidia.com> > Cc: Neo Jia <cjia@nvidia.com> > Cc: Alex Williamson <alex.williamson@redhat.com> > Cc: kvm@vger.kernel.org > Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> > --- > 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, 4 Jan 2017 18:06:57 +0530 Kirti Wankhede <kwankhede@nvidia.com> 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@nvidia.com> > > Cc: Neo Jia <cjia@nvidia.com> > > Cc: Alex Williamson <alex.williamson@redhat.com> > > Cc: kvm@vger.kernel.org > > Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> > > --- > > 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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;
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@nvidia.com> Cc: Neo Jia <cjia@nvidia.com> Cc: Alex Williamson <alex.williamson@redhat.com> Cc: kvm@vger.kernel.org Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> --- include/linux/mdev.h | 2 +- samples/vfio-mdev/mtty.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)