11 Jul, 2013

1 commit

  • Pull module updates from Rusty Russell:
    "Nothing interesting. Except the most embarrassing bugfix ever. But
    let's ignore that"

    * tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
    module: cleanup call chain.
    module: do percpu allocation after uniqueness check. No, really!
    modules: don't fail to load on unknown parameters.
    ABI: Clarify when /sys/module/MODULENAME is created
    There is no /sys/parameters
    module: don't modify argument of module_kallsyms_lookup_name()

    Linus Torvalds
     

03 Jul, 2013

2 commits


02 Jul, 2013

2 commits

  • Although parameters are supposed to be part of the kernel API, experimental
    parameters are often removed. In addition, downgrading a kernel might cause
    previously-working modules to fail to load.

    On balance, it's probably better to warn, and load the module anyway.
    This may let through a typo, but at least the logs will show it.

    Reported-by: Andy Lutomirski
    Signed-off-by: Rusty Russell

    Rusty Russell
     
  • If we pass a pointer to a const string in the form "module:symbol"
    module_kallsyms_lookup_name() will try to split the string at the colon,
    i.e., will try to modify r/o data. That will, in fact, fail on a kernel
    with enabled CONFIG_DEBUG_RODATA.

    Avoid modifying the passed string in module_kallsyms_lookup_name(),
    modify find_module_all() instead to pass it the module name length.

    Signed-off-by: Mathias Krause
    Signed-off-by: Rusty Russell

    Mathias Krause
     

17 May, 2013

2 commits


17 Apr, 2013

1 commit

  • Otherwise we get a race between unload and reload of the same module:
    the new module doesn't see the old one in the list, but then fails because
    it can't register over the still-extant entries in sysfs:

    [ 103.981925] ------------[ cut here ]------------
    [ 103.986902] WARNING: at fs/sysfs/dir.c:536 sysfs_add_one+0xab/0xd0()
    [ 103.993606] Hardware name: CrownBay Platform
    [ 103.998075] sysfs: cannot create duplicate filename '/module/pch_gbe'
    [ 104.004784] Modules linked in: pch_gbe(+) [last unloaded: pch_gbe]
    [ 104.011362] Pid: 3021, comm: modprobe Tainted: G W 3.9.0-rc5+ #5
    [ 104.018662] Call Trace:
    [ 104.021286] [] warn_slowpath_common+0x6d/0xa0
    [ 104.026933] [] ? sysfs_add_one+0xab/0xd0
    [ 104.031986] [] ? sysfs_add_one+0xab/0xd0
    [ 104.037000] [] warn_slowpath_fmt+0x2e/0x30
    [ 104.042188] [] sysfs_add_one+0xab/0xd0
    [ 104.046982] [] create_dir+0x5e/0xa0
    [ 104.051633] [] sysfs_create_dir+0x78/0xd0
    [ 104.056774] [] kobject_add_internal+0x83/0x1f0
    [ 104.062351] [] ? kvasprintf+0x46/0x60
    [ 104.067231] [] kobject_add_varg+0x2d/0x50
    [ 104.072450] [] kobject_init_and_add+0x27/0x30
    [ 104.078075] [] mod_sysfs_setup+0x80/0x540
    [ 104.083207] [] ? module_bug_finalize+0x51/0xc0
    [ 104.088720] [] load_module+0x1429/0x18b0

    We can teardown sysfs first, then to be sure, put the state in
    MODULE_STATE_UNFORMED so it's ignored while we deconstruct it.

    Reported-by: Veaceslav Falico
    Tested-by: Veaceslav Falico
    Signed-off-by: Rusty Russell

    Rusty Russell
     

20 Mar, 2013

1 commit

  • Fix symbol versioning on architectures with symbol prefixes. Although
    the build was free from warnings the actual modules still wouldn't load
    as the ____versions table contained unprefixed symbol names, which were
    being compared against the prefixed symbol names when checking the
    symbol versions.

    This is fixed by modifying modpost to add the symbol prefix to the
    ____versions table it outputs (Modules.symvers still contains unprefixed
    symbol names). The check_modstruct_version() function is also fixed as
    it checks the version of the unprefixed "module_layout" symbol which
    would no longer work.

    Signed-off-by: James Hogan
    Cc: Michal Marek
    Cc: Sam Ravnborg
    Cc: Greg Kroah-Hartman
    Cc: Jonathan Kliegman
    Signed-off-by: Rusty Russell (use VMLINUX_SYMBOL_STR)

    James Hogan
     

