lkml.org 
[lkml]   [2022]   [May]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH 3/4] vhost-vdpa: uAPI to stop the device
    On Sat, May 21, 2022 at 10:36 AM Martin Habets <habetsm.xilinx@gmail.com> wrote:
    >
    > On Fri, May 20, 2022 at 07:23:24PM +0200, Eugenio Pérez wrote:
    > > The ioctl adds support for stop the device from userspace.
    > >
    > > Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
    > > ---
    > > drivers/vhost/vdpa.c | 18 ++++++++++++++++++
    > > include/uapi/linux/vhost.h | 3 +++
    > > 2 files changed, 21 insertions(+)
    > >
    > > diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c
    > > index a325bc259afb..da4a8c709bc1 100644
    > > --- a/drivers/vhost/vdpa.c
    > > +++ b/drivers/vhost/vdpa.c
    > > @@ -478,6 +478,21 @@ static long vhost_vdpa_get_vqs_count(struct vhost_vdpa *v, u32 __user *argp)
    > > return 0;
    > > }
    > >
    > > +static long vhost_vdpa_stop(struct vhost_vdpa *v, u32 __user *argp)
    > > +{
    > > + struct vdpa_device *vdpa = v->vdpa;
    > > + const struct vdpa_config_ops *ops = vdpa->config;
    > > + int stop;
    > > +
    > > + if (!ops->stop)
    > > + return -EOPNOTSUPP;
    > > +
    > > + if (copy_to_user(argp, &stop, sizeof(stop)))
    >
    > You want to use copy_from_user() here.
    >

    Hi Martin,

    You're right, I'll resend a new version with this fixed. Thanks!

    > Martin
    >
    > > + return -EFAULT;
    > > +
    > > + return ops->stop(vdpa, stop);
    > > +}
    > > +
    > > static long vhost_vdpa_vring_ioctl(struct vhost_vdpa *v, unsigned int cmd,
    > > void __user *argp)
    > > {
    > > @@ -649,6 +664,9 @@ static long vhost_vdpa_unlocked_ioctl(struct file *filep,
    > > case VHOST_VDPA_GET_VQS_COUNT:
    > > r = vhost_vdpa_get_vqs_count(v, argp);
    > > break;
    > > + case VHOST_STOP:
    > > + r = vhost_vdpa_stop(v, argp);
    > > + break;
    > > default:
    > > r = vhost_dev_ioctl(&v->vdev, cmd, argp);
    > > if (r == -ENOIOCTLCMD)
    > > diff --git a/include/uapi/linux/vhost.h b/include/uapi/linux/vhost.h
    > > index cab645d4a645..e7526968ab0c 100644
    > > --- a/include/uapi/linux/vhost.h
    > > +++ b/include/uapi/linux/vhost.h
    > > @@ -171,4 +171,7 @@
    > > #define VHOST_VDPA_SET_GROUP_ASID _IOW(VHOST_VIRTIO, 0x7C, \
    > > struct vhost_vring_state)
    > >
    > > +/* Stop or resume a device so it does not process virtqueue requests anymore */
    > > +#define VHOST_STOP _IOW(VHOST_VIRTIO, 0x7D, int)
    > > +
    > > #endif
    > > --
    > > 2.27.0
    >

    \
     
     \ /
      Last update: 2022-05-23 10:16    [W:3.033 / U:0.180 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site