| From: Alexey Dobriyan <adobriyan@gmail.com> |
| Subject: mm: uninline kstrdup() |
| Date: Tue, 28 Feb 2023 18:34:38 +0300 |
| |
| gcc inlines kstrdup into kstrdup_const() but it can very efficiently tail |
| call into it instead: |
| |
| $ ./scripts/bloat-o-meter ../vmlinux-000 ../obj/vmlinux |
| add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-84 (-84) |
| Function old new delta |
| kstrdup_const 119 35 -84 |
| |
| Link: https://lkml.kernel.org/r/Y/4fDlbIhTLNLFHz@p183 |
| Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| mm/util.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/mm/util.c~mm-uninline-kstrdup |
| +++ a/mm/util.c |
| @@ -49,6 +49,7 @@ EXPORT_SYMBOL(kfree_const); |
| * |
| * Return: newly allocated copy of @s or %NULL in case of error |
| */ |
| +noinline |
| char *kstrdup(const char *s, gfp_t gfp) |
| { |
| size_t len; |
| _ |