Re: [PATCH 1/2] mm/vmalloc: export is_vmalloc_or_module_addr
From: Andy Lutomirski <luto@amacapital.net>
Date: 2014-02-10 19:34:05
Also in:
lkml
On 02/08/2014 02:24 PM, Linus Torvalds wrote:
On Sat, Feb 8, 2014 at 12:44 PM, Richard Yao [off-list ref] wrote:quoted
However, is_vmalloc_addr() only applies to the vmalloc region. While all architectures load kernel modules into virtual memory (to my knowledge), some architectures do not load them into the vmalloc region.So? People shouldn't do IO to module data, so who cares if something is a module address or not? The thing is, even module *loading* doesn't do IO to the magic module addresses - it loads the module data into regular vmalloc space, and then copies it into the final location separately. And no module should ever do any IO on random static data (and certainly not on code). So there is _zero_ reason for a driver or a filesystem to use is_vmalloc_or_module_addr(). It's just not a valid question to ask. If somebody uses module data/code addresses, we're *better* off with a oops or other nasty behavior than to try to make it "work".
I agree that reading to module space is awful, but is it obviously
terrible for a module to do this:
static const char header[] = {...};
kernel_write(file, header, sizeof(header), 0);
The current nasty behavior is doing the I/O to the wrong place if the
appropriate CONFIG_DEBUG option isn't set. That IMO sucks.
--Andy