On Thu, Nov 14, 2019 at 01:00:00PM -0800, Darrick J. Wong wrote: > On Thu, Nov 14, 2019 at 09:09:55PM +0100, Carlos Maiolino wrote: > > This can be replaced by direct calls to kfree() or kvfree() (whenever > > allocation is done via kmem_alloc_io() or kmem_alloc_large(). > > > > This patch has been partially scripted. I used the following sed to > > replace all kmem_free() calls by kfree() > > > > # find fs/xfs/ -type f -name '*.c' -o -name '*.h' | xargs sed -i \ > > 's/kmem_free/kfree/g' > > Coccinelle? ;) /me Doesn't understand the reference but thinks Darrick is talking about Coccinelle fancy brand :P /me is adept to conference-wear :D > > > And manually inspected kmem_alloc_io() and kmem_alloc_large() uses to > > use kvfree() instead. > > Why not just use kvfree everywhere? Is there a significant performance > penalty for the is_vmalloc_addr() check in kvfree vs. having to keep > track of kfree vs. kvfree? I honestly didn't see a big difference between both. Although, I didn't test much, other than some perf measurements while exercising some paths like for example xfs_dir_lookup(). I can't really say we will have any benefits in segmenting it by using kvfree() only where kmem_alloc_{large, io} is used, so I just relied on the comments above kvfree(), and well, we have an extra function call and a few extra instructions using kvfree(). So, even though it might be 'slightly' faster, this might build up on hot paths when handling millions of kfree(). But, at the end, I'd be lying if I say I spotted any significant difference. Btw, Dave mentioned in a not so far future, kmalloc() requests will be guaranteed to be aligned, so, I wonder if we will be able to replace both kmem_alloc_large() and kmem_alloc_io() by simple calls to kvmalloc() which does the job of falling back to vmalloc() if kmalloc() fails?! Not related to this patch itself, but to the whole talks about these helpers, I just thought worth to mention. > > --D > > > Signed-off-by: Carlos Maiolino <cmaiolino@xxxxxxxxxx> > > --- > > fs/xfs/kmem.h | 5 ---- > > fs/xfs/libxfs/xfs_attr.c | 2 +- > > fs/xfs/libxfs/xfs_attr_leaf.c | 8 +++--- > > fs/xfs/libxfs/xfs_da_btree.c | 10 +++---- > > fs/xfs/libxfs/xfs_defer.c | 4 +-- > > fs/xfs/libxfs/xfs_dir2.c | 18 ++++++------ > > fs/xfs/libxfs/xfs_dir2_block.c | 4 +-- > > fs/xfs/libxfs/xfs_dir2_sf.c | 8 +++--- > > fs/xfs/libxfs/xfs_iext_tree.c | 8 +++--- > > fs/xfs/libxfs/xfs_inode_fork.c | 8 +++--- > > fs/xfs/libxfs/xfs_refcount.c | 4 +-- > > fs/xfs/scrub/agheader.c | 2 +- > > fs/xfs/scrub/agheader_repair.c | 2 +- > > fs/xfs/scrub/attr.c | 2 +- > > fs/xfs/scrub/bitmap.c | 4 +-- > > fs/xfs/scrub/btree.c | 2 +- > > fs/xfs/scrub/refcount.c | 8 +++--- > > fs/xfs/scrub/scrub.c | 2 +- > > fs/xfs/xfs_acl.c | 4 +-- > > fs/xfs/xfs_attr_inactive.c | 2 +- > > fs/xfs/xfs_attr_list.c | 4 +-- > > fs/xfs/xfs_bmap_item.c | 4 +-- > > fs/xfs/xfs_buf.c | 12 ++++---- > > fs/xfs/xfs_buf_item.c | 4 +-- > > fs/xfs/xfs_dquot.c | 2 +- > > fs/xfs/xfs_dquot_item.c | 8 +++--- > > fs/xfs/xfs_error.c | 2 +- > > fs/xfs/xfs_extent_busy.c | 2 +- > > fs/xfs/xfs_extfree_item.c | 14 +++++----- > > fs/xfs/xfs_filestream.c | 4 +-- > > fs/xfs/xfs_inode.c | 12 ++++---- > > fs/xfs/xfs_inode_item.c | 2 +- > > fs/xfs/xfs_ioctl.c | 6 ++-- > > fs/xfs/xfs_ioctl32.c | 2 +- > > fs/xfs/xfs_iops.c | 2 +- > > fs/xfs/xfs_itable.c | 4 +-- > > fs/xfs/xfs_iwalk.c | 4 +-- > > fs/xfs/xfs_log.c | 12 ++++---- > > fs/xfs/xfs_log_cil.c | 16 +++++------ > > fs/xfs/xfs_log_recover.c | 50 +++++++++++++++++----------------- > > fs/xfs/xfs_mount.c | 8 +++--- > > fs/xfs/xfs_mru_cache.c | 8 +++--- > > fs/xfs/xfs_qm.c | 6 ++-- > > fs/xfs/xfs_refcount_item.c | 6 ++-- > > fs/xfs/xfs_rmap_item.c | 6 ++-- > > fs/xfs/xfs_rtalloc.c | 8 +++--- > > fs/xfs/xfs_super.c | 2 +- > > fs/xfs/xfs_trans_ail.c | 4 +-- > > 48 files changed, 158 insertions(+), 163 deletions(-) > > > > diff --git a/fs/xfs/kmem.h b/fs/xfs/kmem.h > > index 6143117770e9..ccdc72519339 100644 > > --- a/fs/xfs/kmem.h > > +++ b/fs/xfs/kmem.h > > @@ -56,11 +56,6 @@ extern void *kmem_alloc(size_t, xfs_km_flags_t); > > extern void *kmem_alloc_io(size_t size, int align_mask, xfs_km_flags_t flags); > > extern void *kmem_alloc_large(size_t size, xfs_km_flags_t); > > extern void *kmem_realloc(const void *, size_t, xfs_km_flags_t); > > -static inline void kmem_free(const void *ptr) > > -{ > > - kvfree(ptr); > > -} > > - > > > > static inline void * > > kmem_zalloc(size_t size, xfs_km_flags_t flags) > > diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c > > index 510ca6974604..bc8ca09e71d0 100644 > > --- a/fs/xfs/libxfs/xfs_attr.c > > +++ b/fs/xfs/libxfs/xfs_attr.c > > @@ -174,7 +174,7 @@ xfs_attr_get( > > /* on error, we have to clean up allocated value buffers */ > > if (error) { > > if (flags & ATTR_ALLOC) { > > - kmem_free(args.value); > > + kvfree(args.value); > > *value = NULL; > > } > > return error; > > diff --git a/fs/xfs/libxfs/xfs_attr_leaf.c b/fs/xfs/libxfs/xfs_attr_leaf.c > > index 85ec5945d29f..795b9b21b64d 100644 > > --- a/fs/xfs/libxfs/xfs_attr_leaf.c > > +++ b/fs/xfs/libxfs/xfs_attr_leaf.c > > @@ -931,7 +931,7 @@ xfs_attr_shortform_to_leaf( > > error = 0; > > *leaf_bp = bp; > > out: > > - kmem_free(tmpbuffer); > > + kfree(tmpbuffer); > > return error; > > } > > > > @@ -1131,7 +1131,7 @@ xfs_attr3_leaf_to_shortform( > > error = 0; > > > > out: > > - kmem_free(tmpbuffer); > > + kfree(tmpbuffer); > > return error; > > } > > > > @@ -1572,7 +1572,7 @@ xfs_attr3_leaf_compact( > > */ > > xfs_trans_log_buf(trans, bp, 0, args->geo->blksize - 1); > > > > - kmem_free(tmpbuffer); > > + kfree(tmpbuffer); > > } > > > > /* > > @@ -2293,7 +2293,7 @@ xfs_attr3_leaf_unbalance( > > } > > memcpy(save_leaf, tmp_leaf, state->args->geo->blksize); > > savehdr = tmphdr; /* struct copy */ > > - kmem_free(tmp_leaf); > > + kfree(tmp_leaf); > > } > > > > xfs_attr3_leaf_hdr_to_disk(state->args->geo, save_leaf, &savehdr); > > diff --git a/fs/xfs/libxfs/xfs_da_btree.c b/fs/xfs/libxfs/xfs_da_btree.c > > index c5c0b73febae..7ae82d91f776 100644 > > --- a/fs/xfs/libxfs/xfs_da_btree.c > > +++ b/fs/xfs/libxfs/xfs_da_btree.c > > @@ -2189,7 +2189,7 @@ xfs_da_grow_inode_int( > > > > out_free_map: > > if (mapp != &map) > > - kmem_free(mapp); > > + kfree(mapp); > > return error; > > } > > > > @@ -2639,7 +2639,7 @@ xfs_dabuf_map( > > error = xfs_buf_map_from_irec(mp, map, nmaps, irecs, nirecs); > > out: > > if (irecs != &irec) > > - kmem_free(irecs); > > + kfree(irecs); > > return error; > > } > > > > @@ -2686,7 +2686,7 @@ xfs_da_get_buf( > > > > out_free: > > if (mapp != &map) > > - kmem_free(mapp); > > + kfree(mapp); > > > > return error; > > } > > @@ -2735,7 +2735,7 @@ xfs_da_read_buf( > > *bpp = bp; > > out_free: > > if (mapp != &map) > > - kmem_free(mapp); > > + kfree(mapp); > > > > return error; > > } > > @@ -2772,7 +2772,7 @@ xfs_da_reada_buf( > > > > out_free: > > if (mapp != &map) > > - kmem_free(mapp); > > + kfree(mapp); > > > > return error; > > } > > diff --git a/fs/xfs/libxfs/xfs_defer.c b/fs/xfs/libxfs/xfs_defer.c > > index 22557527cfdb..27c3d150068a 100644 > > --- a/fs/xfs/libxfs/xfs_defer.c > > +++ b/fs/xfs/libxfs/xfs_defer.c > > @@ -341,7 +341,7 @@ xfs_defer_cancel_list( > > ops->cancel_item(pwi); > > } > > ASSERT(dfp->dfp_count == 0); > > - kmem_free(dfp); > > + kfree(dfp); > > } > > } > > > > @@ -433,7 +433,7 @@ xfs_defer_finish_noroll( > > } else { > > /* Done with the dfp, free it. */ > > list_del(&dfp->dfp_list); > > - kmem_free(dfp); > > + kfree(dfp); > > } > > > > if (ops->finish_cleanup) > > diff --git a/fs/xfs/libxfs/xfs_dir2.c b/fs/xfs/libxfs/xfs_dir2.c > > index 624c05e77ab4..efd7cec65259 100644 > > --- a/fs/xfs/libxfs/xfs_dir2.c > > +++ b/fs/xfs/libxfs/xfs_dir2.c > > @@ -109,8 +109,8 @@ xfs_da_mount( > > mp->m_attr_geo = kmem_zalloc(sizeof(struct xfs_da_geometry), > > KM_MAYFAIL); > > if (!mp->m_dir_geo || !mp->m_attr_geo) { > > - kmem_free(mp->m_dir_geo); > > - kmem_free(mp->m_attr_geo); > > + kfree(mp->m_dir_geo); > > + kfree(mp->m_attr_geo); > > return -ENOMEM; > > } > > > > @@ -176,8 +176,8 @@ void > > xfs_da_unmount( > > struct xfs_mount *mp) > > { > > - kmem_free(mp->m_dir_geo); > > - kmem_free(mp->m_attr_geo); > > + kfree(mp->m_dir_geo); > > + kfree(mp->m_attr_geo); > > } > > > > /* > > @@ -242,7 +242,7 @@ xfs_dir_init( > > args->dp = dp; > > args->trans = tp; > > error = xfs_dir2_sf_create(args, pdp->i_ino); > > - kmem_free(args); > > + kfree(args); > > return error; > > } > > > > @@ -311,7 +311,7 @@ xfs_dir_createname( > > rval = xfs_dir2_node_addname(args); > > > > out_free: > > - kmem_free(args); > > + kfree(args); > > return rval; > > } > > > > @@ -417,7 +417,7 @@ xfs_dir_lookup( > > } > > out_free: > > xfs_iunlock(dp, lock_mode); > > - kmem_free(args); > > + kfree(args); > > return rval; > > } > > > > @@ -475,7 +475,7 @@ xfs_dir_removename( > > else > > rval = xfs_dir2_node_removename(args); > > out_free: > > - kmem_free(args); > > + kfree(args); > > return rval; > > } > > > > @@ -536,7 +536,7 @@ xfs_dir_replace( > > else > > rval = xfs_dir2_node_replace(args); > > out_free: > > - kmem_free(args); > > + kfree(args); > > return rval; > > } > > > > diff --git a/fs/xfs/libxfs/xfs_dir2_block.c b/fs/xfs/libxfs/xfs_dir2_block.c > > index 358151ddfa75..766f282b706a 100644 > > --- a/fs/xfs/libxfs/xfs_dir2_block.c > > +++ b/fs/xfs/libxfs/xfs_dir2_block.c > > @@ -1229,7 +1229,7 @@ xfs_dir2_sf_to_block( > > sfep = xfs_dir2_sf_nextentry(mp, sfp, sfep); > > } > > /* Done with the temporary buffer */ > > - kmem_free(sfp); > > + kfree(sfp); > > /* > > * Sort the leaf entries by hash value. > > */ > > @@ -1244,6 +1244,6 @@ xfs_dir2_sf_to_block( > > xfs_dir3_data_check(dp, bp); > > return 0; > > out_free: > > - kmem_free(sfp); > > + kfree(sfp); > > return error; > > } > > diff --git a/fs/xfs/libxfs/xfs_dir2_sf.c b/fs/xfs/libxfs/xfs_dir2_sf.c > > index db1a82972d9e..f4de4e7b10ef 100644 > > --- a/fs/xfs/libxfs/xfs_dir2_sf.c > > +++ b/fs/xfs/libxfs/xfs_dir2_sf.c > > @@ -350,7 +350,7 @@ xfs_dir2_block_to_sf( > > xfs_dir2_sf_check(args); > > out: > > xfs_trans_log_inode(args->trans, dp, logflags); > > - kmem_free(sfp); > > + kfree(sfp); > > return error; > > } > > > > @@ -585,7 +585,7 @@ xfs_dir2_sf_addname_hard( > > sfep = xfs_dir2_sf_nextentry(mp, sfp, sfep); > > memcpy(sfep, oldsfep, old_isize - nbytes); > > } > > - kmem_free(buf); > > + kfree(buf); > > dp->i_d.di_size = new_isize; > > xfs_dir2_sf_check(args); > > } > > @@ -1202,7 +1202,7 @@ xfs_dir2_sf_toino4( > > /* > > * Clean up the inode. > > */ > > - kmem_free(buf); > > + kfree(buf); > > dp->i_d.di_size = newsize; > > xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE | XFS_ILOG_DDATA); > > } > > @@ -1275,7 +1275,7 @@ xfs_dir2_sf_toino8( > > /* > > * Clean up the inode. > > */ > > - kmem_free(buf); > > + kfree(buf); > > dp->i_d.di_size = newsize; > > xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE | XFS_ILOG_DDATA); > > } > > diff --git a/fs/xfs/libxfs/xfs_iext_tree.c b/fs/xfs/libxfs/xfs_iext_tree.c > > index 52451809c478..a7ba30cd81da 100644 > > --- a/fs/xfs/libxfs/xfs_iext_tree.c > > +++ b/fs/xfs/libxfs/xfs_iext_tree.c > > @@ -734,7 +734,7 @@ xfs_iext_remove_node( > > again: > > ASSERT(node->ptrs[pos]); > > ASSERT(node->ptrs[pos] == victim); > > - kmem_free(victim); > > + kfree(victim); > > > > nr_entries = xfs_iext_node_nr_entries(node, pos) - 1; > > offset = node->keys[0]; > > @@ -780,7 +780,7 @@ xfs_iext_remove_node( > > ASSERT(node == ifp->if_u1.if_root); > > ifp->if_u1.if_root = node->ptrs[0]; > > ifp->if_height--; > > - kmem_free(node); > > + kfree(node); > > } > > } > > > > @@ -854,7 +854,7 @@ xfs_iext_free_last_leaf( > > struct xfs_ifork *ifp) > > { > > ifp->if_height--; > > - kmem_free(ifp->if_u1.if_root); > > + kfree(ifp->if_u1.if_root); > > ifp->if_u1.if_root = NULL; > > } > > > > @@ -1035,7 +1035,7 @@ xfs_iext_destroy_node( > > } > > } > > > > - kmem_free(node); > > + kfree(node); > > } > > > > void > > diff --git a/fs/xfs/libxfs/xfs_inode_fork.c b/fs/xfs/libxfs/xfs_inode_fork.c > > index ad2b9c313fd2..296677958212 100644 > > --- a/fs/xfs/libxfs/xfs_inode_fork.c > > +++ b/fs/xfs/libxfs/xfs_inode_fork.c > > @@ -445,7 +445,7 @@ xfs_iroot_realloc( > > (int)new_size); > > memcpy(np, op, new_max * (uint)sizeof(xfs_fsblock_t)); > > } > > - kmem_free(ifp->if_broot); > > + kfree(ifp->if_broot); > > ifp->if_broot = new_broot; > > ifp->if_broot_bytes = (int)new_size; > > if (ifp->if_broot) > > @@ -486,7 +486,7 @@ xfs_idata_realloc( > > return; > > > > if (new_size == 0) { > > - kmem_free(ifp->if_u1.if_data); > > + kfree(ifp->if_u1.if_data); > > ifp->if_u1.if_data = NULL; > > ifp->if_bytes = 0; > > return; > > @@ -511,7 +511,7 @@ xfs_idestroy_fork( > > > > ifp = XFS_IFORK_PTR(ip, whichfork); > > if (ifp->if_broot != NULL) { > > - kmem_free(ifp->if_broot); > > + kfree(ifp->if_broot); > > ifp->if_broot = NULL; > > } > > > > @@ -523,7 +523,7 @@ xfs_idestroy_fork( > > */ > > if (XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_LOCAL) { > > if (ifp->if_u1.if_data != NULL) { > > - kmem_free(ifp->if_u1.if_data); > > + kfree(ifp->if_u1.if_data); > > ifp->if_u1.if_data = NULL; > > } > > } else if ((ifp->if_flags & XFS_IFEXTENTS) && ifp->if_height) { > > diff --git a/fs/xfs/libxfs/xfs_refcount.c b/fs/xfs/libxfs/xfs_refcount.c > > index 78236bd6c64f..07894c53e753 100644 > > --- a/fs/xfs/libxfs/xfs_refcount.c > > +++ b/fs/xfs/libxfs/xfs_refcount.c > > @@ -1684,7 +1684,7 @@ xfs_refcount_recover_cow_leftovers( > > goto out_free; > > > > list_del(&rr->rr_list); > > - kmem_free(rr); > > + kfree(rr); > > } > > > > return error; > > @@ -1694,7 +1694,7 @@ xfs_refcount_recover_cow_leftovers( > > /* Free the leftover list */ > > list_for_each_entry_safe(rr, n, &debris, rr_list) { > > list_del(&rr->rr_list); > > - kmem_free(rr); > > + kfree(rr); > > } > > return error; > > } > > diff --git a/fs/xfs/scrub/agheader.c b/fs/xfs/scrub/agheader.c > > index ba0f747c82e8..6f7126f6d25c 100644 > > --- a/fs/xfs/scrub/agheader.c > > +++ b/fs/xfs/scrub/agheader.c > > @@ -753,7 +753,7 @@ xchk_agfl( > > } > > > > out_free: > > - kmem_free(sai.entries); > > + kfree(sai.entries); > > out: > > return error; > > } > > diff --git a/fs/xfs/scrub/agheader_repair.c b/fs/xfs/scrub/agheader_repair.c > > index 7a1a38b636a9..15fabf020d1b 100644 > > --- a/fs/xfs/scrub/agheader_repair.c > > +++ b/fs/xfs/scrub/agheader_repair.c > > @@ -624,7 +624,7 @@ xrep_agfl_init_header( > > if (br->len) > > break; > > list_del(&br->list); > > - kmem_free(br); > > + kfree(br); > > } > > > > /* Write new AGFL to disk. */ > > diff --git a/fs/xfs/scrub/attr.c b/fs/xfs/scrub/attr.c > > index d9f0dd444b80..7a2a240febc1 100644 > > --- a/fs/xfs/scrub/attr.c > > +++ b/fs/xfs/scrub/attr.c > > @@ -49,7 +49,7 @@ xchk_setup_xattr_buf( > > if (ab) { > > if (sz <= ab->sz) > > return 0; > > - kmem_free(ab); > > + kvfree(ab); > > sc->buf = NULL; > > } > > > > diff --git a/fs/xfs/scrub/bitmap.c b/fs/xfs/scrub/bitmap.c > > index 18a684e18a69..cabde1c4c235 100644 > > --- a/fs/xfs/scrub/bitmap.c > > +++ b/fs/xfs/scrub/bitmap.c > > @@ -47,7 +47,7 @@ xfs_bitmap_destroy( > > > > for_each_xfs_bitmap_extent(bmr, n, bitmap) { > > list_del(&bmr->list); > > - kmem_free(bmr); > > + kfree(bmr); > > } > > } > > > > @@ -174,7 +174,7 @@ xfs_bitmap_disunion( > > /* Total overlap, just delete ex. */ > > lp = lp->next; > > list_del(&br->list); > > - kmem_free(br); > > + kfree(br); > > break; > > case 0: > > /* > > diff --git a/fs/xfs/scrub/btree.c b/fs/xfs/scrub/btree.c > > index f52a7b8256f9..bed40b605076 100644 > > --- a/fs/xfs/scrub/btree.c > > +++ b/fs/xfs/scrub/btree.c > > @@ -698,7 +698,7 @@ xchk_btree( > > error = xchk_btree_check_block_owner(&bs, > > co->level, co->daddr); > > list_del(&co->list); > > - kmem_free(co); > > + kfree(co); > > } > > > > return error; > > diff --git a/fs/xfs/scrub/refcount.c b/fs/xfs/scrub/refcount.c > > index 0cab11a5d390..985724e81ebf 100644 > > --- a/fs/xfs/scrub/refcount.c > > +++ b/fs/xfs/scrub/refcount.c > > @@ -215,7 +215,7 @@ xchk_refcountbt_process_rmap_fragments( > > continue; > > } > > list_del(&frag->list); > > - kmem_free(frag); > > + kfree(frag); > > nr++; > > } > > > > @@ -257,11 +257,11 @@ xchk_refcountbt_process_rmap_fragments( > > /* Delete fragments and work list. */ > > list_for_each_entry_safe(frag, n, &worklist, list) { > > list_del(&frag->list); > > - kmem_free(frag); > > + kfree(frag); > > } > > list_for_each_entry_safe(frag, n, &refchk->fragments, list) { > > list_del(&frag->list); > > - kmem_free(frag); > > + kfree(frag); > > } > > } > > > > @@ -308,7 +308,7 @@ xchk_refcountbt_xref_rmap( > > out_free: > > list_for_each_entry_safe(frag, n, &refchk.fragments, list) { > > list_del(&frag->list); > > - kmem_free(frag); > > + kfree(frag); > > } > > } > > > > diff --git a/fs/xfs/scrub/scrub.c b/fs/xfs/scrub/scrub.c > > index f1775bb19313..7c63cdf13946 100644 > > --- a/fs/xfs/scrub/scrub.c > > +++ b/fs/xfs/scrub/scrub.c > > @@ -175,7 +175,7 @@ xchk_teardown( > > sc->flags &= ~XCHK_HAS_QUOTAOFFLOCK; > > } > > if (sc->buf) { > > - kmem_free(sc->buf); > > + kvfree(sc->buf); > > sc->buf = NULL; > > } > > return error; > > diff --git a/fs/xfs/xfs_acl.c b/fs/xfs/xfs_acl.c > > index 91693fce34a8..81b2c989242e 100644 > > --- a/fs/xfs/xfs_acl.c > > +++ b/fs/xfs/xfs_acl.c > > @@ -157,7 +157,7 @@ xfs_get_acl(struct inode *inode, int type) > > } else { > > acl = xfs_acl_from_disk(ip->i_mount, xfs_acl, len, > > XFS_ACL_MAX_ENTRIES(ip->i_mount)); > > - kmem_free(xfs_acl); > > + kvfree(xfs_acl); > > } > > return acl; > > } > > @@ -199,7 +199,7 @@ __xfs_set_acl(struct inode *inode, struct posix_acl *acl, int type) > > error = xfs_attr_set(ip, ea_name, (unsigned char *)xfs_acl, > > len, ATTR_ROOT); > > > > - kmem_free(xfs_acl); > > + kvfree(xfs_acl); > > } else { > > /* > > * A NULL ACL argument means we want to remove the ACL. > > diff --git a/fs/xfs/xfs_attr_inactive.c b/fs/xfs/xfs_attr_inactive.c > > index a78c501f6fb1..8351b3b611ac 100644 > > --- a/fs/xfs/xfs_attr_inactive.c > > +++ b/fs/xfs/xfs_attr_inactive.c > > @@ -181,7 +181,7 @@ xfs_attr3_leaf_inactive( > > error = tmp; /* save only the 1st errno */ > > } > > > > - kmem_free(list); > > + kfree(list); > > return error; > > } > > > > diff --git a/fs/xfs/xfs_attr_list.c b/fs/xfs/xfs_attr_list.c > > index 0ec6606149a2..e1d1c4eb9e69 100644 > > --- a/fs/xfs/xfs_attr_list.c > > +++ b/fs/xfs/xfs_attr_list.c > > @@ -131,7 +131,7 @@ xfs_attr_shortform_list( > > XFS_ERRLEVEL_LOW, > > context->dp->i_mount, sfe, > > sizeof(*sfe)); > > - kmem_free(sbuf); > > + kfree(sbuf); > > return -EFSCORRUPTED; > > } > > > > @@ -195,7 +195,7 @@ xfs_attr_shortform_list( > > cursor->offset++; > > } > > out: > > - kmem_free(sbuf); > > + kfree(sbuf); > > return error; > > } > > > > diff --git a/fs/xfs/xfs_bmap_item.c b/fs/xfs/xfs_bmap_item.c > > index ee6f4229cebc..a89e10519f05 100644 > > --- a/fs/xfs/xfs_bmap_item.c > > +++ b/fs/xfs/xfs_bmap_item.c > > @@ -391,7 +391,7 @@ xfs_bmap_update_finish_item( > > bmap->bi_bmap.br_blockcount = count; > > return -EAGAIN; > > } > > - kmem_free(bmap); > > + kfree(bmap); > > return error; > > } > > > > @@ -411,7 +411,7 @@ xfs_bmap_update_cancel_item( > > struct xfs_bmap_intent *bmap; > > > > bmap = container_of(item, struct xfs_bmap_intent, bi_list); > > - kmem_free(bmap); > > + kfree(bmap); > > } > > > > const struct xfs_defer_op_type xfs_bmap_update_defer_type = { > > diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c > > index a0229c368e78..80ef2fc8bb77 100644 > > --- a/fs/xfs/xfs_buf.c > > +++ b/fs/xfs/xfs_buf.c > > @@ -193,7 +193,7 @@ xfs_buf_free_maps( > > struct xfs_buf *bp) > > { > > if (bp->b_maps != &bp->__b_map) { > > - kmem_free(bp->b_maps); > > + kfree(bp->b_maps); > > bp->b_maps = NULL; > > } > > } > > @@ -292,7 +292,7 @@ _xfs_buf_free_pages( > > xfs_buf_t *bp) > > { > > if (bp->b_pages != bp->b_page_array) { > > - kmem_free(bp->b_pages); > > + kfree(bp->b_pages); > > bp->b_pages = NULL; > > } > > } > > @@ -325,7 +325,7 @@ xfs_buf_free( > > __free_page(page); > > } > > } else if (bp->b_flags & _XBF_KMEM) > > - kmem_free(bp->b_addr); > > + kvfree(bp->b_addr); > > _xfs_buf_free_pages(bp); > > xfs_buf_free_maps(bp); > > kmem_cache_free(xfs_buf_zone, bp); > > @@ -373,7 +373,7 @@ xfs_buf_allocate_memory( > > if (((unsigned long)(bp->b_addr + size - 1) & PAGE_MASK) != > > ((unsigned long)bp->b_addr & PAGE_MASK)) { > > /* b_addr spans two pages - use alloc_page instead */ > > - kmem_free(bp->b_addr); > > + kvfree(bp->b_addr); > > bp->b_addr = NULL; > > goto use_alloc_page; > > } > > @@ -1702,7 +1702,7 @@ xfs_free_buftarg( > > > > xfs_blkdev_issue_flush(btp); > > > > - kmem_free(btp); > > + kfree(btp); > > } > > > > int > > @@ -1778,7 +1778,7 @@ xfs_alloc_buftarg( > > error_lru: > > list_lru_destroy(&btp->bt_lru); > > error_free: > > - kmem_free(btp); > > + kfree(btp); > > return NULL; > > } > > > > diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c > > index 3458a1264a3f..8dc3330f1797 100644 > > --- a/fs/xfs/xfs_buf_item.c > > +++ b/fs/xfs/xfs_buf_item.c > > @@ -713,7 +713,7 @@ xfs_buf_item_free_format( > > struct xfs_buf_log_item *bip) > > { > > if (bip->bli_formats != &bip->__bli_format) { > > - kmem_free(bip->bli_formats); > > + kfree(bip->bli_formats); > > bip->bli_formats = NULL; > > } > > } > > @@ -938,7 +938,7 @@ xfs_buf_item_free( > > struct xfs_buf_log_item *bip) > > { > > xfs_buf_item_free_format(bip); > > - kmem_free(bip->bli_item.li_lv_shadow); > > + kfree(bip->bli_item.li_lv_shadow); > > kmem_cache_free(xfs_buf_item_zone, bip); > > } > > > > diff --git a/fs/xfs/xfs_dquot.c b/fs/xfs/xfs_dquot.c > > index 153815bf18fc..a073281c3bd7 100644 > > --- a/fs/xfs/xfs_dquot.c > > +++ b/fs/xfs/xfs_dquot.c > > @@ -52,7 +52,7 @@ xfs_qm_dqdestroy( > > { > > ASSERT(list_empty(&dqp->q_lru)); > > > > - kmem_free(dqp->q_logitem.qli_item.li_lv_shadow); > > + kfree(dqp->q_logitem.qli_item.li_lv_shadow); > > mutex_destroy(&dqp->q_qlock); > > > > XFS_STATS_DEC(dqp->q_mount, xs_qm_dquot); > > diff --git a/fs/xfs/xfs_dquot_item.c b/fs/xfs/xfs_dquot_item.c > > index d60647d7197b..1b5e68ccef60 100644 > > --- a/fs/xfs/xfs_dquot_item.c > > +++ b/fs/xfs/xfs_dquot_item.c > > @@ -316,10 +316,10 @@ xfs_qm_qoffend_logitem_committed( > > spin_lock(&ailp->ail_lock); > > xfs_trans_ail_delete(ailp, &qfs->qql_item, SHUTDOWN_LOG_IO_ERROR); > > > > - kmem_free(qfs->qql_item.li_lv_shadow); > > - kmem_free(lip->li_lv_shadow); > > - kmem_free(qfs); > > - kmem_free(qfe); > > + kfree(qfs->qql_item.li_lv_shadow); > > + kfree(lip->li_lv_shadow); > > + kfree(qfs); > > + kfree(qfe); > > return (xfs_lsn_t)-1; > > } > > > > diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c > > index 51dd1f43d12f..4c0883380d7c 100644 > > --- a/fs/xfs/xfs_error.c > > +++ b/fs/xfs/xfs_error.c > > @@ -226,7 +226,7 @@ xfs_errortag_del( > > struct xfs_mount *mp) > > { > > xfs_sysfs_del(&mp->m_errortag_kobj); > > - kmem_free(mp->m_errortag); > > + kfree(mp->m_errortag); > > } > > > > bool > > diff --git a/fs/xfs/xfs_extent_busy.c b/fs/xfs/xfs_extent_busy.c > > index 3991e59cfd18..9f0b99c7b34a 100644 > > --- a/fs/xfs/xfs_extent_busy.c > > +++ b/fs/xfs/xfs_extent_busy.c > > @@ -532,7 +532,7 @@ xfs_extent_busy_clear_one( > > } > > > > list_del_init(&busyp->list); > > - kmem_free(busyp); > > + kfree(busyp); > > } > > > > static void > > diff --git a/fs/xfs/xfs_extfree_item.c b/fs/xfs/xfs_extfree_item.c > > index 6ea847f6e298..29b3a90aee91 100644 > > --- a/fs/xfs/xfs_extfree_item.c > > +++ b/fs/xfs/xfs_extfree_item.c > > @@ -35,9 +35,9 @@ void > > xfs_efi_item_free( > > struct xfs_efi_log_item *efip) > > { > > - kmem_free(efip->efi_item.li_lv_shadow); > > + kfree(efip->efi_item.li_lv_shadow); > > if (efip->efi_format.efi_nextents > XFS_EFI_MAX_FAST_EXTENTS) > > - kmem_free(efip); > > + kfree(efip); > > else > > kmem_cache_free(xfs_efi_zone, efip); > > } > > @@ -240,9 +240,9 @@ static inline struct xfs_efd_log_item *EFD_ITEM(struct xfs_log_item *lip) > > STATIC void > > xfs_efd_item_free(struct xfs_efd_log_item *efdp) > > { > > - kmem_free(efdp->efd_item.li_lv_shadow); > > + kfree(efdp->efd_item.li_lv_shadow); > > if (efdp->efd_format.efd_nextents > XFS_EFD_MAX_FAST_EXTENTS) > > - kmem_free(efdp); > > + kfree(efdp); > > else > > kmem_cache_free(xfs_efd_zone, efdp); > > } > > @@ -488,7 +488,7 @@ xfs_extent_free_finish_item( > > free->xefi_startblock, > > free->xefi_blockcount, > > &free->xefi_oinfo, free->xefi_skip_discard); > > - kmem_free(free); > > + kfree(free); > > return error; > > } > > > > @@ -508,7 +508,7 @@ xfs_extent_free_cancel_item( > > struct xfs_extent_free_item *free; > > > > free = container_of(item, struct xfs_extent_free_item, xefi_list); > > - kmem_free(free); > > + kfree(free); > > } > > > > const struct xfs_defer_op_type xfs_extent_free_defer_type = { > > @@ -572,7 +572,7 @@ xfs_agfl_free_finish_item( > > extp->ext_len = free->xefi_blockcount; > > efdp->efd_next_extent++; > > > > - kmem_free(free); > > + kfree(free); > > return error; > > } > > > > diff --git a/fs/xfs/xfs_filestream.c b/fs/xfs/xfs_filestream.c > > index 2ae356775f63..9778e4e69e07 100644 > > --- a/fs/xfs/xfs_filestream.c > > +++ b/fs/xfs/xfs_filestream.c > > @@ -118,7 +118,7 @@ xfs_fstrm_free_func( > > xfs_filestream_put_ag(mp, item->ag); > > trace_xfs_filestream_free(mp, mru->key, item->ag); > > > > - kmem_free(item); > > + kfree(item); > > } > > > > /* > > @@ -263,7 +263,7 @@ xfs_filestream_pick_ag( > > return 0; > > > > out_free_item: > > - kmem_free(item); > > + kfree(item); > > out_put_ag: > > xfs_filestream_put_ag(mp, *agp); > > return err; > > diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c > > index a92d4521748d..e1121ed7cbb5 100644 > > --- a/fs/xfs/xfs_inode.c > > +++ b/fs/xfs/xfs_inode.c > > @@ -708,7 +708,7 @@ xfs_lookup( > > > > out_free_name: > > if (ci_name) > > - kmem_free(ci_name->name); > > + kfree(ci_name->name); > > out_unlock: > > *ipp = NULL; > > return error; > > @@ -2001,7 +2001,7 @@ xfs_iunlink_insert_backref( > > */ > > if (error) { > > WARN(error != -ENOMEM, "iunlink cache insert error %d", error); > > - kmem_free(iu); > > + kfree(iu); > > } > > /* > > * Absorb any runtime errors that aren't a result of corruption because > > @@ -2066,7 +2066,7 @@ xfs_iunlink_change_backref( > > > > /* If there is no new next entry just free our item and return. */ > > if (next_unlinked == NULLAGINO) { > > - kmem_free(iu); > > + kfree(iu); > > return 0; > > } > > > > @@ -2094,7 +2094,7 @@ xfs_iunlink_free_item( > > bool *freed_anything = arg; > > > > *freed_anything = true; > > - kmem_free(iu); > > + kfree(iu); > > } > > > > void > > @@ -3598,7 +3598,7 @@ xfs_iflush_cluster( > > > > out_free: > > rcu_read_unlock(); > > - kmem_free(cilist); > > + kfree(cilist); > > out_put: > > xfs_perag_put(pag); > > return 0; > > @@ -3629,7 +3629,7 @@ xfs_iflush_cluster( > > > > /* abort the corrupt inode, as it was not attached to the buffer */ > > xfs_iflush_abort(cip, false); > > - kmem_free(cilist); > > + kfree(cilist); > > xfs_perag_put(pag); > > return -EFSCORRUPTED; > > } > > diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c > > index 3a62976291a1..c8461a5515f1 100644 > > --- a/fs/xfs/xfs_inode_item.c > > +++ b/fs/xfs/xfs_inode_item.c > > @@ -666,7 +666,7 @@ void > > xfs_inode_item_destroy( > > xfs_inode_t *ip) > > { > > - kmem_free(ip->i_itemp->ili_item.li_lv_shadow); > > + kfree(ip->i_itemp->ili_item.li_lv_shadow); > > kmem_cache_free(xfs_ili_zone, ip->i_itemp); > > } > > > > diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c > > index 364961c23cd0..f86dde7c9ea6 100644 > > --- a/fs/xfs/xfs_ioctl.c > > +++ b/fs/xfs/xfs_ioctl.c > > @@ -417,7 +417,7 @@ xfs_attrlist_by_handle( > > error = -EFAULT; > > > > out_kfree: > > - kmem_free(kbuf); > > + kvfree(kbuf); > > out_dput: > > dput(dentry); > > return error; > > @@ -448,7 +448,7 @@ xfs_attrmulti_attr_get( > > error = -EFAULT; > > > > out_kfree: > > - kmem_free(kbuf); > > + kvfree(kbuf); > > return error; > > } > > > > @@ -1777,7 +1777,7 @@ xfs_ioc_getbmap( > > > > error = 0; > > out_free_buf: > > - kmem_free(buf); > > + kvfree(buf); > > return error; > > } > > > > diff --git a/fs/xfs/xfs_ioctl32.c b/fs/xfs/xfs_ioctl32.c > > index 3c0d518e1039..de472fcd2f67 100644 > > --- a/fs/xfs/xfs_ioctl32.c > > +++ b/fs/xfs/xfs_ioctl32.c > > @@ -400,7 +400,7 @@ xfs_compat_attrlist_by_handle( > > error = -EFAULT; > > > > out_kfree: > > - kmem_free(kbuf); > > + kvfree(kbuf); > > out_dput: > > dput(dentry); > > return error; > > diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c > > index 57e6e44123a9..e532db27d0dc 100644 > > --- a/fs/xfs/xfs_iops.c > > +++ b/fs/xfs/xfs_iops.c > > @@ -303,7 +303,7 @@ xfs_vn_ci_lookup( > > dname.name = ci_name.name; > > dname.len = ci_name.len; > > dentry = d_add_ci(dentry, VFS_I(ip), &dname); > > - kmem_free(ci_name.name); > > + kfree(ci_name.name); > > return dentry; > > } > > > > diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c > > index 884950adbd16..36bf47f11117 100644 > > --- a/fs/xfs/xfs_itable.c > > +++ b/fs/xfs/xfs_itable.c > > @@ -175,7 +175,7 @@ xfs_bulkstat_one( > > > > error = xfs_bulkstat_one_int(breq->mp, NULL, breq->startino, &bc); > > > > - kmem_free(bc.buf); > > + kfree(bc.buf); > > > > /* > > * If we reported one inode to userspace then we abort because we hit > > @@ -250,7 +250,7 @@ xfs_bulkstat( > > error = xfs_iwalk(breq->mp, NULL, breq->startino, breq->flags, > > xfs_bulkstat_iwalk, breq->icount, &bc); > > > > - kmem_free(bc.buf); > > + kfree(bc.buf); > > > > /* > > * We found some inodes, so clear the error status and return them. > > diff --git a/fs/xfs/xfs_iwalk.c b/fs/xfs/xfs_iwalk.c > > index aa375cf53021..67e98f9023d2 100644 > > --- a/fs/xfs/xfs_iwalk.c > > +++ b/fs/xfs/xfs_iwalk.c > > @@ -164,7 +164,7 @@ STATIC void > > xfs_iwalk_free( > > struct xfs_iwalk_ag *iwag) > > { > > - kmem_free(iwag->recs); > > + kfree(iwag->recs); > > iwag->recs = NULL; > > } > > > > @@ -578,7 +578,7 @@ xfs_iwalk_ag_work( > > error = xfs_iwalk_ag(iwag); > > xfs_iwalk_free(iwag); > > out: > > - kmem_free(iwag); > > + kfree(iwag); > > return error; > > } > > > > diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c > > index 6a147c63a8a6..e8349b0d7c51 100644 > > --- a/fs/xfs/xfs_log.c > > +++ b/fs/xfs/xfs_log.c > > @@ -1540,11 +1540,11 @@ xlog_alloc_log( > > out_free_iclog: > > for (iclog = log->l_iclog; iclog; iclog = prev_iclog) { > > prev_iclog = iclog->ic_next; > > - kmem_free(iclog->ic_data); > > - kmem_free(iclog); > > + kvfree(iclog->ic_data); > > + kfree(iclog); > > } > > out_free_log: > > - kmem_free(log); > > + kfree(log); > > out: > > return ERR_PTR(error); > > } /* xlog_alloc_log */ > > @@ -2001,14 +2001,14 @@ xlog_dealloc_log( > > iclog = log->l_iclog; > > for (i = 0; i < log->l_iclog_bufs; i++) { > > next_iclog = iclog->ic_next; > > - kmem_free(iclog->ic_data); > > - kmem_free(iclog); > > + kvfree(iclog->ic_data); > > + kfree(iclog); > > iclog = next_iclog; > > } > > > > log->l_mp->m_log = NULL; > > destroy_workqueue(log->l_ioend_workqueue); > > - kmem_free(log); > > + kfree(log); > > } /* xlog_dealloc_log */ > > > > /* > > diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c > > index 48435cf2aa16..23d70836a2b7 100644 > > --- a/fs/xfs/xfs_log_cil.c > > +++ b/fs/xfs/xfs_log_cil.c > > @@ -184,7 +184,7 @@ xlog_cil_alloc_shadow_bufs( > > * the buffer, only the log vector header and the iovec > > * storage. > > */ > > - kmem_free(lip->li_lv_shadow); > > + kfree(lip->li_lv_shadow); > > > > lv = kmem_alloc_large(buf_size, KM_NOFS); > > memset(lv, 0, xlog_cil_iovec_space(niovecs)); > > @@ -492,7 +492,7 @@ xlog_cil_free_logvec( > > > > for (lv = log_vector; lv; ) { > > struct xfs_log_vec *next = lv->lv_next; > > - kmem_free(lv); > > + kvfree(lv); > > lv = next; > > } > > } > > @@ -506,7 +506,7 @@ xlog_discard_endio_work( > > struct xfs_mount *mp = ctx->cil->xc_log->l_mp; > > > > xfs_extent_busy_clear(mp, &ctx->busy_extents, false); > > - kmem_free(ctx); > > + kfree(ctx); > > } > > > > /* > > @@ -608,7 +608,7 @@ xlog_cil_committed( > > if (!list_empty(&ctx->busy_extents)) > > xlog_discard_busy_extents(mp, ctx); > > else > > - kmem_free(ctx); > > + kfree(ctx); > > } > > > > void > > @@ -872,7 +872,7 @@ xlog_cil_push( > > out_skip: > > up_write(&cil->xc_ctx_lock); > > xfs_log_ticket_put(new_ctx->ticket); > > - kmem_free(new_ctx); > > + kfree(new_ctx); > > return 0; > > > > out_abort_free_ticket: > > @@ -1185,7 +1185,7 @@ xlog_cil_init( > > > > ctx = kmem_zalloc(sizeof(*ctx), KM_MAYFAIL); > > if (!ctx) { > > - kmem_free(cil); > > + kfree(cil); > > return -ENOMEM; > > } > > > > @@ -1216,10 +1216,10 @@ xlog_cil_destroy( > > if (log->l_cilp->xc_ctx) { > > if (log->l_cilp->xc_ctx->ticket) > > xfs_log_ticket_put(log->l_cilp->xc_ctx->ticket); > > - kmem_free(log->l_cilp->xc_ctx); > > + kfree(log->l_cilp->xc_ctx); > > } > > > > ASSERT(list_empty(&log->l_cilp->xc_cil)); > > - kmem_free(log->l_cilp); > > + kfree(log->l_cilp); > > } > > > > diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c > > index 02f2147952b3..4167e1326f62 100644 > > --- a/fs/xfs/xfs_log_recover.c > > +++ b/fs/xfs/xfs_log_recover.c > > @@ -418,7 +418,7 @@ xlog_find_verify_cycle( > > *new_blk = -1; > > > > out: > > - kmem_free(buffer); > > + kvfree(buffer); > > return error; > > } > > > > @@ -529,7 +529,7 @@ xlog_find_verify_log_record( > > *last_blk = i; > > > > out: > > - kmem_free(buffer); > > + kvfree(buffer); > > return error; > > } > > > > @@ -783,7 +783,7 @@ xlog_find_head( > > goto out_free_buffer; > > } > > > > - kmem_free(buffer); > > + kvfree(buffer); > > if (head_blk == log_bbnum) > > *return_head_blk = 0; > > else > > @@ -797,7 +797,7 @@ xlog_find_head( > > return 0; > > > > out_free_buffer: > > - kmem_free(buffer); > > + kvfree(buffer); > > if (error) > > xfs_warn(log->l_mp, "failed to find log head"); > > return error; > > @@ -1051,7 +1051,7 @@ xlog_verify_tail( > > "Tail block (0x%llx) overwrite detected. Updated to 0x%llx", > > orig_tail, *tail_blk); > > out: > > - kmem_free(buffer); > > + kvfree(buffer); > > return error; > > } > > > > @@ -1098,7 +1098,7 @@ xlog_verify_head( > > error = xlog_rseek_logrec_hdr(log, *head_blk, *tail_blk, > > XLOG_MAX_ICLOGS, tmp_buffer, > > &tmp_rhead_blk, &tmp_rhead, &tmp_wrapped); > > - kmem_free(tmp_buffer); > > + kvfree(tmp_buffer); > > if (error < 0) > > return error; > > > > @@ -1431,7 +1431,7 @@ xlog_find_tail( > > error = xlog_clear_stale_blocks(log, tail_lsn); > > > > done: > > - kmem_free(buffer); > > + kvfree(buffer); > > > > if (error) > > xfs_warn(log->l_mp, "failed to locate log tail"); > > @@ -1479,7 +1479,7 @@ xlog_find_zeroed( > > first_cycle = xlog_get_cycle(offset); > > if (first_cycle == 0) { /* completely zeroed log */ > > *blk_no = 0; > > - kmem_free(buffer); > > + kvfree(buffer); > > return 1; > > } > > > > @@ -1490,7 +1490,7 @@ xlog_find_zeroed( > > > > last_cycle = xlog_get_cycle(offset); > > if (last_cycle != 0) { /* log completely written to */ > > - kmem_free(buffer); > > + kvfree(buffer); > > return 0; > > } > > > > @@ -1537,7 +1537,7 @@ xlog_find_zeroed( > > > > *blk_no = last_blk; > > out_free_buffer: > > - kmem_free(buffer); > > + kvfree(buffer); > > if (error) > > return error; > > return 1; > > @@ -1649,7 +1649,7 @@ xlog_write_log_records( > > } > > > > out_free_buffer: > > - kmem_free(buffer); > > + kvfree(buffer); > > return error; > > } > > > > @@ -2039,7 +2039,7 @@ xlog_check_buffer_cancelled( > > if (flags & XFS_BLF_CANCEL) { > > if (--bcp->bc_refcount == 0) { > > list_del(&bcp->bc_list); > > - kmem_free(bcp); > > + kfree(bcp); > > } > > } > > return 1; > > @@ -3188,7 +3188,7 @@ xlog_recover_inode_pass2( > > xfs_buf_relse(bp); > > error: > > if (need_free) > > - kmem_free(in_f); > > + kfree(in_f); > > return error; > > } > > > > @@ -4292,7 +4292,7 @@ xlog_recover_add_to_trans( > > "bad number of regions (%d) in inode log format", > > in_f->ilf_size); > > ASSERT(0); > > - kmem_free(ptr); > > + kfree(ptr); > > return -EFSCORRUPTED; > > } > > > > @@ -4307,7 +4307,7 @@ xlog_recover_add_to_trans( > > "log item region count (%d) overflowed size (%d)", > > item->ri_cnt, item->ri_total); > > ASSERT(0); > > - kmem_free(ptr); > > + kfree(ptr); > > return -EFSCORRUPTED; > > } > > > > @@ -4337,13 +4337,13 @@ xlog_recover_free_trans( > > /* Free the regions in the item. */ > > list_del(&item->ri_list); > > for (i = 0; i < item->ri_cnt; i++) > > - kmem_free(item->ri_buf[i].i_addr); > > + kfree(item->ri_buf[i].i_addr); > > /* Free the item itself */ > > - kmem_free(item->ri_buf); > > - kmem_free(item); > > + kfree(item->ri_buf); > > + kfree(item); > > } > > /* Free the transaction recover structure */ > > - kmem_free(trans); > > + kfree(trans); > > } > > > > /* > > @@ -5327,7 +5327,7 @@ xlog_do_recovery_pass( > > hblks = h_size / XLOG_HEADER_CYCLE_SIZE; > > if (h_size % XLOG_HEADER_CYCLE_SIZE) > > hblks++; > > - kmem_free(hbp); > > + kvfree(hbp); > > hbp = xlog_alloc_buffer(log, hblks); > > } else { > > hblks = 1; > > @@ -5343,7 +5343,7 @@ xlog_do_recovery_pass( > > return -ENOMEM; > > dbp = xlog_alloc_buffer(log, BTOBB(h_size)); > > if (!dbp) { > > - kmem_free(hbp); > > + kvfree(hbp); > > return -ENOMEM; > > } > > > > @@ -5504,9 +5504,9 @@ xlog_do_recovery_pass( > > } > > > > bread_err2: > > - kmem_free(dbp); > > + kvfree(dbp); > > bread_err1: > > - kmem_free(hbp); > > + kvfree(hbp); > > > > /* > > * Submit buffers that have been added from the last record processed, > > @@ -5570,7 +5570,7 @@ xlog_do_log_recovery( > > error = xlog_do_recovery_pass(log, head_blk, tail_blk, > > XLOG_RECOVER_PASS1, NULL); > > if (error != 0) { > > - kmem_free(log->l_buf_cancel_table); > > + kfree(log->l_buf_cancel_table); > > log->l_buf_cancel_table = NULL; > > return error; > > } > > @@ -5589,7 +5589,7 @@ xlog_do_log_recovery( > > } > > #endif /* DEBUG */ > > > > - kmem_free(log->l_buf_cancel_table); > > + kfree(log->l_buf_cancel_table); > > log->l_buf_cancel_table = NULL; > > > > return error; > > diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c > > index 5ea95247a37f..53ddb058b11a 100644 > > --- a/fs/xfs/xfs_mount.c > > +++ b/fs/xfs/xfs_mount.c > > @@ -42,7 +42,7 @@ xfs_uuid_table_free(void) > > { > > if (xfs_uuid_table_size == 0) > > return; > > - kmem_free(xfs_uuid_table); > > + kfree(xfs_uuid_table); > > xfs_uuid_table = NULL; > > xfs_uuid_table_size = 0; > > } > > @@ -127,7 +127,7 @@ __xfs_free_perag( > > struct xfs_perag *pag = container_of(head, struct xfs_perag, rcu_head); > > > > ASSERT(atomic_read(&pag->pag_ref) == 0); > > - kmem_free(pag); > > + kfree(pag); > > } > > > > /* > > @@ -243,7 +243,7 @@ xfs_initialize_perag( > > xfs_buf_hash_destroy(pag); > > out_free_pag: > > mutex_destroy(&pag->pag_ici_reclaim_lock); > > - kmem_free(pag); > > + kfree(pag); > > out_unwind_new_pags: > > /* unwind any prior newly initialized pags */ > > for (index = first_initialised; index < agcount; index++) { > > @@ -253,7 +253,7 @@ xfs_initialize_perag( > > xfs_buf_hash_destroy(pag); > > xfs_iunlink_destroy(pag); > > mutex_destroy(&pag->pag_ici_reclaim_lock); > > - kmem_free(pag); > > + kfree(pag); > > } > > return error; > > } > > diff --git a/fs/xfs/xfs_mru_cache.c b/fs/xfs/xfs_mru_cache.c > > index a06661dac5be..6ef0a71d7681 100644 > > --- a/fs/xfs/xfs_mru_cache.c > > +++ b/fs/xfs/xfs_mru_cache.c > > @@ -364,9 +364,9 @@ xfs_mru_cache_create( > > > > exit: > > if (err && mru && mru->lists) > > - kmem_free(mru->lists); > > + kfree(mru->lists); > > if (err && mru) > > - kmem_free(mru); > > + kfree(mru); > > > > return err; > > } > > @@ -406,8 +406,8 @@ xfs_mru_cache_destroy( > > > > xfs_mru_cache_flush(mru); > > > > - kmem_free(mru->lists); > > - kmem_free(mru); > > + kfree(mru->lists); > > + kfree(mru); > > } > > > > /* > > diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c > > index 66ea8e4fca86..06c92dc61a03 100644 > > --- a/fs/xfs/xfs_qm.c > > +++ b/fs/xfs/xfs_qm.c > > @@ -698,7 +698,7 @@ xfs_qm_init_quotainfo( > > out_free_lru: > > list_lru_destroy(&qinf->qi_lru); > > out_free_qinf: > > - kmem_free(qinf); > > + kfree(qinf); > > mp->m_quotainfo = NULL; > > return error; > > } > > @@ -722,7 +722,7 @@ xfs_qm_destroy_quotainfo( > > xfs_qm_destroy_quotainos(qi); > > mutex_destroy(&qi->qi_tree_lock); > > mutex_destroy(&qi->qi_quotaofflock); > > - kmem_free(qi); > > + kfree(qi); > > mp->m_quotainfo = NULL; > > } > > > > @@ -1049,7 +1049,7 @@ xfs_qm_reset_dqcounts_buf( > > } while (nmaps > 0); > > > > out: > > - kmem_free(map); > > + kfree(map); > > return error; > > } > > > > diff --git a/fs/xfs/xfs_refcount_item.c b/fs/xfs/xfs_refcount_item.c > > index 8eeed73928cd..0ac598f55339 100644 > > --- a/fs/xfs/xfs_refcount_item.c > > +++ b/fs/xfs/xfs_refcount_item.c > > @@ -32,7 +32,7 @@ xfs_cui_item_free( > > struct xfs_cui_log_item *cuip) > > { > > if (cuip->cui_format.cui_nextents > XFS_CUI_MAX_FAST_EXTENTS) > > - kmem_free(cuip); > > + kfree(cuip); > > else > > kmem_cache_free(xfs_cui_zone, cuip); > > } > > @@ -392,7 +392,7 @@ xfs_refcount_update_finish_item( > > refc->ri_blockcount = new_aglen; > > return -EAGAIN; > > } > > - kmem_free(refc); > > + kfree(refc); > > return error; > > } > > > > @@ -424,7 +424,7 @@ xfs_refcount_update_cancel_item( > > struct xfs_refcount_intent *refc; > > > > refc = container_of(item, struct xfs_refcount_intent, ri_list); > > - kmem_free(refc); > > + kfree(refc); > > } > > > > const struct xfs_defer_op_type xfs_refcount_update_defer_type = { > > diff --git a/fs/xfs/xfs_rmap_item.c b/fs/xfs/xfs_rmap_item.c > > index 4911b68f95dd..a0a02d862ddd 100644 > > --- a/fs/xfs/xfs_rmap_item.c > > +++ b/fs/xfs/xfs_rmap_item.c > > @@ -32,7 +32,7 @@ xfs_rui_item_free( > > struct xfs_rui_log_item *ruip) > > { > > if (ruip->rui_format.rui_nextents > XFS_RUI_MAX_FAST_EXTENTS) > > - kmem_free(ruip); > > + kfree(ruip); > > else > > kmem_cache_free(xfs_rui_zone, ruip); > > } > > @@ -436,7 +436,7 @@ xfs_rmap_update_finish_item( > > rmap->ri_bmap.br_blockcount, > > rmap->ri_bmap.br_state, > > (struct xfs_btree_cur **)state); > > - kmem_free(rmap); > > + kfree(rmap); > > return error; > > } > > > > @@ -468,7 +468,7 @@ xfs_rmap_update_cancel_item( > > struct xfs_rmap_intent *rmap; > > > > rmap = container_of(item, struct xfs_rmap_intent, ri_list); > > - kmem_free(rmap); > > + kfree(rmap); > > } > > > > const struct xfs_defer_op_type xfs_rmap_update_defer_type = { > > diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c > > index d42b5a2047e0..7f03b4ab3452 100644 > > --- a/fs/xfs/xfs_rtalloc.c > > +++ b/fs/xfs/xfs_rtalloc.c > > @@ -1082,7 +1082,7 @@ xfs_growfs_rt( > > /* > > * Free the fake mp structure. > > */ > > - kmem_free(nmp); > > + kfree(nmp); > > > > /* > > * If we had to allocate a new rsum_cache, we either need to free the > > @@ -1091,10 +1091,10 @@ xfs_growfs_rt( > > */ > > if (rsum_cache != mp->m_rsum_cache) { > > if (error) { > > - kmem_free(mp->m_rsum_cache); > > + kvfree(mp->m_rsum_cache); > > mp->m_rsum_cache = rsum_cache; > > } else { > > - kmem_free(rsum_cache); > > + kvfree(rsum_cache); > > } > > } > > > > @@ -1253,7 +1253,7 @@ void > > xfs_rtunmount_inodes( > > struct xfs_mount *mp) > > { > > - kmem_free(mp->m_rsum_cache); > > + kvfree(mp->m_rsum_cache); > > if (mp->m_rbmip) > > xfs_irele(mp->m_rbmip); > > if (mp->m_rsumip) > > diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c > > index d9ae27ddf253..cc1933dc652f 100644 > > --- a/fs/xfs/xfs_super.c > > +++ b/fs/xfs/xfs_super.c > > @@ -725,7 +725,7 @@ xfs_mount_free( > > { > > kfree(mp->m_rtname); > > kfree(mp->m_logname); > > - kmem_free(mp); > > + kfree(mp); > > } > > > > STATIC int > > diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c > > index 00cc5b8734be..589918d11041 100644 > > --- a/fs/xfs/xfs_trans_ail.c > > +++ b/fs/xfs/xfs_trans_ail.c > > @@ -844,7 +844,7 @@ xfs_trans_ail_init( > > return 0; > > > > out_free_ailp: > > - kmem_free(ailp); > > + kfree(ailp); > > return -ENOMEM; > > } > > > > @@ -855,5 +855,5 @@ xfs_trans_ail_destroy( > > struct xfs_ail *ailp = mp->m_ail; > > > > kthread_stop(ailp->ail_task); > > - kmem_free(ailp); > > + kfree(ailp); > > } > > -- > > 2.23.0 > > > -- Carlos