Re: [PATCH] kbuild: modpost: Warn about references from rodata to __init text
From: Stephen Boyd
Date: Thu Jul 20 2017 - 13:52:21 EST
On 07/20, Masahiro Yamada wrote:
> Hi Stephen, Rob,
>
> 2017-07-01 8:59 GMT+09:00 Rob Clark <robdclark@xxxxxxxxx>:
> > On Fri, Jun 30, 2017 at 6:58 PM, Stephen Boyd <sboyd@xxxxxxxxxxxxxx> wrote:
> >> If we have a structure that's marked const it will be placed
> >> into the .rodata section but it could reference an init section
> >> function. Include the read only data section in the check we have
> >> for read/write data sections referencing init sections so we can
> >> find this class of problems. This exposes quite a few places
> >> where const marked structures are referencing __init functions and
> >> __init data that we were previously ignoring.
> >>
> >> Cc: Rob Clark <robdclark@xxxxxxxxx>
> >> Cc: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx>
> >> Signed-off-by: Stephen Boyd <sboyd@xxxxxxxxxxxxxx>
> >> ---
> >>
> >> Making this change leads to quite a few other errors even on the
> >> multi_v7_defconfig for ARM[1]. I still need to do a build of the
> >> allmodconfig to see how many other errors there, but it seems to
> >> be quite a few. I suppose those will need to be fixed before we can
> >> merge this?
> >
> > thanks.. the explosions you get with these mistakes when building
> > drivers as modules in a distro kernel config are quite "fun" to
> > debug..
> >
> > I'm not quite sure about the rules for whether merging this would
> > count as a regression, but I would argue those drivers are already
> > broken, just no one noticed yet. Similar to when a new gcc gets more
> > clever about detecting bugs. So I wouldn't be against merging this
> > first to force drivers to fix their crap ;-)
>
> I applied this, but this way seems unacceptable.
> I cannot send a pull-req for this
> unless most of the warnings are fixed.
>
> Is there any activity for driver fixes?
Sorry, no. I've only had a little time to look at the errors
reported. Some of them seem to be noise, because there are
structures that have a handful of members where one of the
members points to an __init function or piece of data that is
only used in __init code. We would need to mark these structures
as __ref or write more complicated section mismatch checking code
to be silent in these cases.
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project