mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-13 14:24:11 +08:00
s390/ipl: Fix size of vmcmd buffers for sending z/VM CP diag X'008' cmds
z/VM CP diagnose X'008' accepts commands of max 240 characters. Using a smaller value as a buffer size makes kernel send truncated CP commands which are longer than the old buffer size. This can result in invalid CP commands passed to z/VM. Reviewed-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Alexander Egorenkov <egorenar@linux.ibm.com> Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
This commit is contained in:
parent
207ddb9189
commit
72935e3ada
@ -1958,11 +1958,13 @@ static struct shutdown_action __refdata dump_reipl_action = {
|
||||
* vmcmd shutdown action: Trigger vm command on shutdown.
|
||||
*/
|
||||
|
||||
static char vmcmd_on_reboot[128];
|
||||
static char vmcmd_on_panic[128];
|
||||
static char vmcmd_on_halt[128];
|
||||
static char vmcmd_on_poff[128];
|
||||
static char vmcmd_on_restart[128];
|
||||
#define VMCMD_MAX_SIZE 240
|
||||
|
||||
static char vmcmd_on_reboot[VMCMD_MAX_SIZE + 1];
|
||||
static char vmcmd_on_panic[VMCMD_MAX_SIZE + 1];
|
||||
static char vmcmd_on_halt[VMCMD_MAX_SIZE + 1];
|
||||
static char vmcmd_on_poff[VMCMD_MAX_SIZE + 1];
|
||||
static char vmcmd_on_restart[VMCMD_MAX_SIZE + 1];
|
||||
|
||||
DEFINE_IPL_ATTR_STR_RW(vmcmd, on_reboot, "%s\n", "%s\n", vmcmd_on_reboot);
|
||||
DEFINE_IPL_ATTR_STR_RW(vmcmd, on_panic, "%s\n", "%s\n", vmcmd_on_panic);
|
||||
@ -2288,8 +2290,8 @@ static int __init vmcmd_on_reboot_setup(char *str)
|
||||
{
|
||||
if (!MACHINE_IS_VM)
|
||||
return 1;
|
||||
strncpy_skip_quote(vmcmd_on_reboot, str, 127);
|
||||
vmcmd_on_reboot[127] = 0;
|
||||
strncpy_skip_quote(vmcmd_on_reboot, str, VMCMD_MAX_SIZE);
|
||||
vmcmd_on_reboot[VMCMD_MAX_SIZE] = 0;
|
||||
on_reboot_trigger.action = &vmcmd_action;
|
||||
return 1;
|
||||
}
|
||||
@ -2299,8 +2301,8 @@ static int __init vmcmd_on_panic_setup(char *str)
|
||||
{
|
||||
if (!MACHINE_IS_VM)
|
||||
return 1;
|
||||
strncpy_skip_quote(vmcmd_on_panic, str, 127);
|
||||
vmcmd_on_panic[127] = 0;
|
||||
strncpy_skip_quote(vmcmd_on_panic, str, VMCMD_MAX_SIZE);
|
||||
vmcmd_on_panic[VMCMD_MAX_SIZE] = 0;
|
||||
on_panic_trigger.action = &vmcmd_action;
|
||||
return 1;
|
||||
}
|
||||
@ -2310,8 +2312,8 @@ static int __init vmcmd_on_halt_setup(char *str)
|
||||
{
|
||||
if (!MACHINE_IS_VM)
|
||||
return 1;
|
||||
strncpy_skip_quote(vmcmd_on_halt, str, 127);
|
||||
vmcmd_on_halt[127] = 0;
|
||||
strncpy_skip_quote(vmcmd_on_halt, str, VMCMD_MAX_SIZE);
|
||||
vmcmd_on_halt[VMCMD_MAX_SIZE] = 0;
|
||||
on_halt_trigger.action = &vmcmd_action;
|
||||
return 1;
|
||||
}
|
||||
@ -2321,8 +2323,8 @@ static int __init vmcmd_on_poff_setup(char *str)
|
||||
{
|
||||
if (!MACHINE_IS_VM)
|
||||
return 1;
|
||||
strncpy_skip_quote(vmcmd_on_poff, str, 127);
|
||||
vmcmd_on_poff[127] = 0;
|
||||
strncpy_skip_quote(vmcmd_on_poff, str, VMCMD_MAX_SIZE);
|
||||
vmcmd_on_poff[VMCMD_MAX_SIZE] = 0;
|
||||
on_poff_trigger.action = &vmcmd_action;
|
||||
return 1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user