Patch "orangefs: Fix kmemleak in orangefs_{kernel,client}_debug_init()" has been added to the 5.10-stable tree

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

 



This is a note to let you know that I've just added the patch titled

    orangefs: Fix kmemleak in orangefs_{kernel,client}_debug_init()

to the 5.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     orangefs-fix-kmemleak-in-orangefs_-kernel-client-_de.patch
and it can be found in the queue-5.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 1ebd309954c58593d5a21f7dee7f49a593626a12
Author: Zhang Xiaoxu <zhangxiaoxu5@xxxxxxxxxx>
Date:   Tue Oct 18 12:40:07 2022 +0800

    orangefs: Fix kmemleak in orangefs_{kernel,client}_debug_init()
    
    [ Upstream commit 31720a2b109b3080eb77e97b8f6f50a27b4ae599 ]
    
    When insert and remove the orangefs module, there are memory leaked
    as below:
    
    unreferenced object 0xffff88816b0cc000 (size 2048):
      comm "insmod", pid 783, jiffies 4294813439 (age 65.512s)
      hex dump (first 32 bytes):
        6e 6f 6e 65 0a 00 00 00 00 00 00 00 00 00 00 00  none............
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<0000000031ab7788>] kmalloc_trace+0x27/0xa0
        [<000000005b405fee>] orangefs_debugfs_init.cold+0xaf/0x17f
        [<00000000e5a0085b>] 0xffffffffa02780f9
        [<000000004232d9f7>] do_one_initcall+0x87/0x2a0
        [<0000000054f22384>] do_init_module+0xdf/0x320
        [<000000003263bdea>] load_module+0x2f98/0x3330
        [<0000000052cd4153>] __do_sys_finit_module+0x113/0x1b0
        [<00000000250ae02b>] do_syscall_64+0x35/0x80
        [<00000000f11c03c7>] entry_SYSCALL_64_after_hwframe+0x46/0xb0
    
    Use the golbal variable as the buffer rather than dynamic allocate to
    slove the problem.
    
    Signed-off-by: Zhang Xiaoxu <zhangxiaoxu5@xxxxxxxxxx>
    Signed-off-by: Mike Marshall <hubcap@xxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/fs/orangefs/orangefs-debugfs.c b/fs/orangefs/orangefs-debugfs.c
index a848b6ef9599..1b508f543384 100644
--- a/fs/orangefs/orangefs-debugfs.c
+++ b/fs/orangefs/orangefs-debugfs.c
@@ -194,15 +194,10 @@ void orangefs_debugfs_init(int debug_mask)
  */
 static void orangefs_kernel_debug_init(void)
 {
-	int rc = -ENOMEM;
-	char *k_buffer = NULL;
+	static char k_buffer[ORANGEFS_MAX_DEBUG_STRING_LEN] = { };
 
 	gossip_debug(GOSSIP_DEBUGFS_DEBUG, "%s: start\n", __func__);
 
-	k_buffer = kzalloc(ORANGEFS_MAX_DEBUG_STRING_LEN, GFP_KERNEL);
-	if (!k_buffer)
-		goto out;
-
 	if (strlen(kernel_debug_string) + 1 < ORANGEFS_MAX_DEBUG_STRING_LEN) {
 		strcpy(k_buffer, kernel_debug_string);
 		strcat(k_buffer, "\n");
@@ -213,9 +208,6 @@ static void orangefs_kernel_debug_init(void)
 
 	debugfs_create_file(ORANGEFS_KMOD_DEBUG_FILE, 0444, debug_dir, k_buffer,
 			    &kernel_debug_fops);
-
-out:
-	gossip_debug(GOSSIP_DEBUGFS_DEBUG, "%s: rc:%d:\n", __func__, rc);
 }
 
 
@@ -299,18 +291,13 @@ static int help_show(struct seq_file *m, void *v)
 /*
  * initialize the client-debug file.
  */
-static int orangefs_client_debug_init(void)
+static void orangefs_client_debug_init(void)
 {
 
-	int rc = -ENOMEM;
-	char *c_buffer = NULL;
+	static char c_buffer[ORANGEFS_MAX_DEBUG_STRING_LEN] = { };
 
 	gossip_debug(GOSSIP_DEBUGFS_DEBUG, "%s: start\n", __func__);
 
-	c_buffer = kzalloc(ORANGEFS_MAX_DEBUG_STRING_LEN, GFP_KERNEL);
-	if (!c_buffer)
-		goto out;
-
 	if (strlen(client_debug_string) + 1 < ORANGEFS_MAX_DEBUG_STRING_LEN) {
 		strcpy(c_buffer, client_debug_string);
 		strcat(c_buffer, "\n");
@@ -324,13 +311,6 @@ static int orangefs_client_debug_init(void)
 						  debug_dir,
 						  c_buffer,
 						  &kernel_debug_fops);
-
-	rc = 0;
-
-out:
-
-	gossip_debug(GOSSIP_DEBUGFS_DEBUG, "%s: rc:%d:\n", __func__, rc);
-	return rc;
 }
 
 /* open ORANGEFS_KMOD_DEBUG_FILE or ORANGEFS_CLIENT_DEBUG_FILE.*/



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux