2019-12-12 22:36:43

by Florian Westphal

[permalink] [raw]
Subject: [PATCH] mm: remove __krealloc

Since 5.5-rc1 the last user of this function is gone, so remove the
functionality.

See commit
2ad9d7747c10 ("netfilter: conntrack: free extension area immediately")
for details.

Signed-off-by: Florian Westphal <[email protected]>
---
include/linux/slab.h | 1 -
mm/slab_common.c | 22 ----------------------
scripts/coccinelle/free/devm_free.cocci | 4 ----
3 files changed, 27 deletions(-)

diff --git a/include/linux/slab.h b/include/linux/slab.h
index 877a95c6a2d2..03a389358562 100644
--- a/include/linux/slab.h
+++ b/include/linux/slab.h
@@ -184,7 +184,6 @@ void memcg_deactivate_kmem_caches(struct mem_cgroup *, struct mem_cgroup *);
/*
* Common kmalloc functions provided by all allocators
*/
-void * __must_check __krealloc(const void *, size_t, gfp_t);
void * __must_check krealloc(const void *, size_t, gfp_t);
void kfree(const void *);
void kzfree(const void *);
diff --git a/mm/slab_common.c b/mm/slab_common.c
index f0ab6d4ceb4c..87e8923cf0b6 100644
--- a/mm/slab_common.c
+++ b/mm/slab_common.c
@@ -1675,28 +1675,6 @@ static __always_inline void *__do_krealloc(const void *p, size_t new_size,
return ret;
}

