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

Commit 505b1cd2 authored by Hardik Arya's avatar Hardik Arya
Browse files

soc: qcom: Validate read and write index before calculating ptr



Currently we are not validating read and write index of
tx and rx fifo's before calculating ptr, this can lead to
out-of-bound access. The patch adds proper check for the same.

Change-Id: I7b158e94ae743a90ac364783fe31914ca0fa582b
Signed-off-by: default avatarHardik Arya <harya@codeaurora.org>
parent 08453cfc
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
/* Copyright (c) 2014-2018, The Linux Foundation. All rights reserved.
/* Copyright (c) 2014-2019, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -483,6 +483,8 @@ static int fifo_read(struct edge_info *einfo, void *_data, int len)
	uint32_t fifo_size = einfo->rx_fifo_size;
	uint32_t n;

	if (read_index >= fifo_size || write_index >= fifo_size)
		return 0;
	while (len) {
		ptr = einfo->rx_fifo + read_index;
		if (read_index <= write_index)
@@ -529,6 +531,8 @@ static int fifo_write_body(struct edge_info *einfo, const void *_data,
	uint32_t fifo_size = einfo->tx_fifo_size;
	uint32_t n;

	if (read_index >= fifo_size || *write_index >= fifo_size)
		return 0;
	while (len) {
		ptr = einfo->tx_fifo + *write_index;
		if (*write_index < read_index) {