15 Mar, 2013

1 commit

  • We have CONFIG_SYMBOL_PREFIX, which three archs define to the string
    "_". But Al Viro broke this in "consolidate cond_syscall and
    SYSCALL_ALIAS declarations" (in linux-next), and he's not the first to
    do so.

    Using CONFIG_SYMBOL_PREFIX is awkward, since we usually just want to
    prefix it so something. So various places define helpers which are
    defined to nothing if CONFIG_SYMBOL_PREFIX isn't set:

    1) include/asm-generic/unistd.h defines __SYMBOL_PREFIX.
    2) include/asm-generic/vmlinux.lds.h defines VMLINUX_SYMBOL(sym)
    3) include/linux/export.h defines MODULE_SYMBOL_PREFIX.
    4) include/linux/kernel.h defines SYMBOL_PREFIX (which differs from #7)
    5) kernel/modsign_certificate.S defines ASM_SYMBOL(sym)
    6) scripts/modpost.c defines MODULE_SYMBOL_PREFIX
    7) scripts/Makefile.lib defines SYMBOL_PREFIX on the commandline if
    CONFIG_SYMBOL_PREFIX is set, so that we have a non-string version
    for pasting.

    (arch/h8300/include/asm/linkage.h defines SYMBOL_NAME(), too).

    Let's solve this properly:
    1) No more generic prefix, just CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX.
    2) Make linux/export.h usable from asm.
    3) Define VMLINUX_SYMBOL() and VMLINUX_SYMBOL_STR().
    4) Make everyone use them.

    Signed-off-by: Rusty Russell
    Reviewed-by: James Hogan
    Tested-by: James Hogan (metag)

    Rusty Russell
     

27 Feb, 2013

1 commit

  • Pull vfs pile (part one) from Al Viro:
    "Assorted stuff - cleaning namei.c up a bit, fixing ->d_name/->d_parent
    locking violations, etc.

    The most visible changes here are death of FS_REVAL_DOT (replaced with
    "has ->d_weak_revalidate()") and a new helper getting from struct file
    to inode. Some bits of preparation to xattr method interface changes.

    Misc patches by various people sent this cycle *and* ocfs2 fixes from
    several cycles ago that should've been upstream right then.

    PS: the next vfs pile will be xattr stuff."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (46 commits)
    saner proc_get_inode() calling conventions
    proc: avoid extra pde_put() in proc_fill_super()
    fs: change return values from -EACCES to -EPERM
    fs/exec.c: make bprm_mm_init() static
    ocfs2/dlm: use GFP_ATOMIC inside a spin_lock
    ocfs2: fix possible use-after-free with AIO
    ocfs2: Fix oops in ocfs2_fast_symlink_readpage() code path
    get_empty_filp()/alloc_file() leave both ->f_pos and ->f_version zero
    target: writev() on single-element vector is pointless
    export kernel_write(), convert open-coded instances
    fs: encode_fh: return FILEID_INVALID if invalid fid_type
    kill f_vfsmnt
    vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op
    nfsd: handle vfs_getattr errors in acl protocol
    switch vfs_getattr() to struct path
    default SET_PERSONALITY() in linux/elf.h
    ceph: prepopulate inodes only when request is aborted
    d_hash_and_lookup(): export, switch open-coded instances
    9p: switch v9fs_set_create_acl() to inode+fid, do it before d_instantiate()
    9p: split dropping the acls from v9fs_set_create_acl()
    ...

    Linus Torvalds
     

26 Feb, 2013

1 commit


21 Jan, 2013

5 commits


17 Jan, 2013

1 commit

  • If the default iosched is built as module, the kernel may deadlock
    while trying to load the iosched module on device probe if the probing
    was running off async. This is because async_synchronize_full() at
    the end of module init ends up waiting for the async job which
    initiated the module loading.

    async A modprobe

    1. finds a device
    2. registers the block device
    3. request_module(default iosched)
    4. modprobe in userland
    5. load and init module
    6. async_synchronize_full()

    Async A waits for modprobe to finish in request_module() and modprobe
    waits for async A to finish in async_synchronize_full().

    Because there's no easy to track dependency once control goes out to
    userland, implementing properly nested flushing is difficult. For
    now, make module init perform async_synchronize_full() iff module init
    has queued async jobs as suggested by Linus.

    This avoids the described deadlock because iosched module doesn't use
    async and thus wouldn't invoke async_synchronize_full(). This is
    hacky and incomplete. It will deadlock if async module loading nests;
    however, this works around the known problem case and seems to be the
    best of bad options.

    For more details, please refer to the following thread.

    http://thread.gmane.org/gmane.linux.kernel/1420814

    Signed-off-by: Tejun Heo
    Reported-by: Alex Riesen
    Tested-by: Ming Lei
    Tested-by: Alex Riesen
    Cc: Arjan van de Ven
    Cc: Jens Axboe
    Signed-off-by: Linus Torvalds

    Tejun Heo
     

