浏览代码

[S390] cmm: fix crash on case conversion

When the cmm module is compiled into the kernel it will crash when
writing to the R/O data section.
Reason is the lower to upper case conversion of the "sender" module
parameter which ignored the fact that the pointer is preinitialized.

Introduced with 41b42876 "cmm, smsgiucv_app: convert sender to
uppercase"

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Heiko Carstens 14 年之前
父节点
当前提交
a20852d2b7
共有 1 个文件被更改,包括 6 次插入1 次删除
  1. 6 1
      arch/s390/mm/cmm.c

+ 6 - 1
arch/s390/mm/cmm.c

@@ -23,7 +23,10 @@
 #include <asm/pgalloc.h>
 #include <asm/pgalloc.h>
 #include <asm/diag.h>
 #include <asm/diag.h>
 
 
-static char *sender = "VMRMSVM";
+#ifdef CONFIG_CMM_IUCV
+static char *cmm_default_sender = "VMRMSVM";
+#endif
+static char *sender;
 module_param(sender, charp, 0400);
 module_param(sender, charp, 0400);
 MODULE_PARM_DESC(sender,
 MODULE_PARM_DESC(sender,
 		 "Guest name that may send SMSG messages (default VMRMSVM)");
 		 "Guest name that may send SMSG messages (default VMRMSVM)");
@@ -440,6 +443,8 @@ static int __init cmm_init(void)
 		int len = strlen(sender);
 		int len = strlen(sender);
 		while (len--)
 		while (len--)
 			sender[len] = toupper(sender[len]);
 			sender[len] = toupper(sender[len]);
+	} else {
+		sender = cmm_default_sender;
 	}
 	}
 
 
 	rc = smsg_register_callback(SMSG_PREFIX, cmm_smsg_target);
 	rc = smsg_register_callback(SMSG_PREFIX, cmm_smsg_target);