Loading drivers/vhost/net.c +2 −2 Original line number Original line Diff line number Diff line Loading @@ -823,14 +823,14 @@ static long vhost_net_ioctl(struct file *f, unsigned int ioctl, return -EFAULT; return -EFAULT; return vhost_net_set_backend(n, backend.index, backend.fd); return vhost_net_set_backend(n, backend.index, backend.fd); case VHOST_GET_FEATURES: case VHOST_GET_FEATURES: features = VHOST_FEATURES; features = VHOST_NET_FEATURES; if (copy_to_user(featurep, &features, sizeof features)) if (copy_to_user(featurep, &features, sizeof features)) return -EFAULT; return -EFAULT; return 0; return 0; case VHOST_SET_FEATURES: case VHOST_SET_FEATURES: if (copy_from_user(&features, featurep, sizeof features)) if (copy_from_user(&features, featurep, sizeof features)) return -EFAULT; return -EFAULT; if (features & ~VHOST_FEATURES) if (features & ~VHOST_NET_FEATURES) return -EOPNOTSUPP; return -EOPNOTSUPP; return vhost_net_set_features(n, features); return vhost_net_set_features(n, features); case VHOST_RESET_OWNER: case VHOST_RESET_OWNER: Loading drivers/vhost/test.c +2 −2 Original line number Original line Diff line number Diff line Loading @@ -261,14 +261,14 @@ static long vhost_test_ioctl(struct file *f, unsigned int ioctl, return -EFAULT; return -EFAULT; return vhost_test_run(n, test); return vhost_test_run(n, test); case VHOST_GET_FEATURES: case VHOST_GET_FEATURES: features = VHOST_FEATURES; features = VHOST_NET_FEATURES; if (copy_to_user(featurep, &features, sizeof features)) if (copy_to_user(featurep, &features, sizeof features)) return -EFAULT; return -EFAULT; return 0; return 0; case VHOST_SET_FEATURES: case VHOST_SET_FEATURES: if (copy_from_user(&features, featurep, sizeof features)) if (copy_from_user(&features, featurep, sizeof features)) return -EFAULT; return -EFAULT; if (features & ~VHOST_FEATURES) if (features & ~VHOST_NET_FEATURES) return -EOPNOTSUPP; return -EOPNOTSUPP; return vhost_test_set_features(n, features); return vhost_test_set_features(n, features); case VHOST_RESET_OWNER: case VHOST_RESET_OWNER: Loading drivers/vhost/vhost.c +2 −3 Original line number Original line Diff line number Diff line Loading @@ -64,7 +64,7 @@ static int vhost_poll_wakeup(wait_queue_t *wait, unsigned mode, int sync, return 0; return 0; } } static void vhost_work_init(struct vhost_work *work, vhost_work_fn_t fn) void vhost_work_init(struct vhost_work *work, vhost_work_fn_t fn) { { INIT_LIST_HEAD(&work->node); INIT_LIST_HEAD(&work->node); work->fn = fn; work->fn = fn; Loading Loading @@ -137,8 +137,7 @@ void vhost_poll_flush(struct vhost_poll *poll) vhost_work_flush(poll->dev, &poll->work); vhost_work_flush(poll->dev, &poll->work); } } static inline void vhost_work_queue(struct vhost_dev *dev, void vhost_work_queue(struct vhost_dev *dev, struct vhost_work *work) struct vhost_work *work) { { unsigned long flags; unsigned long flags; Loading drivers/vhost/vhost.h +5 −1 Original line number Original line Diff line number Diff line Loading @@ -43,6 +43,9 @@ struct vhost_poll { struct vhost_dev *dev; struct vhost_dev *dev; }; }; void vhost_work_init(struct vhost_work *work, vhost_work_fn_t fn); void vhost_work_queue(struct vhost_dev *dev, struct vhost_work *work); void vhost_poll_init(struct vhost_poll *poll, vhost_work_fn_t fn, void vhost_poll_init(struct vhost_poll *poll, vhost_work_fn_t fn, unsigned long mask, struct vhost_dev *dev); unsigned long mask, struct vhost_dev *dev); void vhost_poll_start(struct vhost_poll *poll, struct file *file); void vhost_poll_start(struct vhost_poll *poll, struct file *file); Loading Loading @@ -201,7 +204,8 @@ enum { VHOST_FEATURES = (1ULL << VIRTIO_F_NOTIFY_ON_EMPTY) | VHOST_FEATURES = (1ULL << VIRTIO_F_NOTIFY_ON_EMPTY) | (1ULL << VIRTIO_RING_F_INDIRECT_DESC) | (1ULL << VIRTIO_RING_F_INDIRECT_DESC) | (1ULL << VIRTIO_RING_F_EVENT_IDX) | (1ULL << VIRTIO_RING_F_EVENT_IDX) | (1ULL << VHOST_F_LOG_ALL) | (1ULL << VHOST_F_LOG_ALL), VHOST_NET_FEATURES = VHOST_FEATURES | (1ULL << VHOST_NET_F_VIRTIO_NET_HDR) | (1ULL << VHOST_NET_F_VIRTIO_NET_HDR) | (1ULL << VIRTIO_NET_F_MRG_RXBUF), (1ULL << VIRTIO_NET_F_MRG_RXBUF), }; }; Loading Loading
drivers/vhost/net.c +2 −2 Original line number Original line Diff line number Diff line Loading @@ -823,14 +823,14 @@ static long vhost_net_ioctl(struct file *f, unsigned int ioctl, return -EFAULT; return -EFAULT; return vhost_net_set_backend(n, backend.index, backend.fd); return vhost_net_set_backend(n, backend.index, backend.fd); case VHOST_GET_FEATURES: case VHOST_GET_FEATURES: features = VHOST_FEATURES; features = VHOST_NET_FEATURES; if (copy_to_user(featurep, &features, sizeof features)) if (copy_to_user(featurep, &features, sizeof features)) return -EFAULT; return -EFAULT; return 0; return 0; case VHOST_SET_FEATURES: case VHOST_SET_FEATURES: if (copy_from_user(&features, featurep, sizeof features)) if (copy_from_user(&features, featurep, sizeof features)) return -EFAULT; return -EFAULT; if (features & ~VHOST_FEATURES) if (features & ~VHOST_NET_FEATURES) return -EOPNOTSUPP; return -EOPNOTSUPP; return vhost_net_set_features(n, features); return vhost_net_set_features(n, features); case VHOST_RESET_OWNER: case VHOST_RESET_OWNER: Loading
drivers/vhost/test.c +2 −2 Original line number Original line Diff line number Diff line Loading @@ -261,14 +261,14 @@ static long vhost_test_ioctl(struct file *f, unsigned int ioctl, return -EFAULT; return -EFAULT; return vhost_test_run(n, test); return vhost_test_run(n, test); case VHOST_GET_FEATURES: case VHOST_GET_FEATURES: features = VHOST_FEATURES; features = VHOST_NET_FEATURES; if (copy_to_user(featurep, &features, sizeof features)) if (copy_to_user(featurep, &features, sizeof features)) return -EFAULT; return -EFAULT; return 0; return 0; case VHOST_SET_FEATURES: case VHOST_SET_FEATURES: if (copy_from_user(&features, featurep, sizeof features)) if (copy_from_user(&features, featurep, sizeof features)) return -EFAULT; return -EFAULT; if (features & ~VHOST_FEATURES) if (features & ~VHOST_NET_FEATURES) return -EOPNOTSUPP; return -EOPNOTSUPP; return vhost_test_set_features(n, features); return vhost_test_set_features(n, features); case VHOST_RESET_OWNER: case VHOST_RESET_OWNER: Loading
drivers/vhost/vhost.c +2 −3 Original line number Original line Diff line number Diff line Loading @@ -64,7 +64,7 @@ static int vhost_poll_wakeup(wait_queue_t *wait, unsigned mode, int sync, return 0; return 0; } } static void vhost_work_init(struct vhost_work *work, vhost_work_fn_t fn) void vhost_work_init(struct vhost_work *work, vhost_work_fn_t fn) { { INIT_LIST_HEAD(&work->node); INIT_LIST_HEAD(&work->node); work->fn = fn; work->fn = fn; Loading Loading @@ -137,8 +137,7 @@ void vhost_poll_flush(struct vhost_poll *poll) vhost_work_flush(poll->dev, &poll->work); vhost_work_flush(poll->dev, &poll->work); } } static inline void vhost_work_queue(struct vhost_dev *dev, void vhost_work_queue(struct vhost_dev *dev, struct vhost_work *work) struct vhost_work *work) { { unsigned long flags; unsigned long flags; Loading
drivers/vhost/vhost.h +5 −1 Original line number Original line Diff line number Diff line Loading @@ -43,6 +43,9 @@ struct vhost_poll { struct vhost_dev *dev; struct vhost_dev *dev; }; }; void vhost_work_init(struct vhost_work *work, vhost_work_fn_t fn); void vhost_work_queue(struct vhost_dev *dev, struct vhost_work *work); void vhost_poll_init(struct vhost_poll *poll, vhost_work_fn_t fn, void vhost_poll_init(struct vhost_poll *poll, vhost_work_fn_t fn, unsigned long mask, struct vhost_dev *dev); unsigned long mask, struct vhost_dev *dev); void vhost_poll_start(struct vhost_poll *poll, struct file *file); void vhost_poll_start(struct vhost_poll *poll, struct file *file); Loading Loading @@ -201,7 +204,8 @@ enum { VHOST_FEATURES = (1ULL << VIRTIO_F_NOTIFY_ON_EMPTY) | VHOST_FEATURES = (1ULL << VIRTIO_F_NOTIFY_ON_EMPTY) | (1ULL << VIRTIO_RING_F_INDIRECT_DESC) | (1ULL << VIRTIO_RING_F_INDIRECT_DESC) | (1ULL << VIRTIO_RING_F_EVENT_IDX) | (1ULL << VIRTIO_RING_F_EVENT_IDX) | (1ULL << VHOST_F_LOG_ALL) | (1ULL << VHOST_F_LOG_ALL), VHOST_NET_FEATURES = VHOST_FEATURES | (1ULL << VHOST_NET_F_VIRTIO_NET_HDR) | (1ULL << VHOST_NET_F_VIRTIO_NET_HDR) | (1ULL << VIRTIO_NET_F_MRG_RXBUF), (1ULL << VIRTIO_NET_F_MRG_RXBUF), }; }; Loading