hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/xen/privcmd-buf.c
....@@ -140,8 +140,7 @@
140140 if (!(vma->vm_flags & VM_SHARED))
141141 return -EINVAL;
142142
143
- vma_priv = kzalloc(sizeof(*vma_priv) + count * sizeof(void *),
144
- GFP_KERNEL);
143
+ vma_priv = kzalloc(struct_size(vma_priv, pages, count), GFP_KERNEL);
145144 if (!vma_priv)
146145 return -ENOMEM;
147146
....@@ -166,12 +165,8 @@
166165 if (vma_priv->n_pages != count)
167166 ret = -ENOMEM;
168167 else
169
- for (i = 0; i < vma_priv->n_pages; i++) {
170
- ret = vm_insert_page(vma, vma->vm_start + i * PAGE_SIZE,
171
- vma_priv->pages[i]);
172
- if (ret)
173
- break;
174
- }
168
+ ret = vm_map_pages_zero(vma, vma_priv->pages,
169
+ vma_priv->n_pages);
175170
176171 if (ret)
177172 privcmd_buf_vmapriv_free(vma_priv);