Subject: linux-next: build failure after merge of the vhost tree

From: Stephen Rothwell <[email-masked]>
Date: Thu, 30 Jul 2020 17:52:33 +1000

Hi all,

After merging the vhost tree, today's linux-next build (x86_64
allmodconfig) failed like this:

drivers/virtio/virtio_vdpa.c: In function 'virtio_vdpa_get':
drivers/virtio/virtio_vdpa.c:60:32: warning: unused variable 'ops' [-Wunused-variable]
   60 |  const struct vdpa_config_ops *ops = vdpa->config;
      |                                ^~~
drivers/virtio/virtio_vdpa.c: In function 'virtio_vdpa_finalize_features':
drivers/virtio/virtio_vdpa.c:301:9: error: void value not ignored as it ought to be
  301 |  return vdpa_set_features(vdpa, vdev->features);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/virtio/virtio_vdpa.c:296:32: warning: unused variable 'ops' [-Wunused-variable]
  296 |  const struct vdpa_config_ops *ops = vdpa->config;
      |                                ^~~
drivers/virtio/virtio_vdpa.c:302:1: warning: control reaches end of non-void function [-Wreturn-type]
  302 | }
      | ^
drivers/vhost/vdpa.c: In function 'vhost_vdpa_get_config':
drivers/vhost/vdpa.c:198:32: warning: unused variable 'ops' [-Wunused-variable]
  198 |  const struct vdpa_config_ops *ops = vdpa->config;
      |                                ^~~
drivers/vhost/vdpa.c: In function 'vhost_vdpa_set_features':
drivers/vhost/vdpa.c:284:6: error: void value not ignored as it ought to be
  284 |  if (vdpa_set_features(vdpa, features))
      |      ^~~~~~~~~~~~~~~~~

Caused by commit

  d4ff0377f05b ("virtio_vdpa: legacy features handling")

I added the following (hack) patch for today.

From: Stephen Rothwell <[email-masked]>
Date: Thu, 30 Jul 2020 17:39:11 +1000
Subject: [PATCH] virtio_vdpa: fix legacy features handling

Signed-off-by: Stephen Rothwell <[email-masked]>
---
 drivers/vhost/vdpa.c         | 4 +---
 drivers/virtio/virtio_vdpa.c | 5 ++---
 2 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c
index be9b3ed01a93..f7ef5f3ef0e3 100644
--- a/drivers/vhost/vdpa.c
+++ b/drivers/vhost/vdpa.c
@@ -195,7 +195,6 @@ static long vhost_vdpa_get_config(struct vhost_vdpa *v,
 				  struct vhost_vdpa_config __user *c)
 {
 	struct vdpa_device *vdpa = v->vdpa;
-	const struct vdpa_config_ops *ops = vdpa->config;
 	struct vhost_vdpa_config config;
 	unsigned long size = offsetof(struct vhost_vdpa_config, buf);
 	u8 *buf;
@@ -281,8 +280,7 @@ static long vhost_vdpa_set_features(struct vhost_vdpa *v, u64 __user *featurep)
 	if (features & ~vhost_vdpa_features[v->virtio_id])
 		return -EINVAL;
 
-	if (vdpa_set_features(vdpa, features))
-		return -EINVAL;
+	vdpa_set_features(vdpa, features);
 
 	return 0;
 }
diff --git a/drivers/virtio/virtio_vdpa.c b/drivers/virtio/virtio_vdpa.c
index d0ae58d35392..73c5d49ff0df 100644
--- a/drivers/virtio/virtio_vdpa.c
+++ b/drivers/virtio/virtio_vdpa.c
@@ -57,7 +57,6 @@ static void virtio_vdpa_get(struct virtio_device *vdev, unsigned offset,
 			    void *buf, unsigned len)
 {
 	struct vdpa_device *vdpa = vd_get_vdpa(vdev);
-	const struct vdpa_config_ops *ops = vdpa->config;
 
 	vdpa_get_config(vdpa, offset, buf, len);
 }
@@ -293,12 +292,12 @@ static u64 virtio_vdpa_get_features(struct virtio_device *vdev)
 static int virtio_vdpa_finalize_features(struct virtio_device *vdev)
 {
 	struct vdpa_device *vdpa = vd_get_vdpa(vdev);
-	const struct vdpa_config_ops *ops = vdpa->config;
 
 	/* Give virtio_ring a chance to accept features. */
 	vring_transport_features(vdev);
 
-	return vdpa_set_features(vdpa, vdev->features);
+	vdpa_set_features(vdpa, vdev->features);
+	return 0;
 }
 
 static const char *virtio_vdpa_bus_name(struct virtio_device *vdev)
-- 
2.27.0

-- 
Cheers,
Stephen Rothwell