ACPICA: Reduce error to warning for incorrect method arg count
Previously aborted with error if too few arguments were passed to a control method via the external ACPICA interface. Now issue a warning instead and continue. Handles the case where the method inadvertently declares too many arguments, but does not actually use the extra ones. Applies mainly to the predefined methods. http://bugzilla.kernel.org/show_bug.cgi?id=11032 Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
b68bacf225
commit
93851b4d13
1 changed files with 9 additions and 8 deletions
|
@ -148,21 +148,22 @@ acpi_status acpi_ns_evaluate(struct acpi_evaluate_info * info)
|
||||||
info->param_count++;
|
info->param_count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Error if too few arguments were passed in */
|
/*
|
||||||
|
* Warning if too few or too many arguments have been passed by the
|
||||||
|
* caller. We don't want to abort here with an error because an
|
||||||
|
* incorrect number of arguments may not cause the method to fail.
|
||||||
|
* However, the method will fail if there are too few arguments passed
|
||||||
|
* and the method attempts to use one of the missing ones.
|
||||||
|
*/
|
||||||
|
|
||||||
if (info->param_count < info->obj_desc->method.param_count) {
|
if (info->param_count < info->obj_desc->method.param_count) {
|
||||||
ACPI_ERROR((AE_INFO,
|
ACPI_WARNING((AE_INFO,
|
||||||
"Insufficient arguments - "
|
"Insufficient arguments - "
|
||||||
"method [%4.4s] needs %d, found %d",
|
"method [%4.4s] needs %d, found %d",
|
||||||
acpi_ut_get_node_name(info->resolved_node),
|
acpi_ut_get_node_name(info->resolved_node),
|
||||||
info->obj_desc->method.param_count,
|
info->obj_desc->method.param_count,
|
||||||
info->param_count));
|
info->param_count));
|
||||||
return_ACPI_STATUS(AE_MISSING_ARGUMENTS);
|
} else if (info->param_count >
|
||||||
}
|
|
||||||
|
|
||||||
/* Just a warning if too many arguments */
|
|
||||||
|
|
||||||
else if (info->param_count >
|
|
||||||
info->obj_desc->method.param_count) {
|
info->obj_desc->method.param_count) {
|
||||||
ACPI_WARNING((AE_INFO,
|
ACPI_WARNING((AE_INFO,
|
||||||
"Excess arguments - "
|
"Excess arguments - "
|
||||||
|
|
Loading…
Reference in a new issue