virtio: don't allocate vqs when names[i] = NULL
Some vqs may not need to be allocated when their related feature bits
are disabled. So callers may pass in such vqs with "names = NULL".
Then we skip such vq allocations.
Signed-off-by: Wei Wang <wei.w.wang@intel.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Wei Wang <wei.w.wang@intel.com>
Signed-off-by: Wei Wang <wei.w.wang@intel.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Cc: stable@vger.kernel.org
Fixes: 86a559787e
("virtio-balloon: VIRTIO_BALLOON_F_FREE_PAGE_HINT")
This commit is contained in:

کامیت شده توسط
Michael S. Tsirkin

والد
ddbeac07a3
کامیت
a229989d97
@@ -635,7 +635,7 @@ static int virtio_ccw_find_vqs(struct virtio_device *vdev, unsigned nvqs,
|
||||
{
|
||||
struct virtio_ccw_device *vcdev = to_vc_device(vdev);
|
||||
unsigned long *indicatorp = NULL;
|
||||
int ret, i;
|
||||
int ret, i, queue_idx = 0;
|
||||
struct ccw1 *ccw;
|
||||
|
||||
ccw = kzalloc(sizeof(*ccw), GFP_DMA | GFP_KERNEL);
|
||||
@@ -643,8 +643,14 @@ static int virtio_ccw_find_vqs(struct virtio_device *vdev, unsigned nvqs,
|
||||
return -ENOMEM;
|
||||
|
||||
for (i = 0; i < nvqs; ++i) {
|
||||
vqs[i] = virtio_ccw_setup_vq(vdev, i, callbacks[i], names[i],
|
||||
ctx ? ctx[i] : false, ccw);
|
||||
if (!names[i]) {
|
||||
vqs[i] = NULL;
|
||||
continue;
|
||||
}
|
||||
|
||||
vqs[i] = virtio_ccw_setup_vq(vdev, queue_idx++, callbacks[i],
|
||||
names[i], ctx ? ctx[i] : false,
|
||||
ccw);
|
||||
if (IS_ERR(vqs[i])) {
|
||||
ret = PTR_ERR(vqs[i]);
|
||||
vqs[i] = NULL;
|
||||
|
مرجع در شماره جدید
Block a user