From: Simon Wilkinson Date: Sun, 17 Apr 2011 22:43:51 +0000 (+0100) Subject: Linux CM: Use kernel allocator directly X-Git-Tag: openafs-devel-1_7_1~424 X-Git-Url: http://git.openafs.org/?p=openafs.git;a=commitdiff_plain;h=7a70c2907b0435653098a611a140fea1ac0b2fac Linux CM: Use kernel allocator directly In another few locations within the Linux portion of the cache manager, directly use the kernel allocator. We can do so here because we can guarantee that the amount of memory being allocated is less than the page size, and there is a kfree() in all of the exit paths, so we don't need the magic freeing behaviour, either. Change-Id: I9c9f3a0b8243b66cb081cd2b35f0d27aaa378934 Reviewed-on: http://gerrit.openafs.org/4752 Reviewed-by: Derrick Brashear Reviewed-by: Marc Dionne Tested-by: Derrick Brashear --- diff --git a/src/afs/LINUX/osi_vfsops.c b/src/afs/LINUX/osi_vfsops.c index 596d064..4495300 100644 --- a/src/afs/LINUX/osi_vfsops.c +++ b/src/afs/LINUX/osi_vfsops.c @@ -113,7 +113,7 @@ afs_fill_super(struct super_block *sb, void *data, int silent) #endif /* used for inodes backing_dev_info field, also */ - afs_backing_dev_info = osi_Alloc(sizeof(struct backing_dev_info)); + afs_backing_dev_info = kmalloc(sizeof(struct backing_dev_info), GFP_NOFS); #if defined(HAVE_LINUX_BDI_INIT) bdi_init(afs_backing_dev_info); #endif @@ -348,7 +348,7 @@ afs_put_super(struct super_block *sbp) #if defined(HAVE_LINUX_BDI_INIT) bdi_destroy(afs_backing_dev_info); #endif - osi_Free(afs_backing_dev_info, sizeof(struct backing_dev_info)); + kfree(afs_backing_dev_info); AFS_GUNLOCK(); sbp->s_dev = 0; diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c index 81039d6..eb1f8e7 100644 --- a/src/afs/LINUX/osi_vnodeops.c +++ b/src/afs/LINUX/osi_vnodeops.c @@ -1471,7 +1471,7 @@ static int afs_linux_follow_link(struct dentry *dentry, struct nameidata *nd) int code; char *name; - name = osi_Alloc(PATH_MAX); + name = kmalloc(PATH_MAX, GFP_NOFS); if (!name) { return -EIO; } @@ -1493,9 +1493,9 @@ static void afs_linux_put_link(struct dentry *dentry, struct nameidata *nd) { char *name = nd_get_link(nd); - if (name && !IS_ERR(name)) { - osi_Free(name, PATH_MAX); - } + + if (name && !IS_ERR(name)) + kfree(name); } #endif /* USABLE_KERNEL_PAGE_SYMLINK_CACHE */ @@ -1741,8 +1741,8 @@ afs_linux_fillpage(struct file *fp, struct page *pp) address = kmap(pp); ClearPageError(pp); - auio = osi_Alloc(sizeof(struct uio)); - iovecp = osi_Alloc(sizeof(struct iovec)); + auio = kmalloc(sizeof(struct uio), GFP_NOFS); + iovecp = kmalloc(sizeof(struct iovec), GFP_NOFS); setup_uio(auio, iovecp, (char *)address, offset, PAGE_SIZE, UIO_READ, AFS_UIOSYS); @@ -1773,8 +1773,8 @@ afs_linux_fillpage(struct file *fp, struct page *pp) kunmap(pp); - osi_Free(auio, sizeof(struct uio)); - osi_Free(iovecp, sizeof(struct iovec)); + kfree(auio); + kfree(iovecp); crfree(credp); return afs_convert_code(code);