Re: [PATCHv2] mm: do not export const kfree and kstrdup variants

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Le 24/09/2024 à 09:02, Christoph Hellwig a écrit :
On Tue, Sep 24, 2024 at 03:56:53PM +0900, Sergey Senozhatsky wrote:
Totally agree with all the points, I haven't looked at how
popular that API was before sending out the patch.  Is there
some sort of "built time const" but for strings that we, perhaps,
can add to kfree_const() (and make kfree_const() always inline)?
So that we can turn this

	str = "boom";
	...
	kfree_const(str);

into a safe scenario for modules.

Not sure, but even then the API would be horrible as it still would
not work for constants in other modules than the one calling it.



So, the best is to audit, at least code that can be built as a module for str = "boom" pattern, and fix relevant places?


Or, considering that these these _const() versions are only there to save a few bytes of memory, wonder if it really worth it?

In other word:
	1) apply something like the patch below
	2) remove the API


At a minimum, I think that devm_kstrdup_const() could be removed.

CJ


diff --git a/mm/util.c b/mm/util.c
index 4f1275023eb7..fd5e98fb6362 100644
--- a/mm/util.c
+++ b/mm/util.c
@@ -39,8 +39,7 @@
  */
 void kfree_const(const void *x)
 {
-       if (!is_kernel_rodata((unsigned long)x))
-               kfree(x);
+       kfree(x);
 }
 EXPORT_SYMBOL(kfree_const);

@@ -81,9 +80,6 @@ EXPORT_SYMBOL(kstrdup);
  */
 const char *kstrdup_const(const char *s, gfp_t gfp)
 {
-       if (is_kernel_rodata((unsigned long)s))
-               return s;
-
        return kstrdup(s, gfp);
 }
 EXPORT_SYMBOL(kstrdup_const);






[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux