Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5701c051 authored by Arve Hjønnevåg's avatar Arve Hjønnevåg Committed by Greg Kroah-Hartman
Browse files

Staging: android: ram_console: Disable ECC when early init is enabled and validate buffer size

parent 07f26986
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ menuconfig ANDROID_RAM_CONSOLE_ERROR_CORRECTION
	bool "Android RAM Console Enable error correction"
	default n
	depends on ANDROID_RAM_CONSOLE
	depends on !ANDROID_RAM_CONSOLE_EARLY_INIT
	select REED_SOLOMON
	select REED_SOLOMON_ENC8
	select REED_SOLOMON_DEC8
+14 −0
Original line number Diff line number Diff line
@@ -224,9 +224,23 @@ static int __init ram_console_init(struct ram_console_buffer *buffer,
	ram_console_buffer_size =
		buffer_size - sizeof(struct ram_console_buffer);

	if (ram_console_buffer_size > buffer_size) {
		pr_err("ram_console: buffer %p, invalid size %d, datasize %d\n",
		       buffer, buffer_size, ram_console_buffer_size);
		return 0;
	}

#ifdef CONFIG_ANDROID_RAM_CONSOLE_ERROR_CORRECTION
	ram_console_buffer_size -= (DIV_ROUND_UP(ram_console_buffer_size,
						ECC_BLOCK_SIZE) + 1) * ECC_SIZE;

	if (ram_console_buffer_size > buffer_size) {
		pr_err("ram_console: buffer %p, invalid size %d, "
		       "non-ecc datasize %d\n",
		       buffer, buffer_size, ram_console_buffer_size);
		return 0;
	}

	ram_console_par_buffer = buffer->data + ram_console_buffer_size;