Skip to content

Commit cd3a62f

Browse files
yonghuahlijinxia
authored andcommitted
HV: Refine invalid parameter handling in hypervisor shell
- print error message for command parameter error when callback/handler is called. Signed-off-by: Yonghua Huang <yonghua.huang@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
1 parent 61782d7 commit cd3a62f

File tree

2 files changed

+29
-39
lines changed

2 files changed

+29
-39
lines changed

hypervisor/arch/x86/mtrr.c

100755100644
File mode changed.

hypervisor/debug/shell.c

Lines changed: 29 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ void shell_kick(void)
359359

360360
int shell_process_cmd(char *p_input_line)
361361
{
362-
int status = 0;
362+
int status = -EINVAL;
363363
struct shell_cmd *p_cmd;
364364
char cmd_argv_str[SHELL_CMD_MAX_LEN + 1U];
365365
int cmd_argv_mem[sizeof(char *) * ((SHELL_CMD_MAX_LEN + 1U) / 2U)];
@@ -386,14 +386,16 @@ int shell_process_cmd(char *p_input_line)
386386
if (cmd_argc != 0) {
387387
/* See if command is in cmds supported */
388388
p_cmd = shell_find_cmd(cmd_argv[0]);
389+
if (p_cmd == NULL) {
390+
shell_puts("\r\nError: Invalid command.\r\n");
391+
return -EINVAL;
392+
}
389393

390-
if (p_cmd != NULL) {
391-
/* Call the command passing the appropriate command
392-
* arguments.
393-
*/
394-
status = p_cmd->fcn(cmd_argc, &cmd_argv[0]);
395-
} else { /* unregistered cmd */
396-
shell_puts("\r\nError: Invalid Command\r\n\r\n");
394+
status = p_cmd->fcn(cmd_argc, &cmd_argv[0]);
395+
if (status == -EINVAL) {
396+
shell_puts("\r\nError: Invalid parameters.\r\n");
397+
} else if (status != 0) {
398+
shell_puts("\r\nCommand launch failed.\r\n");
397399
}
398400
}
399401

@@ -416,7 +418,6 @@ void shell_init(void)
416418
#define MAX_INDENT_LEN 16
417419
int shell_cmd_help(__unused int argc, __unused char **argv)
418420
{
419-
int status = 0;
420421
int spaces = 0;
421422
struct shell_cmd *p_cmd = NULL;
422423
char space_buf[MAX_INDENT_LEN + 1];
@@ -486,12 +487,11 @@ int shell_cmd_help(__unused int argc, __unused char **argv)
486487

487488
shell_puts("\r\n");
488489

489-
return status;
490+
return 0;
490491
}
491492

492493
int shell_list_vm(__unused int argc, __unused char **argv)
493494
{
494-
int status = 0;
495495
char temp_str[MAX_STR_SIZE];
496496
struct list_head *pos;
497497
struct vm *vm;
@@ -525,12 +525,11 @@ int shell_list_vm(__unused int argc, __unused char **argv)
525525
}
526526
spinlock_release(&vm_list_lock);
527527

528-
return status;
528+
return 0;
529529
}
530530

531531
int shell_list_vcpu(__unused int argc, __unused char **argv)
532532
{
533-
int status = 0;
534533
char temp_str[MAX_STR_SIZE];
535534
struct list_head *pos;
536535
struct vm *vm;
@@ -575,7 +574,7 @@ int shell_list_vcpu(__unused int argc, __unused char **argv)
575574
}
576575
spinlock_release(&vm_list_lock);
577576

578-
return status;
577+
return 0;
579578
}
580579

581580
#define DUMPREG_SP_SIZE 32
@@ -753,9 +752,6 @@ int shell_to_sos_console(__unused int argc, __unused char **argv)
753752
/* Get the virtual device node */
754753
vm = get_vm_from_vmid(guest_no);
755754
if (vm == NULL) {
756-
pr_err("Error: VM %d is not yet created/started",
757-
guest_no);
758-
759755
return -EINVAL;
760756
}
761757
vuart = vm->vuart;
@@ -825,24 +821,20 @@ int shell_show_vioapic_info(int argc, char **argv)
825821

826822
/* User input invalidation */
827823
if (argc != 2) {
828-
snprintf(temp_str, CPU_PAGE_SIZE, "\r\nvmid param needed\r\n");
829-
goto END;
830-
} else {
831-
ret = atoi(argv[1]);
832-
if (ret >= 0) {
833-
vmid = (uint16_t) ret;
834-
} else {
835-
free(temp_str);
836-
return -EINVAL;
837-
}
824+
free(temp_str);
825+
return -EINVAL;
826+
}
827+
ret = atoi(argv[1]);
828+
if (ret >= 0) {
829+
vmid = (uint16_t) ret;
830+
get_vioapic_info(temp_str, CPU_PAGE_SIZE, vmid);
831+
shell_puts(temp_str);
832+
free(temp_str);
833+
return 0;
838834
}
839835

840-
get_vioapic_info(temp_str, CPU_PAGE_SIZE, vmid);
841-
END:
842-
shell_puts(temp_str);
843836
free(temp_str);
844-
845-
return 0;
837+
return -EINVAL;
846838
}
847839

848840
int shell_show_ioapic_info(__unused int argc, __unused char **argv)
@@ -881,19 +873,17 @@ int shell_dump_logbuf(int argc, char **argv)
881873
{
882874
uint16_t pcpu_id;
883875
int val;
884-
int status = -EINVAL;
885876

886877
if (argc == 2) {
887878
val = atoi(argv[1]);
888-
if (val < 0) {
889-
return status;
879+
if (val >= 0) {
880+
pcpu_id = (uint16_t)val;
881+
print_logmsg_buffer(pcpu_id);
882+
return 0;
890883
}
891-
pcpu_id = (uint16_t)val;
892-
print_logmsg_buffer(pcpu_id);
893-
return 0;
894884
}
895885

896-
return status;
886+
return -EINVAL;
897887
}
898888

899889
int shell_loglevel(int argc, char **argv)

0 commit comments

Comments
 (0)