12 Jan, 2013

2 commits

  • Prarit's excellent bug report:
    > In recent Fedora releases (F17 & F18) some users have reported seeing
    > messages similar to
    >
    > [ 15.478160] kvm: Could not allocate 304 bytes percpu data
    > [ 15.478174] PERCPU: allocation failed, size=304 align=32, alloc from
    > reserved chunk failed
    >
    > during system boot. In some cases, users have also reported seeing this
    > message along with a failed load of other modules.
    >
    > What is happening is systemd is loading an instance of the kvm module for
    > each cpu found (see commit e9bda3b). When the module load occurs the kernel
    > currently allocates the modules percpu data area prior to checking to see
    > if the module is already loaded or is in the process of being loaded. If
    > the module is already loaded, or finishes load, the module loading code
    > releases the current instance's module's percpu data.

    Now we have a new state MODULE_STATE_UNFORMED, we can insert the
    module into the list (and thus guarantee its uniqueness) before we
    allocate the per-cpu region.

    Reported-by: Prarit Bhargava
    Signed-off-by: Rusty Russell
    Tested-by: Prarit Bhargava

    Rusty Russell
     
  • You should never look at such a module, so it's excised from all paths
    which traverse the modules list.

    We add the state at the end, to avoid gratuitous ABI break (ksplice).

    Signed-off-by: Rusty Russell

    Rusty Russell
     

03 Jan, 2013

1 commit


19 Dec, 2012

1 commit

  • Pull module update from Rusty Russell:
    "Nothing all that exciting; a new module-from-fd syscall for those who
    want to verify the source of the module (ChromeOS) and/or use standard
    IMA on it or other security hooks."

    * tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
    MODSIGN: Fix kbuild output when using default extra_certificates
    MODSIGN: Avoid using .incbin in C source
    modules: don't hand 0 to vmalloc.
    module: Remove a extra null character at the top of module->strtab.
    ASN.1: Use the ASN1_LONG_TAG and ASN1_INDEFINITE_LENGTH constants
    ASN.1: Define indefinite length marker constant
    moduleparam: use __UNIQUE_ID()
    __UNIQUE_ID()
    MODSIGN: Add modules_sign make target
    powerpc: add finit_module syscall.
    ima: support new kernel module syscall
    add finit_module syscall to asm-generic
    ARM: add finit_module syscall to ARM
    security: introduce kernel_module_from_file hook
    module: add flags arg to sys_finit_module()
    module: add syscall to load module from fd

    Linus Torvalds
     

18 Dec, 2012

1 commit


14 Dec, 2012