-/**
- * __krealloc - like krealloc() but don't free @p.
- * @p: object to reallocate memory for.
- * @new_size: how many bytes of memory are required.
- * @flags: the type of memory to allocate.
- *
- * This function is like krealloc() except it never frees the originally
- * allocated buffer. Use this if you don't want to free the buffer immediately
- * like, for example, with RCU.
- *
- * Return: pointer to the allocated memory or %NULL in case of error
- */
-void *__krealloc(const void *p, size_t new_size, gfp_t flags)
-{
- if (unlikely(!new_size))
- return ZERO_SIZE_PTR;
-
- return __do_krealloc(p, new_size, flags);
-
-}
-EXPORT_SYMBOL(__krealloc);
-
/**
* krealloc - reallocate memory. The contents will remain unchanged.
* @p: object to reallocate memory for.
diff --git a/scripts/coccinelle/free/devm_free.cocci b/scripts/coccinelle/free/devm_free.cocci
index 441799b5359b..66aaf68889a5 100644
--- a/scripts/coccinelle/free/devm_free.cocci
+++ b/scripts/coccinelle/free/devm_free.cocci
@@ -94,8 +94,6 @@ position p;
kfree@p(x)
|
kzfree@p(x)
-|
- __krealloc@p(x, ...)
|
krealloc@p(x, ...)
|
@@ -120,8 +118,6 @@ position p != safe.p;
|
* kzfree@p(x)
|
-* __krealloc@p(x, ...)
-|
* krealloc@p(x, ...)
|
* free_pages@p(x, ...)
--
2.23.0


2019-12-12 23:21:26

by David Rientjes

[permalink] [raw]
Subject: Re: [PATCH] mm: remove __krealloc

On Thu, 12 Dec 2019, Florian Westphal wrote:

> Since 5.5-rc1 the last user of this function is gone, so remove the
> functionality.
>
> See commit
> 2ad9d7747c10 ("netfilter: conntrack: free extension area immediately")
> for details.
>
> Signed-off-by: Florian Westphal <[email protected]>

So this also means that we can fold __do_krealloc() into krealloc()?

2019-12-12 23:22:03

by Florian Westphal

[permalink] [raw]
Subject: Re: [PATCH] mm: remove __krealloc

David Rientjes <[email protected]> wrote:
> On Thu, 12 Dec 2019, Florian Westphal wrote:
>
> > Since 5.5-rc1 the last user of this function is gone, so remove the
> > functionality.
> >
> > See commit
> > 2ad9d7747c10 ("netfilter: conntrack: free extension area immediately")
> > for details.
> >
> > Signed-off-by: Florian Westphal <[email protected]>
>
> So this also means that we can fold __do_krealloc() into krealloc()?

I would leave that to compiler but if you prefer this I can respin.

2019-12-13 10:19:54

by David Hildenbrand

[permalink] [raw]
Subject: Re: [PATCH] mm: remove __krealloc

On 12.12.19 23:34, Florian Westphal wrote:
> Since 5.5-rc1 the last user of this function is gone, so remove the
> functionality.
>
> See commit
> 2ad9d7747c10 ("netfilter: conntrack: free extension area immediately")
> for details.
>
> Signed-off-by: Florian Westphal <[email protected]>
> ---
> include/linux/slab.h | 1 -
> mm/slab_common.c | 22 ----------------------
> scripts/coccinelle/free/devm_free.cocci | 4 ----
> 3 files changed, 27 deletions(-)
>
> diff --git a/include/linux/slab.h b/include/linux/slab.h
> index 877a95c6a2d2..03a389358562 100644
> --- a/include/linux/slab.h
> +++ b/include/linux/slab.h
> @@ -184,7 +184,6 @@ void memcg_deactivate_kmem_caches(struct mem_cgroup *, struct mem_cgroup *);
> /*
> * Common kmalloc functions provided by all allocators
> */
> -void * __must_check __krealloc(const void *, size_t, gfp_t);
> void * __must_check krealloc(const void *, size_t, gfp_t);
> void kfree(const void *);
> void kzfree(const void *);
> diff --git a/mm/slab_common.c b/mm/slab_common.c
> index f0ab6d4ceb4c..87e8923cf0b6 100644
> --- a/mm/slab_common.c
> +++ b/mm/slab_common.c
> @@ -1675,28 +1675,6 @@ static __always_inline void *__do_krealloc(const void *p, size_t new_size,
> return ret;
> }
>
> -/**
> - * __krealloc - like krealloc() but don't free @p.
> - * @p: object to reallocate memory for.
> - * @new_size: how many bytes of memory are required.
> - * @flags: the type of memory to allocate.
> - *
> - * This function is like krealloc() except it never frees the originally
> - * allocated buffer. Use this if you don't want to free the buffer immediately
> - * like, for example, with RCU.
> - *
> - * Return: pointer to the allocated memory or %NULL in case of error
> - */
> -void *__krealloc(const void *p, size_t new_size, gfp_t flags)
> -{
> - if (unlikely(!new_size))
> - return ZERO_SIZE_PTR;
> -
> - return __do_krealloc(p, new_size, flags);
> -
> -}
> -EXPORT_SYMBOL(__krealloc);
> -
> /**
> * krealloc - reallocate memory. The contents will remain unchanged.
> * @p: object to reallocate memory for.
> diff --git a/scripts/coccinelle/free/devm_free.cocci b/scripts/coccinelle/free/devm_free.cocci
> index 441799b5359b..66aaf68889a5 100644
> --- a/scripts/coccinelle/free/devm_free.cocci
> +++ b/scripts/coccinelle/free/devm_free.cocci
> @@ -94,8 +94,6 @@ position p;
> kfree@p(x)
> |
> kzfree@p(x)
> -|
> - __krealloc@p(x, ...)
> |
> krealloc@p(x, ...)
> |
> @@ -120,8 +118,6 @@ position p != safe.p;
> |
> * kzfree@p(x)
> |
> -* __krealloc@p(x, ...)
> -|
> * krealloc@p(x, ...)
> |
> * free_pages@p(x, ...)
>

IMHO, __do_krealloc() changes can go into a separate patch.

Reviewed-by: David Hildenbrand <[email protected]>

--
Thanks,

David / dhildenb

2019-12-13 19:00:00

by David Rientjes

[permalink] [raw]
Subject: Re: [PATCH] mm: remove __krealloc

On Fri, 13 Dec 2019, Florian Westphal wrote:

> > > Since 5.5-rc1 the last user of this function is gone, so remove the
> > > functionality.
> > >
> > > See commit
> > > 2ad9d7747c10 ("netfilter: conntrack: free extension area immediately")
> > > for details.
> > >
> > > Signed-off-by: Florian Westphal <[email protected]>
> >
> > So this also means that we can fold __do_krealloc() into krealloc()?
>
> I would leave that to compiler but if you prefer this I can respin.
>

Sure, no problem.

Acked-by: David Rientjes <[email protected]>