From: Simon Wilkinson Date: Sun, 17 Apr 2011 22:43:51 +0000 (+0100) Subject: Linux CM: Use kernel allocator directly X-Git-Tag: upstream/1.6.15^2~10 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=602130f1de65eefeb4e31e114070d544eb9edd40;p=packages%2Fo%2Fopenafs.git 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. Reviewed-on: http://gerrit.openafs.org/4752 Reviewed-by: Derrick Brashear Reviewed-by: Marc Dionne Tested-by: Derrick Brashear (cherry picked from commit 7a70c2907b0435653098a611a140fea1ac0b2fac) Change-Id: I72fd6a2109022af5e14d90ce147705da7ccec587 Reviewed-on: http://gerrit.openafs.org/11933 Tested-by: BuildBot Reviewed-by: Chas Williams <3chas3@gmail.com> Reviewed-by: Perry Ruiter Reviewed-by: Jeffrey Altman Reviewed-by: Benjamin Kaduk Reviewed-by: Stephan Wiesand --- diff --git a/src/afs/LINUX/osi_vfsops.c b/src/afs/LINUX/osi_vfsops.c index d6504ae5e..934478d9a 100644 --- a/src/afs/LINUX/osi_vfsops.c +++ b/src/afs/LINUX/osi_vfsops.c @@ -112,7 +112,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); memset(afs_backing_dev_info, 0, sizeof(struct backing_dev_info)); #if defined(HAVE_LINUX_BDI_INIT) bdi_init(afs_backing_dev_info); @@ -338,7 +338,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 91c09ed17..a8f00746a 100644 --- a/src/afs/LINUX/osi_vnodeops.c +++ b/src/afs/LINUX/osi_vnodeops.c @@ -1893,7 +1893,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; } @@ -1915,9 +1915,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 */ @@ -2174,8 +2174,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); @@ -2206,8 +2206,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);