Messages in this thread | | | Date | Mon, 10 Feb 2014 11:33:58 -0800 | From | Andy Lutomirski <> | Subject | Re: [PATCH 1/2] mm/vmalloc: export is_vmalloc_or_module_addr |
| |
On 02/08/2014 02:24 PM, Linus Torvalds wrote: > On Sat, Feb 8, 2014 at 12:44 PM, Richard Yao <ryao@gentoo.org> wrote: >> >> 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
| |