summaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
authorJohn Levon <john.levon@joyent.com>2020-03-27 15:21:06 -0700
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2020-03-30 14:52:32 +0200
commitbb89a79ac6a605c5f02eced174e986e1d8b4cd45 (patch)
tree30092c8c4437fae2b154836b7b5bd3c714e4947d /drivers/acpi
parentf2173c3e7df2cc33d15a6cfd2fbf78a4bca63a4e (diff)
downloadlinux-stable-bb89a79ac6a605c5f02eced174e986e1d8b4cd45.tar.gz
linux-stable-bb89a79ac6a605c5f02eced174e986e1d8b4cd45.tar.bz2
linux-stable-bb89a79ac6a605c5f02eced174e986e1d8b4cd45.zip
ACPICA: utilities: fix sprintf()
This contains changes for the following ACPICA commit ID's: 8f99a6ccd3b8e5c3d3d68c53fdbb054c2477eeb4 d30647af53abd334cbcf6362387464ea647bac9e d3c5fb4cf5b2880d789c987eb847fc3de3774abc On 32-bit, the provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX, String + Size will wrap, meaning End < Start, and acpi_ut_bound_string_output() will never output anything as a result. The symptom we saw of this was acpixtract failing to output anything. Link: https://github.com/acpica/acpica/commit/8f99a6cc Link: https://github.com/acpica/acpica/commit/d30647af Link: https://github.com/acpica/acpica/commit/d3c5fb4c Signed-off-by: MSathieu <18145111+MSathieu@users.noreply.github.com> Signed-off-by: John Levon <john.levon@joyent.com> Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Erik Kaneda <erik.kaneda@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi')
-rw-r--r--drivers/acpi/acpica/utprint.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/acpi/acpica/utprint.c b/drivers/acpi/acpica/utprint.c
index a874dac7db5c..681c11f4af4e 100644
--- a/drivers/acpi/acpica/utprint.c
+++ b/drivers/acpi/acpica/utprint.c
@@ -332,7 +332,12 @@ int vsnprintf(char *string, acpi_size size, const char *format, va_list args)
int i;
pos = string;
- end = string + size;
+
+ if (size != ACPI_UINT32_MAX) {
+ end = string + size;
+ } else {
+ end = ACPI_CAST_PTR(char, ACPI_UINT32_MAX);
+ }
for (; *format; ++format) {
if (*format != '%') {