Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'for-linus-5.2b-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip

Pull xen fix from Juergen Gross:
"Just one fix for the Xen block frontend driver avoiding allocations
with order > 0"

* tag 'for-linus-5.2b-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
xen-blkfront: switch kcalloc to kvcalloc for large array allocation

+19 -19
+19 -19
drivers/block/xen-blkfront.c
··· 1310 1310 } 1311 1311 1312 1312 free_shadow: 1313 - kfree(rinfo->shadow[i].grants_used); 1313 + kvfree(rinfo->shadow[i].grants_used); 1314 1314 rinfo->shadow[i].grants_used = NULL; 1315 - kfree(rinfo->shadow[i].indirect_grants); 1315 + kvfree(rinfo->shadow[i].indirect_grants); 1316 1316 rinfo->shadow[i].indirect_grants = NULL; 1317 - kfree(rinfo->shadow[i].sg); 1317 + kvfree(rinfo->shadow[i].sg); 1318 1318 rinfo->shadow[i].sg = NULL; 1319 1319 } 1320 1320 ··· 1353 1353 for (i = 0; i < info->nr_rings; i++) 1354 1354 blkif_free_ring(&info->rinfo[i]); 1355 1355 1356 - kfree(info->rinfo); 1356 + kvfree(info->rinfo); 1357 1357 info->rinfo = NULL; 1358 1358 info->nr_rings = 0; 1359 1359 } ··· 1914 1914 if (!info->nr_rings) 1915 1915 info->nr_rings = 1; 1916 1916 1917 - info->rinfo = kcalloc(info->nr_rings, 1918 - sizeof(struct blkfront_ring_info), 1919 - GFP_KERNEL); 1917 + info->rinfo = kvcalloc(info->nr_rings, 1918 + sizeof(struct blkfront_ring_info), 1919 + GFP_KERNEL); 1920 1920 if (!info->rinfo) { 1921 1921 xenbus_dev_fatal(info->xbdev, -ENOMEM, "allocating ring_info structure"); 1922 1922 info->nr_rings = 0; ··· 2232 2232 2233 2233 for (i = 0; i < BLK_RING_SIZE(info); i++) { 2234 2234 rinfo->shadow[i].grants_used = 2235 - kcalloc(grants, 2236 - sizeof(rinfo->shadow[i].grants_used[0]), 2237 - GFP_NOIO); 2238 - rinfo->shadow[i].sg = kcalloc(psegs, 2239 - sizeof(rinfo->shadow[i].sg[0]), 2240 - GFP_NOIO); 2235 + kvcalloc(grants, 2236 + sizeof(rinfo->shadow[i].grants_used[0]), 2237 + GFP_NOIO); 2238 + rinfo->shadow[i].sg = kvcalloc(psegs, 2239 + sizeof(rinfo->shadow[i].sg[0]), 2240 + GFP_NOIO); 2241 2241 if (info->max_indirect_segments) 2242 2242 rinfo->shadow[i].indirect_grants = 2243 - kcalloc(INDIRECT_GREFS(grants), 2244 - sizeof(rinfo->shadow[i].indirect_grants[0]), 2245 - GFP_NOIO); 2243 + kvcalloc(INDIRECT_GREFS(grants), 2244 + sizeof(rinfo->shadow[i].indirect_grants[0]), 2245 + GFP_NOIO); 2246 2246 if ((rinfo->shadow[i].grants_used == NULL) || 2247 2247 (rinfo->shadow[i].sg == NULL) || 2248 2248 (info->max_indirect_segments && ··· 2256 2256 2257 2257 out_of_memory: 2258 2258 for (i = 0; i < BLK_RING_SIZE(info); i++) { 2259 - kfree(rinfo->shadow[i].grants_used); 2259 + kvfree(rinfo->shadow[i].grants_used); 2260 2260 rinfo->shadow[i].grants_used = NULL; 2261 - kfree(rinfo->shadow[i].sg); 2261 + kvfree(rinfo->shadow[i].sg); 2262 2262 rinfo->shadow[i].sg = NULL; 2263 - kfree(rinfo->shadow[i].indirect_grants); 2263 + kvfree(rinfo->shadow[i].indirect_grants); 2264 2264 rinfo->shadow[i].indirect_grants = NULL; 2265 2265 } 2266 2266 if (!list_empty(&rinfo->indirect_pages)) {