virtio/vhost: minor fixes
This fixes two minor bugs: error handling in vhost, and capability processing in virtio. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJW1w/9AAoJECgfDbjSjVRpOwMH/10g1iyVAF7FR3RgAgcutROy mt7RNRGhcJrccB3imWvA5llHfpEQe6b2IGRRjLpy3cHOqoytSJ8F9GbAv/Ya6rBY ZNsapZkEacLX3Byi/Tll9C6pP7eCHswveBwreXVYpxerTuViorqU0RQXHQCY1nBa jAHr7eHp7PlSjAKlwUX181/cDKF35VMchCE+NfSmgDFnkOMb8E3TVXqV1wuSZSaf Ci2IgULrQQC2rzxFg/ZQePweSP9cBrhpX3c3VkVa/N0Io4DOQWLg2KUbwzrs/mel i4rlKngwwRO0rIsWU+J5hMq4Vqg+Zv6mVQGm3FFAJWle03rUOZPYFCPwbKA6HNU= =HeDc -----END PGP SIGNATURE----- Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost Pull minor virtio/vhost fixes from Michael Tsirkin: "This fixes two minor bugs: error handling in vhost, and capability processing in virtio" * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost: vhost: fix error path in vhost_init_used() virtio-pci: read the right virtio_pci_notify_cap field
This commit is contained in:
Коммит
f4bd982208
|
@ -1156,6 +1156,8 @@ int vhost_init_used(struct vhost_virtqueue *vq)
|
|||
{
|
||||
__virtio16 last_used_idx;
|
||||
int r;
|
||||
bool is_le = vq->is_le;
|
||||
|
||||
if (!vq->private_data) {
|
||||
vq->is_le = virtio_legacy_is_little_endian();
|
||||
return 0;
|
||||
|
@ -1165,15 +1167,20 @@ int vhost_init_used(struct vhost_virtqueue *vq)
|
|||
|
||||
r = vhost_update_used_flags(vq);
|
||||
if (r)
|
||||
return r;
|
||||
goto err;
|
||||
vq->signalled_used_valid = false;
|
||||
if (!access_ok(VERIFY_READ, &vq->used->idx, sizeof vq->used->idx))
|
||||
return -EFAULT;
|
||||
if (!access_ok(VERIFY_READ, &vq->used->idx, sizeof vq->used->idx)) {
|
||||
r = -EFAULT;
|
||||
goto err;
|
||||
}
|
||||
r = __get_user(last_used_idx, &vq->used->idx);
|
||||
if (r)
|
||||
return r;
|
||||
goto err;
|
||||
vq->last_used_idx = vhost16_to_cpu(vq, last_used_idx);
|
||||
return 0;
|
||||
err:
|
||||
vq->is_le = is_le;
|
||||
return r;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(vhost_init_used);
|
||||
|
||||
|
|
|
@ -679,7 +679,7 @@ int virtio_pci_modern_probe(struct virtio_pci_device *vp_dev)
|
|||
|
||||
pci_read_config_dword(pci_dev,
|
||||
notify + offsetof(struct virtio_pci_notify_cap,
|
||||
cap.length),
|
||||
cap.offset),
|
||||
¬ify_offset);
|
||||
|
||||
/* We don't know how many VQs we'll map, ahead of the time.
|
||||
|
|
Загрузка…
Ссылка в новой задаче