Re: [PATCH] Documentation: DocBook: kgdb: update CONFIG_STRICT_KERNEL_RWX info

From: Daniel Thompson
Date: Fri Apr 21 2017 - 05:20:02 EST


On 21/04/17 03:26, Li Qiang wrote:

@Daniel

2017-04-20 23:28 GMT+08:00 Daniel Thompson <daniel.thompson@xxxxxxxxxx
<mailto:daniel.thompson@xxxxxxxxxx>>:

On 19/04/17 02:58, Li Qiang wrote:

CONFIG_STRICT_KERNEL_RWX is no longer selectable on most
architectures.
Update this info to thedocumentation.


"git grep STRICT_KERNEL_RWX" comes up with nothing.


It was introduced in commit 0f5bf6d0afe4be6e1391908ff2d6dc9730e91550.

Oops. I did the grep on the wrong machine :-( and therefore on an older kernel than I thought...


It is selectable on any architecture? If not we should remove it
entirely!

The 'STRICT_KERNEL_RWX' is renamed from 'CONFIG_DEBUG_RODATA
'. The original option is selectable.

I'm not sure is this selectable on any architecture.

So... having found the right kernel, it looks to me like only arm, arm64, parisc, s390 and x86 define ARCH_HAS_STRICT_KERNEL_RWX. Of these five, only arm defines ARCH_OPTIONAL_KERNEL_RWX and makes it user selectable.



@Jonathan

On Tue, 18 Apr 2017 18:58:45 -0700
Li Qiang <liq3ea@xxxxxxxxx <mailto:liq3ea@xxxxxxxxx>> wrote:

> CONFIG_STRICT_KERNEL_RWX is no longer selectable on most architectures.
> Update this info to the documentation.
>
> Signed-off-by: Li Qiang <liqiang6-s@xxxxxx <mailto:liqiang6-s@xxxxxx>>
> ---
> Documentation/DocBook/kgdb.tmpl | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/DocBook/kgdb.tmpl b/Documentation/DocBook/kgdb.tmpl
> index 856ac20..ef0b67b 100644
> --- a/Documentation/DocBook/kgdb.tmpl
> +++ b/Documentation/DocBook/kgdb.tmpl
> @@ -121,7 +121,9 @@
> If kgdb supports it for the architecture you are using, you can
> use hardware breakpoints if you desire to run with the
> CONFIG_STRICT_KERNEL_RWX option turned on, else you need to turn off
> - this option.
> + this option. In most architectures, this option is not selectable.
> + For this situation, it can be turned off by adding a runtime parameter
> + 'rodata=off'.

So this is an improvement, I guess, though the paragraph remains kind of
confusing. Is there any chance we could actually just say which
architectures can use hardware breakpoints, and which should boot with
rodata=off?


I think this is unnecessary as it is not common to change the
default CONFIG_STRICT_KERNEL_RWX /add rodata=off.
We here give this hint because CONFIG_STRICT_KERNEL_RWX is renamed
from CONFIG_DEBUG_RODATA.
And the latter is selectable, this can help the peoples who
think CONFIG_STRICT_KERNEL_RWX is also selectable.

Having looked at the earlier part of the paragraph I think the info about rodata actually needs to be introduced slightly earlier (and rodata should be presented as the primary way to do it because 4 of the 5 architectures don't make STRICT_KERNEL_RWX optional).

Something like:

If the architecture that you are using supports making the text
section read-only (CONFIG_STRICT_KERNEL_RWX), you should consider
turning it off by adding 'rodata=off' to the kernel commandline or,
if your architecture makes CONFIG_STRICT_KERNEL_RWX optional, by
disabling this config option. Alternatively, if your architecture
supports hardware breakpoints, these can be used to provide limited
breakpoint support if you desire to run with a read-only text section.


Daniel.