mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
platform/chrome: chromeos_acpi: print hex string for ACPI_TYPE_BUFFER
commit0820debb7d
upstream. `element->buffer.pointer` should be binary blob. `%s` doesn't work perfect for them. Print hex string for ACPI_TYPE_BUFFER. Also update the documentation to reflect this. Fixes:0a4cad9c11
("platform/chrome: Add ChromeOS ACPI device driver") Cc: stable@vger.kernel.org Reviewed-by: Guenter Roeck <linux@roeck-us.net> Link: https://lore.kernel.org/r/20230803011245.3773756-1-tzungbi@kernel.org Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a424ccd653
commit
609a37db98
@ -134,4 +134,4 @@ KernelVersion: 5.19
|
||||
Description:
|
||||
Returns the verified boot data block shared between the
|
||||
firmware verification step and the kernel verification step
|
||||
(binary).
|
||||
(hex dump).
|
||||
|
@ -90,7 +90,36 @@ static int chromeos_acpi_handle_package(struct device *dev, union acpi_object *o
|
||||
case ACPI_TYPE_STRING:
|
||||
return sysfs_emit(buf, "%s\n", element->string.pointer);
|
||||
case ACPI_TYPE_BUFFER:
|
||||
return sysfs_emit(buf, "%s\n", element->buffer.pointer);
|
||||
{
|
||||
int i, r, at, room_left;
|
||||
const int byte_per_line = 16;
|
||||
|
||||
at = 0;
|
||||
room_left = PAGE_SIZE - 1;
|
||||
for (i = 0; i < element->buffer.length && room_left; i += byte_per_line) {
|
||||
r = hex_dump_to_buffer(element->buffer.pointer + i,
|
||||
element->buffer.length - i,
|
||||
byte_per_line, 1, buf + at, room_left,
|
||||
false);
|
||||
if (r > room_left)
|
||||
goto truncating;
|
||||
at += r;
|
||||
room_left -= r;
|
||||
|
||||
r = sysfs_emit_at(buf, at, "\n");
|
||||
if (!r)
|
||||
goto truncating;
|
||||
at += r;
|
||||
room_left -= r;
|
||||
}
|
||||
|
||||
buf[at] = 0;
|
||||
return at;
|
||||
truncating:
|
||||
dev_info_once(dev, "truncating sysfs content for %s\n", name);
|
||||
sysfs_emit_at(buf, PAGE_SIZE - 4, "..\n");
|
||||
return PAGE_SIZE - 1;
|
||||
}
|
||||
default:
|
||||
dev_err(dev, "element type %d not supported\n", element->type);
|
||||
return -EINVAL;
|
||||
|
Loading…
Reference in New Issue
Block a user