On Friday, April 28, 2017 01:30:20 PM Lv Zheng wrote: > For all frequent late stage acpi_get_table() clone invocations, we should > only fix them altogether, otherwise, excessive acpi_put_table() could > unexpectedly unmap the table used by the other users. Thus the current plan > is to fix all acpi_get_table() clones together or to fix none of them. I honestly don't think that fixing none of them is a valid option here. > This prevents kernel developers from improving the late stage code quality > without waiting for the ACPICA upstream to improve first. > > This patch adds a mechanism to stop decrementing validation count to > prevent the table unmapping operations so that acpi_put_table() balance > fixes can be done independently to each others. > > Cc: Dan Williams <dan.j.williams@xxxxxxxxx> > Signed-off-by: Lv Zheng <lv.zheng@xxxxxxxxx> > --- > drivers/acpi/acpica/tbutils.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/acpi/acpica/tbutils.c b/drivers/acpi/acpica/tbutils.c > index 7abe665..b517bd0 100644 > --- a/drivers/acpi/acpica/tbutils.c > +++ b/drivers/acpi/acpica/tbutils.c > @@ -445,12 +445,18 @@ void acpi_tb_put_table(struct acpi_table_desc *table_desc) > > ACPI_FUNCTION_TRACE(acpi_tb_put_table); > > - if (table_desc->validation_count == 0) { > + if ((table_desc->validation_count + 1) == 0) { This means that validation_count has reached the maximum value, right? > ACPI_WARNING((AE_INFO, > - "Table %p, Validation count is zero before decrement\n", > + "Table %p, Validation count is about to expire, decrement is unsafe\n", > table_desc)); So why is it unsafe to decrement it? > return_VOID; > } > + if (table_desc->validation_count == 0) { > + ACPI_ERROR((AE_INFO, > + "Table %p, Validation count is zero before decrement\n", > + table_desc)); > + return_VOID; > + } > table_desc->validation_count--; > > if (table_desc->validation_count == 0) { > Thanks, Rafael -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html