From: Leonard Crestez <leonard.crestez@nxp.com>
To: Stephen Boyd <sboyd@kernel.org>
Cc: Aisheng Dong <aisheng.dong@nxp.com>,
Shawn Guo <shawnguo@kernel.org>,
Fabio Estevam <fabio.estevam@nxp.com>,
Michael Turquette <mturquette@baylibre.com>,
Stefan Agner <stefan@agner.ch>,
Linus Walleij <linus.walleij@linaro.org>,
Alessandro Zummo <a.zummo@towertech.it>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Anson Huang <anson.huang@nxp.com>, Abel Vesa <abel.vesa@nxp.com>,
Franck Lenormand <franck.lenormand@nxp.com>,
"kernel@pengutronix.de" <kernel@pengutronix.de>,
dl-linux-imx <linux-imx@nxp.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-clk@vger.kernel.org" <linux-clk@vger.kernel.org>,
"linux-gpio@vger.kernel.org" <linux-gpio@vger.kernel.org>,
"linux-rtc@vger.kernel.org" <linux-rtc@vger.kernel.org>
Subject: Re: [PATCH] firmware: imx: Align imx SC msg structs to 4
Date: Thu, 20 Feb 2020 12:25:36 +0000 [thread overview]
Message-ID: <VI1PR04MB70230F085F260D01610005FAEE130@VI1PR04MB7023.eurprd04.prod.outlook.com> (raw)
In-Reply-To: 158215662160.184098.12475377410437970578@swboyd.mtv.corp.google.com
On 20.02.2020 01:57, Stephen Boyd wrote:
> Quoting Leonard Crestez (2020-02-11 13:24:33)
>> The imx SC api strongly assumes that messages are composed out of
>> 4-bytes words but some of our message structs have sizeof "6" and "7".
>>
>> This produces many oopses with CONFIG_KASAN=y:
>>
>> BUG: KASAN: stack-out-of-bounds in imx_mu_send_data+0x108/0x1f0
>
> Can you share the full kasan bug report instead of the single line?
[ 1.606708] imx-scu scu: NXP i.MX SCU Initialized
[ 1.635265] random: fast init done
[ 1.652200]
==================================================================
[ 1.659118] BUG: KASAN: stack-out-of-bounds in
imx_mu_send_data+0x108/0x1f0
[ 1.666046] Read of size 4 at addr ffff0008c80e6bc4 by task swapper/0/1
[ 1.672642]
[ 1.674134] CPU: 0 PID: 1 Comm: swapper/0 Not tainted
5.4.3-03848-g13efcd6 #54
[ 1.681335] Hardware name: Freescale i.MX8QM MEK (DT)
[ 1.686373] Call trace:
[ 1.688815] dump_backtrace+0x0/0x1e8
[ 1.692458] show_stack+0x14/0x20
[ 1.695766] dump_stack+0xe8/0x140
[ 1.699155] print_address_description.isra.11+0x64/0x348
[ 1.704532] __kasan_report+0x11c/0x230
[ 1.708356] kasan_report+0xc/0x18
[ 1.711743] __asan_load4+0x90/0xb0
[ 1.715218] imx_mu_send_data+0x108/0x1f0
[ 1.719215] msg_submit+0x104/0x180
[ 1.722689] mbox_send_message+0xa8/0x1a0
[ 1.726696] imx_scu_call_rpc+0x168/0x310
[ 1.730679] imx_sc_pd_power+0x180/0x1e0
[ 1.734589] imx_sc_pd_power_on+0x10/0x18
[ 1.738598] genpd_power_on.part.23+0x118/0x2a8
[ 1.743105] genpd_runtime_resume+0x138/0x320
[ 1.747454] __rpm_callback+0xb0/0x1a0
[ 1.751184] rpm_callback+0x34/0xe0
[ 1.754659] rpm_resume+0x5b8/0x7e8
[ 1.758137] __pm_runtime_resume+0x38/0x90
[ 1.762222] imx_clk_scu_probe+0x5c/0x1c8
[ 1.766218] platform_drv_probe+0x6c/0xc8
[ 1.770217] really_probe+0x148/0x428
[ 1.773861] driver_probe_device+0x74/0x130
[ 1.778031] __device_attach_driver+0xc4/0xe8
[ 1.782380] bus_for_each_drv+0xf0/0x158
[ 1.786283] __device_attach+0x158/0x1d8
[ 1.790195] device_initial_probe+0x10/0x18
[ 1.794362] bus_probe_device+0xe0/0xf0
[ 1.798185] device_add+0x660/0x998
[ 1.801659] platform_device_add+0x198/0x340
[ 1.805916] imx_clk_scu_alloc_dev+0x1b8/0x1e8
[ 1.810347] imx8qxp_clk_probe+0x19d0/0x28b8
[ 1.814601] platform_drv_probe+0x6c/0xc8
[ 1.818601] really_probe+0x148/0x428
[ 1.822250] driver_probe_device+0x74/0x130
[ 1.826423] __device_attach_driver+0xc4/0xe8
[ 1.830763] bus_for_each_drv+0xf0/0x158
[ 1.834675] __device_attach+0x158/0x1d8
[ 1.838583] device_initial_probe+0x10/0x18
[ 1.842752] bus_probe_device+0xe0/0xf0
[ 1.846572] device_add+0x660/0x998
[ 1.850058] of_device_add+0x74/0x98
[ 1.853610] of_platform_device_create_pdata+0x11c/0x178
[ 1.858908] of_platform_bus_create+0x404/0x4f0
[ 1.863425] of_platform_populate+0x74/0x110
[ 1.867688] devm_of_platform_populate+0x54/0xb8
[ 1.872291] imx_scu_probe+0x1b8/0x220
[ 1.876022] platform_drv_probe+0x6c/0xc8
[ 1.880021] really_probe+0x148/0x428
[ 1.883671] driver_probe_device+0x74/0x130
[ 1.887841] device_driver_attach+0x94/0xa0
[ 1.892010] __driver_attach+0x70/0x110
[ 1.895832] bus_for_each_dev+0xe8/0x158
[ 1.899741] driver_attach+0x30/0x40
[ 1.903303] bus_add_driver+0x1b0/0x2b8
[ 1.907129] driver_register+0xbc/0x1d0
[ 1.910947] __platform_driver_register+0x7c/0x88
[ 1.915653] imx_scu_driver_init+0x18/0x20
[ 1.919725] do_one_initcall+0xd4/0x244
[ 1.923552] kernel_init_freeable+0x238/0x2d4
[ 1.927889] kernel_init+0x10/0x114
[ 1.931365] ret_from_fork+0x10/0x18
[ 1.934917]
[ 1.936399] The buggy address belongs to the page:
[ 1.941184] page:fffffe0023003980 refcount:0 mapcount:0
mapping:0000000000000000 index:0x0
[ 1.949447] raw: 1ffff00000000000 fffffe0023003988 fffffe0023003988
0000000000000000
[ 1.957170] raw: 0000000000000000 0000000000000000 00000000ffffffff
0000000000000000
[ 1.964894] page dumped because: kasan: bad access detected
[ 1.970449]
[ 1.971933] addr ffff0008c80e6bc4 is located in stack of task
swapper/0/1 at offset 36 in frame:
[ 1.980708] imx_sc_pd_power+0x0/0x1e0
[ 1.984442]
[ 1.985917] this frame has 1 object:
[ 1.989481] [32, 39) 'msg'
[ 1.989484]
[ 1.993732] Memory state around the buggy address:
[ 1.998520] ffff0008c80e6a80: 00 00 00 00 00 00 00 00 00 00 f1 f1 f1
f1 00 00
[ 2.005730] ffff0008c80e6b00: 00 00 f3 f3 f3 f3 00 00 00 00 00 00 00
00 00 00
[ 2.012940] >ffff0008c80e6b80: 00 00 00 00 f1 f1 f1 f1 07 f2 f2 f2 00
00 00 00
[ 2.020141] ^
[ 2.025448] ffff0008c80e6c00: 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00
[ 2.032659] ffff0008c80e6c80: 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00
[ 2.039862]
==================================================================
This is actually from an NXP release branch but code is very close up
upstream.
>> It shouldn't cause an issues in normal use because these structs are
>> always allocated on the stack.
>
> Is packed necessary for these? I thought that if the beginning of the
> struct was naturally aligned and there was sometimes a byte or two at
> the end then having __packed wasn't useful. So maybe it's better to just
> drop __packed on all these structs and let the compiler decide it can
> add some padding on the stack? Or do we have arrays of these structs
> sitting in memory all next to each other and they need to be that way to
> be sent through the mailbox?
I'm not sure I understand the question: the structs are __packed because
they represent the binary protocol for communicating with the "System
Controller".
Without __packed the compiler could insert padding inside the structs
and break the protocol.
As far as I understand compilers are still allowed to use padding on
stack since that padding is outside the message struct itself.
--
Regards,
Leonard
prev parent reply other threads:[~2020-02-20 12:25 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-11 21:24 [PATCH] firmware: imx: Align imx SC msg structs to 4 Leonard Crestez
2020-02-17 6:21 ` Shawn Guo
2020-02-17 20:37 ` Leonard Crestez
2020-02-18 9:18 ` Shawn Guo
2020-02-18 17:48 ` Leonard Crestez
2020-02-18 19:02 ` Sasha Levin
2020-02-18 9:52 ` Alexandre Belloni
2020-02-19 23:57 ` Stephen Boyd
2020-02-20 12:25 ` Leonard Crestez [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=VI1PR04MB70230F085F260D01610005FAEE130@VI1PR04MB7023.eurprd04.prod.outlook.com \
--to=leonard.crestez@nxp.com \
--cc=a.zummo@towertech.it \
--cc=abel.vesa@nxp.com \
--cc=aisheng.dong@nxp.com \
--cc=alexandre.belloni@bootlin.com \
--cc=anson.huang@nxp.com \
--cc=fabio.estevam@nxp.com \
--cc=franck.lenormand@nxp.com \
--cc=kernel@pengutronix.de \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-imx@nxp.com \
--cc=linux-rtc@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=sboyd@kernel.org \
--cc=shawnguo@kernel.org \
--cc=stefan@agner.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).