aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_bmap_util.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/xfs/xfs_bmap_util.c')
-rw-r--r--fs/xfs/xfs_bmap_util.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c
index c6dc55142cbe..97f952caea74 100644
--- a/fs/xfs/xfs_bmap_util.c
+++ b/fs/xfs/xfs_bmap_util.c
@@ -612,13 +612,9 @@ xfs_getbmap(
612 612
613 if (bmv->bmv_count > ULONG_MAX / sizeof(struct getbmapx)) 613 if (bmv->bmv_count > ULONG_MAX / sizeof(struct getbmapx))
614 return XFS_ERROR(ENOMEM); 614 return XFS_ERROR(ENOMEM);
615 out = kmem_zalloc(bmv->bmv_count * sizeof(struct getbmapx), KM_MAYFAIL); 615 out = kmem_zalloc_large(bmv->bmv_count * sizeof(struct getbmapx), 0);
616 if (!out) { 616 if (!out)
617 out = kmem_zalloc_large(bmv->bmv_count * 617 return XFS_ERROR(ENOMEM);
618 sizeof(struct getbmapx));
619 if (!out)
620 return XFS_ERROR(ENOMEM);
621 }
622 618
623 xfs_ilock(ip, XFS_IOLOCK_SHARED); 619 xfs_ilock(ip, XFS_IOLOCK_SHARED);
624 if (whichfork == XFS_DATA_FORK && !(iflags & BMV_IF_DELALLOC)) { 620 if (whichfork == XFS_DATA_FORK && !(iflags & BMV_IF_DELALLOC)) {
@@ -754,10 +750,7 @@ xfs_getbmap(
754 break; 750 break;
755 } 751 }
756 752
757 if (is_vmalloc_addr(out)) 753 kmem_free(out);
758 kmem_free_large(out);
759 else
760 kmem_free(out);
761 return error; 754 return error;
762} 755}
763 756