diff --git a/net/ipc_router/ipc_router_fifo_xprt.c b/net/ipc_router/ipc_router_fifo_xprt.c index c90534dac923..d55c5ab8926f 100644 --- a/net/ipc_router/ipc_router_fifo_xprt.c +++ b/net/ipc_router/ipc_router_fifo_xprt.c @@ -129,6 +129,9 @@ static size_t fifo_tx_avail(struct msm_ipc_pipe *pipe) else avail = tail - head; + if (WARN_ON_ONCE(avail > pipe->length)) + avail = 0; + return avail; } @@ -139,6 +142,8 @@ static void fifo_tx_write(struct msm_ipc_pipe *pipe, u32 head; head = le32_to_cpu(*pipe->head); + if (WARN_ON_ONCE(head > pipe->length)) + return; len = min_t(size_t, count, pipe->length - head); if (len)