5 commits

  • In commit d0a21265dfb5fa8a David Rientjes unified various archs'
    module_alloc implementation (including x86) and removed the graduitous
    shortcut for size == 0.

    Then, in commit de7d2b567d040e3b, Joe Perches added a warning for
    zero-length vmallocs, which can happen without kallsyms on modules
    with no init sections (eg. zlib_deflate).

    Fix this once and for all; the module code has to handle zero length
    anyway, so get it right at the caller and remove the now-gratuitous
    checks within the arch-specific module_alloc implementations.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42608
    Reported-by: Conrad Kostecki
    Cc: David Rientjes
    Cc: Joe Perches
    Signed-off-by: Rusty Russell

    Rusty Russell
     
  • There is a extra null character('\0') at the top of module->strtab for
    each module. Commit 59ef28b introduced this bug and this patch fixes it.

    Live dump log of the current linus git kernel(HEAD is 2844a4870):
    ============================================================================
    crash> mod | grep loop
    ffffffffa01db0a0 loop 16689 (not loaded) [CONFIG_KALLSYMS]
    crash> module.core_symtab ffffffffa01db0a0
    core_symtab = 0xffffffffa01db320crash> rd 0xffffffffa01db320 12
    ffffffffa01db320: 0000005500000001 0000000000000000 ....U...........
    ffffffffa01db330: 0000000000000000 0002007400000002 ............t...
    ffffffffa01db340: ffffffffa01d8000 0000000000000038 ........8.......
    ffffffffa01db350: 001a00640000000e ffffffffa01daeb0 ....d...........
    ffffffffa01db360: 00000000000000a0 0002007400000019 ............t...
    ffffffffa01db370: ffffffffa01d8068 000000000000001b h...............
    crash> module.core_strtab ffffffffa01db0a0
    core_strtab = 0xffffffffa01dbb30 ""
    crash> rd 0xffffffffa01dbb30 4
    ffffffffa01dbb30: 615f70616d6b0000 66780063696d6f74 ..kmap_atomic.xf
    ffffffffa01dbb40: 73636e75665f7265 72665f646e696600 er_funcs.find_fr
    ============================================================================

    We expect Just first one byte of '\0', but actually first two bytes
    are '\0'. Here is The relationship between symtab and strtab.

    symtab_idx strtab_idx symbol
    -----------------------------------------------
    0 0x1 "\0" # startab_idx should be 0
    1 0x2 "kmap_atomic"
    2 0xe "xfer_funcs"
    3 0x19 "find_fr..."

    By applying this patch, it becomes as follows.

    symtab_idx strtab_idx symbol
    -----------------------------------------------
    0 0x0 "\0" # extra byte is removed
    1 0x1 "kmap_atomic"
    2 0xd "xfer_funcs"
    3 0x18 "find_fr..."

    Signed-off-by: Satoru Takeuchi
    Cc: Masaki Kimura
    Cc: Rusty Russell
    Cc: Greg Kroah-Hartman
    Signed-off-by: Rusty Russell

    Satoru Takeuchi
     
  • Now that kernel module origins can be reasoned about, provide a hook to
    the LSMs to make policy decisions about the module file. This will let
    Chrome OS enforce that loadable kernel modules can only come from its
    read-only hash-verified root filesystem. Other LSMs can, for example,
    read extended attributes for signatures, etc.

    Signed-off-by: Kees Cook
    Acked-by: Serge E. Hallyn
    Acked-by: Eric Paris
    Acked-by: Mimi Zohar
    Acked-by: James Morris
    Signed-off-by: Rusty Russell

    Kees Cook
     
  • Thanks to Michael Kerrisk for keeping us honest. These flags are actually
    useful for eliminating the only case where kmod has to mangle a module's
    internals: for overriding module versioning.

    Signed-off-by: Rusty Russell
    Acked-by: Lucas De Marchi
    Acked-by: Kees Cook

    Rusty Russell
     
  • As part of the effort to create a stronger boundary between root and
    kernel, Chrome OS wants to be able to enforce that kernel modules are
    being loaded only from our read-only crypto-hash verified (dm_verity)
    root filesystem. Since the init_module syscall hands the kernel a module
    as a memory blob, no reasoning about the origin of the blob can be made.

    Earlier proposals for appending signatures to kernel modules would not be
    useful in Chrome OS, since it would involve adding an additional set of
    keys to our kernel and builds for no good reason: we already trust the
    contents of our root filesystem. We don't need to verify those kernel
    modules a second time. Having to do signature checking on module loading
    would slow us down and be redundant. All we need to know is where a
    module is coming from so we can say yes/no to loading it.

    If a file descriptor is used as the source of a kernel module, many more
    things can be reasoned about. In Chrome OS's case, we could enforce that
    the module lives on the filesystem we expect it to live on. In the case
    of IMA (or other LSMs), it would be possible, for example, to examine
    extended attributes that may contain signatures over the contents of
    the module.

    This introduces a new syscall (on x86), similar to init_module, that has
    only two arguments. The first argument is used as a file descriptor to
    the module and the second argument is a pointer to the NULL terminated
    string of module arguments.

    Signed-off-by: Kees Cook
    Cc: Andrew Morton
    Signed-off-by: Rusty Russell (merge fixes)

    Kees Cook
     

31 Oct, 2012

