OSDN Git Service

mailbox: pcc: fix channel calculation in get_pcc_channel()
authorAlexey Klimov <alexey.klimov@arm.com>
Thu, 10 Dec 2015 17:28:37 +0000 (17:28 +0000)
committerJassi Brar <jaswinder.singh@linaro.org>
Tue, 2 Feb 2016 11:09:13 +0000 (16:39 +0530)
commite9c8dc8ba96b165ae72daad3b1f27823c3aee628
treefa2a6b0a43b5c56c1faf09f1068acc5cbc0457b0
parent34229b277480f46c1e9a19f027f30b074512e68b
mailbox: pcc: fix channel calculation in get_pcc_channel()

This patch fixes the calculation of pcc_chan for non-zero id.
After the compiler ignores the (unsigned long) cast the
pcc_mbox_channels pointer is type-cast and then the type-cast
offset is added which results in address outside of the range
leading to the kernel crashing.

We might add braces and make it:

pcc_chan = (struct mbox_chan *)
((unsigned long) pcc_mbox_channels +
(id * sizeof(*pcc_chan)));

but let's go with array approach here and use id as index.

Tested on Juno board.

Signed-off-by: Alexey Klimov <alexey.klimov@arm.com>
Acked-by: Sudeep Holla <sudeep.holla@arm.com>
Acked-by: Ashwin Chaugule <ashwin.chaugule@linaro.org>
Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
drivers/mailbox/pcc.c