Xen/gntdev: don't needlessly allocate k{,un}map_ops[]

They're needed only in the not-auto-translate (i.e. PV) case; there's no
point in allocating memory that's never going to get accessed.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Link: https://lore.kernel.org/r/180d50cb-5531-8952-4bf0-d65c554638ed@suse.com
Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>

authored by Jan Beulich and committed by Boris Ostrovsky 36caa3fe 0f9b05b9

+14 -9
+14 -9
drivers/xen/gntdev.c
··· 136 136 add->grants = kvcalloc(count, sizeof(add->grants[0]), GFP_KERNEL); 137 137 add->map_ops = kvcalloc(count, sizeof(add->map_ops[0]), GFP_KERNEL); 138 138 add->unmap_ops = kvcalloc(count, sizeof(add->unmap_ops[0]), GFP_KERNEL); 139 - add->kmap_ops = kvcalloc(count, sizeof(add->kmap_ops[0]), GFP_KERNEL); 140 - add->kunmap_ops = kvcalloc(count, 141 - sizeof(add->kunmap_ops[0]), GFP_KERNEL); 142 139 add->pages = kvcalloc(count, sizeof(add->pages[0]), GFP_KERNEL); 143 140 if (NULL == add->grants || 144 141 NULL == add->map_ops || 145 142 NULL == add->unmap_ops || 146 - NULL == add->kmap_ops || 147 - NULL == add->kunmap_ops || 148 143 NULL == add->pages) 149 144 goto err; 145 + if (use_ptemod) { 146 + add->kmap_ops = kvcalloc(count, sizeof(add->kmap_ops[0]), 147 + GFP_KERNEL); 148 + add->kunmap_ops = kvcalloc(count, sizeof(add->kunmap_ops[0]), 149 + GFP_KERNEL); 150 + if (NULL == add->kmap_ops || NULL == add->kunmap_ops) 151 + goto err; 152 + } 150 153 151 154 #ifdef CONFIG_XEN_GRANT_DMA_ALLOC 152 155 add->dma_flags = dma_flags; ··· 188 185 for (i = 0; i < count; i++) { 189 186 add->map_ops[i].handle = -1; 190 187 add->unmap_ops[i].handle = -1; 191 - add->kmap_ops[i].handle = -1; 192 - add->kunmap_ops[i].handle = -1; 188 + if (use_ptemod) { 189 + add->kmap_ops[i].handle = -1; 190 + add->kunmap_ops[i].handle = -1; 191 + } 193 192 } 194 193 195 194 add->index = 0; ··· 337 332 } 338 333 339 334 pr_debug("map %d+%d\n", map->index, map->count); 340 - err = gnttab_map_refs(map->map_ops, use_ptemod ? map->kmap_ops : NULL, 341 - map->pages, map->count); 335 + err = gnttab_map_refs(map->map_ops, map->kmap_ops, map->pages, 336 + map->count); 342 337 343 338 for (i = 0; i < map->count; i++) { 344 339 if (map->map_ops[i].status == GNTST_okay)