Messages in this thread | | | Date | Mon, 4 Jan 2016 11:15:44 -0800 | Subject | Re: [PATCH] dma-debug: Switch check from _text to _stext | From | Kees Cook <> |
| |
On Mon, Jan 4, 2016 at 10:48 AM, Laura Abbott <labbott@fedoraproject.org> wrote: > From include/asm-generic/sections.h: > > /* > * Usage guidelines: > * _text, _data: architecture specific, don't use them in > * arch-independent code > * [_stext, _etext]: contains .text.* sections, may also contain > * .rodata.* > * and/or .init.* sections > > _text is not guaranteed across architectures. Architectures such as ARM > may reuse parts which are not actually text and erroneously trigger a bug. > Switch to using _stext which is guaranteed to contain text sections. > > Signed-off-by: Laura Abbott <labbott@fedoraproject.org>
Reviewed-by: Kees Cook <keescook@chromium.org>
-Kees
> --- > Came out of https://lkml.kernel.org/g/<567B1176.4000106@redhat.com> > --- > lib/dma-debug.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/lib/dma-debug.c b/lib/dma-debug.c > index d34bd24..4a1515f 100644 > --- a/lib/dma-debug.c > +++ b/lib/dma-debug.c > @@ -1181,7 +1181,7 @@ static inline bool overlap(void *addr, unsigned long len, void *start, void *end > > static void check_for_illegal_area(struct device *dev, void *addr, unsigned long len) > { > - if (overlap(addr, len, _text, _etext) || > + if (overlap(addr, len, _stext, _etext) || > overlap(addr, len, __start_rodata, __end_rodata)) > err_printk(dev, NULL, "DMA-API: device driver maps memory from kernel text or rodata [addr=%p] [len=%lu]\n", addr, len); > } > -- > 2.5.0 >
-- Kees Cook Chrome OS & Brillo Security
| |