From 225f4414c124b26b7aaf9466506d6dbd1e0ea8ab Mon Sep 17 00:00:00 2001 From: Eric Sandeen Date: Thu, 25 Apr 2013 11:13:06 -0500 Subject: [PATCH] --- yaml --- r: 374821 b: refs/heads/master c: 7dfbcbefad4b24d9822d04dbd7b5dd5c3fd45076 h: refs/heads/master i: 374819: 1b6d90ae166089bde616d651bbc68a8c695895f8 v: v3 --- [refs] | 2 +- trunk/fs/xfs/xfs_ioctl32.c | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 8145ff72477c..2b732f4912ef 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: dd700d9452023a5b6820815a88f93c8f7010c270 +refs/heads/master: 7dfbcbefad4b24d9822d04dbd7b5dd5c3fd45076 diff --git a/trunk/fs/xfs/xfs_ioctl32.c b/trunk/fs/xfs/xfs_ioctl32.c index 63b8fc432151..c0c66259cc91 100644 --- a/trunk/fs/xfs/xfs_ioctl32.c +++ b/trunk/fs/xfs/xfs_ioctl32.c @@ -373,9 +373,12 @@ xfs_compat_attrlist_by_handle( return PTR_ERR(dentry); error = -ENOMEM; - kbuf = kmalloc(al_hreq.buflen, GFP_KERNEL); - if (!kbuf) - goto out_dput; + kbuf = kmem_zalloc(al_hreq.buflen, KM_SLEEP | KM_MAYFAIL); + if (!kbuf) { + kbuf = kmem_zalloc_large(al_hreq.buflen); + if (!kbuf) + goto out_dput; + } cursor = (attrlist_cursor_kern_t *)&al_hreq.pos; error = -xfs_attr_list(XFS_I(dentry->d_inode), kbuf, al_hreq.buflen, @@ -387,7 +390,10 @@ xfs_compat_attrlist_by_handle( error = -EFAULT; out_kfree: - kfree(kbuf); + if (is_vmalloc_addr(kbuf)) + kmem_free_large(kbuf); + else + kmem_free(kbuf); out_dput: dput(dentry); return error;