net: mdio-mux-meson-g12a: force internal PHY off on mux switch
[platform/kernel/linux-rpi.git] / drivers / vdpa / vdpa.c
index 1dc121a..8657149 100644 (file)
@@ -353,7 +353,8 @@ static int vdpa_mgmtdev_fill(const struct vdpa_mgmt_dev *mdev, struct sk_buff *m
                goto msg_err;
 
        while (mdev->id_table[i].device) {
-               supported_classes |= BIT(mdev->id_table[i].device);
+               if (mdev->id_table[i].device <= 63)
+                       supported_classes |= BIT_ULL(mdev->id_table[i].device);
                i++;
        }
 
@@ -557,14 +558,19 @@ static int vdpa_nl_cmd_dev_get_doit(struct sk_buff *skb, struct genl_info *info)
                goto mdev_err;
        }
        err = vdpa_dev_fill(vdev, msg, info->snd_portid, info->snd_seq, 0, info->extack);
-       if (!err)
-               err = genlmsg_reply(msg, info);
+       if (err)
+               goto mdev_err;
+
+       err = genlmsg_reply(msg, info);
+       put_device(dev);
+       mutex_unlock(&vdpa_dev_mutex);
+       return err;
+
 mdev_err:
        put_device(dev);
 err:
        mutex_unlock(&vdpa_dev_mutex);
-       if (err)
-               nlmsg_free(msg);
+       nlmsg_free(msg);
        return err;
 }