1 commit

  • Masaki found and patched a kallsyms issue: the last symbol in a
    module's symtab wasn't transferred. This is because we manually copy
    the zero'th entry (which is always empty) then copy the rest in a loop
    starting at 1, though from src[0]. His fix was minimal, I prefer to
    rewrite the loops in more standard form.

    There are two loops: one to get the size, and one to copy. Make these
    identical: always count entry 0 and any defined symbol in an allocated
    non-init section.

    This bug exists since the following commit was introduced.
    module: reduce symbol table for loaded modules (v2)
    commit: 4a4962263f07d14660849ec134ee42b63e95ea9a

    LKML: http://lkml.org/lkml/2012/10/24/27
    Reported-by: Masaki Kimura
    Cc: stable@kernel.org

    Rusty Russell
     

20 Oct, 2012

1 commit

  • Emit the magic string that indicates a module has a signature after the
    signature data instead of before it. This allows module_sig_check() to
    be made simpler and faster by the elimination of the search for the
    magic string. Instead we just need to do a single memcmp().

    This works because at the end of the signature data there is the
    fixed-length signature information block. This block then falls
    immediately prior to the magic number.

    From the contents of the information block, it is trivial to calculate
    the size of the signature data and thus the size of the actual module
    data.

    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    David Howells
     

10 Oct, 2012

2 commits

  • If we're in FIPS mode, we should panic if we fail to verify the signature on a
    module or we're asked to load an unsigned module in signature enforcing mode.
    Possibly FIPS mode should automatically enable enforcing mode.

    Signed-off-by: David Howells
    Signed-off-by: Rusty Russell

    David Howells
     
  • We do a very simple search for a particular string appended to the module
    (which is cache-hot and about to be SHA'd anyway). There's both a config
    option and a boot parameter which control whether we accept or fail with
    unsigned modules and modules that are signed with an unknown key.

    If module signing is enabled, the kernel will be tainted if a module is
    loaded that is unsigned or has a signature for which we don't have the
    key.

    (Useful feedback and tweaks by David Howells )

    Signed-off-by: Rusty Russell
    Signed-off-by: David Howells
    Signed-off-by: Rusty Russell

    Rusty Russell
     

28 Sep, 2012

4 commits

  • The original module-init-tools module loader used a fnctl lock on the
    .ko file to avoid attempts to simultaneously load a module.
    Unfortunately, you can't get an exclusive fcntl lock on a read-only
    fd, making this not work for read-only mounted filesystems.
    module-init-tools has a hacky sleep-and-loop for this now.

    It's not that hard to wait in the kernel, and only return -EEXIST once
    the first module has finished loading (or continue loading the module
    if the first one failed to initialize for some reason). It's also
    consistent with what we do for dependent modules which are still loading.

    Suggested-by: Lucas De Marchi
    Signed-off-by: Rusty Russell

    Rusty Russell
     
  • We use resolve_symbol_wait(), which blocks if the module containing
    the symbol is still loading. However:

    1) The module_wq we use is only woken after calling the modules' init
    function, but there are other failure paths after the module is
    placed in the linked list where we need to do the same thing.

    2) wake_up() only wakes one waiter, and our waitqueue is shared by all
    modules, so we need to wake them all.

    3) wake_up_all() doesn't imply a memory barrier: I feel happier calling
    it after we've grabbed and dropped the module_mutex, not just after
    the state assignment.

    Signed-off-by: Rusty Russell

    Rusty Russell
     
  • Use the mapping of Elf_[SPE]hdr, Elf_Addr, Elf_Sym, Elf_Dyn, Elf_Rel/Rela,
    ELF_R_TYPE() and ELF_R_SYM() to either the 32-bit version or the 64-bit version
    into asm-generic/module.h for all arches bar MIPS.

    Also, use the generic definition mod_arch_specific where possible.

    To this end, I've defined three new config bools:

    (*) HAVE_MOD_ARCH_SPECIFIC

    Arches define this if they don't want to use the empty generic
    mod_arch_specific struct.

    (*) MODULES_USE_ELF_RELA

    Arches define this if their modules can contain RELA records. This causes
    the Elf_Rela mapping to be emitted and allows apply_relocate_add() to be
    defined by the arch rather than have the core emit an error message.

    (*) MODULES_USE_ELF_REL

    Arches define this if their modules can contain REL records. This causes
    the Elf_Rel mapping to be emitted and allows apply_relocate() to be
    defined by the arch rather than have the core emit an error message.

    Note that it is possible to allow both REL and RELA records: m68k and mips are
    two arches that do this.

    With this, some arch asm/module.h files can be deleted entirely and replaced
    with a generic-y marker in the arch Kbuild file.

    Additionally, I have removed the bits from m32r and score that handle the
    unsupported type of relocation record as that's now handled centrally.

    Signed-off-by: David Howells
    Acked-by: Sam Ravnborg
    Signed-off-by: Rusty Russell

    David Howells
     
  • Cloudlinux have a product called lve that includes a kernel module. This
    was previously GPLed but is now under a proprietary license, but the
    module continues to declare MODULE_LICENSE("GPL") and makes use of some
    EXPORT_SYMBOL_GPL symbols. Forcibly taint it in order to avoid this.

    Signed-off-by: Matthew Garrett
    Cc: Alex Lyashkov
    Signed-off-by: Rusty Russell
    Cc: stable@kernel.org

    Matthew Garrett
     

23 May, 2012

1 commit


01 May, 2012

1 commit

  • This introduces a fake module param $module.dyndbg. Its based upon
    Thomas Renninger's $module.ddebug boot-time debugging patch from
    https://lkml.org/lkml/2010/9/15/397

    The 'fake' module parameter is provided for all modules, whether or
    not they need it. It is not explicitly added to each module, but is
    implemented in callbacks invoked from parse_args.

    For builtin modules, dynamic_debug_init() now directly calls
    parse_args(..., &ddebug_dyndbg_boot_params_cb), to process the params
    undeclared in the modules, just after the ddebug tables are processed.

    While its slightly weird to reprocess the boot params, parse_args() is
    already called repeatedly by do_initcall_levels(). More importantly,
    the dyndbg queries (given in ddebug_query or dyndbg params) cannot be
    activated until after the ddebug tables are ready, and reusing
    parse_args is cleaner than doing an ad-hoc parse. This reparse would
    break options like inc_verbosity, but they probably should be params,
    like verbosity=3.

    ddebug_dyndbg_boot_params_cb() handles both bare dyndbg (aka:
    ddebug_query) and module-prefixed dyndbg params, and ignores all other
    parameters. For example, the following will enable pr_debug()s in 4
    builtin modules, in the order given:

    dyndbg="module params +p; module aio +p" module.dyndbg=+p pci.dyndbg

    For loadable modules, parse_args() in load_module() calls
    ddebug_dyndbg_module_params_cb(). This handles bare dyndbg params as
    passed from modprobe, and errors on other unknown params.

    Note that modprobe reads /proc/cmdline, so "modprobe foo" grabs all
    foo.params, strips the "foo.", and passes these to the kernel.
    ddebug_dyndbg_module_params_cb() is again called for the unknown
    params; it handles dyndbg, and errors on others. The "doing" arg
    added previously contains the module name.

    For non CONFIG_DYNAMIC_DEBUG builds, the stub function accepts
    and ignores $module.dyndbg params, other unknowns get -ENOENT.

    If no param value is given (as in pci.dyndbg example above), "+p" is
    assumed, which enables all pr_debug callsites in the module.

    The dyndbg fake parameter is not shown in /sys/module/*/parameters,
    thus it does not use any resources. Changes to it are made via the
    control file.

    Also change pr_info in ddebug_exec_queries to vpr_info,
    no need to see it all the time.

    Signed-off-by: Jim Cromie
    CC: Thomas Renninger
    CC: Rusty Russell
    Acked-by: Jason Baron
    Signed-off-by: Greg Kroah-Hartman

    Jim Cromie
     

26 Mar, 2012

2 commits

  • Module size was limited to 64MB, this was legacy limitation due to vmalloc()
    which was removed a while ago.

    Limiting module size to 64MB is both pointless and affects real world use
    cases.

    Cc: Tim Abbott
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin
    Signed-off-by: Rusty Russell

    Sasha Levin
     
  • With the preempt, tracepoint and everything, it's getting a bit
    chubby. For an Ubuntu-based config:

    Before:
    $ size -t `find * -name '*.ko'` | grep TOTAL
    56199906 3870760 1606616 61677282 3ad1ee2 (TOTALS)
    $ size vmlinux
    text data bss dec hex filename
    8509342 850368 3358720 12718430 c2115e vmlinux

    After:
    $ size -t `find * -name '*.ko'` | grep TOTAL
    56183760 3867892 1606616 61658268 3acd49c (TOTALS)
    $ size vmlinux
    text data bss dec hex filename
    8501842 849088 3358720 12709650 c1ef12 vmlinux

    Signed-off-by: Steven Rostedt
    Acked-by: Ingo Molnar
    Signed-off-by: Rusty Russell (made all out-of-line)

    Steven Rostedt