20 Feb, 2008

1 commit

  • XXXINIT_TO_INIT and XXXEXIT_TO_EXIT warnings use the reversed symbol name order
    in the suggestion, e.g.:

    WARNING: vmlinux.o(.meminit.text+0x36c): Section mismatch in reference from the function free_area_init_core() to the function .init.text:setup_usemap()
    The function __meminit free_area_init_core() references
    a function __init setup_usemap().
    If free_area_init_core is only used by setup_usemap then
    annotate free_area_init_core with a matching annotation.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Sam Ravnborg

    Geert Uytterhoeven
     

14 Feb, 2008

1 commit

  • This adds some new magic in the MODPOST phase for CONFIG_MARKERS. Analogous
    to the Module.symvers file, the build will now write a Module.markers file
    when CONFIG_MARKERS=y is set. This file lists the name, defining module, and
    format string of each marker, separated by \t characters. This simple text
    file can be used by offline build procedures for instrumentation code,
    analogous to how System.map and Module.symvers can be useful to have for
    kernels other than the one you are running right now.

    The strings are made easy to extract by having the __trace_mark macro define
    the name and format together in a single array called __mstrtab_* in the
    __markers_strings section. This is straightforward and reliable as long as
    the marker structs are always defined by this macro. It is an unreasonable
    amount of hairy work to extract the string pointers from the __markers section
    structs, which entails handling a relocation type for every machine under the
    sun.

    Mathieu :
    - Ran through checkpatch.pl

    Signed-off-by: Roland McGrath
    Signed-off-by: Mathieu Desnoyers
    Cc: David Smith
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mathieu Desnoyers
     

09 Feb, 2008

2 commits


03 Feb, 2008

2 commits


02 Feb, 2008

1 commit

  • Some crazy devices in the wild have a vendor id of 0x0000. If we try to
    add a module alias with this id, we just can't do it due to a check in
    the file2alias.c file. Change the test to verify that both the vendor
    and product ids are 0x0000 to show a real "blank" module alias.

    Note, the module-init-tools package also needs to be changed to properly
    generate the depmod tables.

    Cc: Janusz
    Cc: stable
    Cc: Jon Masters
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

29 Jan, 2008

16 commits

  • If there is a mixture of specifying sections for code in gcc
    and assembler then if the assembler code do not add
    the "ax" flags the linker will see this as two different sections
    and generate unique sections for each. ld does so by adding a dot
    and a number.
    Teach modpost to warn if a section shows up that match this
    pattern - but do this only for non-debug sections.

    It will result in warnings like this:

    WARNING: vmlinux.o (.sched.text.1): unexpected section name.
    The (.[number]+) following section name are ld generated and not expected.
    Did you forget to use "ax"/"aw" in a .S file?
    Note that for example contains
    section definitions for use in .S files.

    All warnings seen with a defconfig build for:
    x86 (32+64bit) and sparc64 has been fixed (via respective maintainers).

    arm, powerpc (64 bit), s390 (32 bit), ia64, alpha, sh4 checked - no
    warnings seen with a defconfig build.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • If the config option CONFIG_SECTION_MISMATCH is not set and
    we see a Section mismatch present the following to the user:

    modpost: Found 1 section mismatch(es).
    To see additional details select "Enable full Section mismatch analysis"
    in the Kernel Hacking menu (CONFIG_SECTION_MISMATCH).

    If the option CONFIG_SECTION_MISMATCH is selected
    then be verbose in the Section mismatch reporting from mdopost.
    Sample outputs:

    WARNING: o-x86_64/vmlinux.o(.text+0x7396): Section mismatch in reference from the function discover_ebda() to the variable .init.data:ebda_addr
    The function discover_ebda() references
    the variable __initdata ebda_addr.
    This is often because discover_ebda lacks a __initdata
    annotation or the annotation of ebda_addr is wrong.

    WARNING: o-x86_64/vmlinux.o(.data+0x74d58): Section mismatch in reference from the variable pci_serial_quirks to the function .devexit.text:pci_plx9050_exit()
    The variable pci_serial_quirks references
    the function __devexit pci_plx9050_exit()
    If the reference is valid then annotate the
    variable with __exit* (see linux/init.h) or name the variable:
    *driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console,

    WARNING: o-x86_64/vmlinux.o(__ksymtab+0x630): Section mismatch in reference from the variable __ksymtab_arch_register_cpu to the function .cpuinit.text:arch_register_cpu()
    The symbol arch_register_cpu is exported and annotated __cpuinit
    Fix this by removing the __cpuinit annotation of arch_register_cpu or drop the export.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • Remove the deprecated __attribute_used__.

    [Introduce __section in a few places to silence checkpatch /sam]

    Signed-off-by: Adrian Bunk
    Signed-off-by: Sam Ravnborg

    Adrian Bunk
     
  • Refactor code so the warning report function
    does nothing else than reporting warnings.
    As a side effect some other code paths were cleaned
    up by this.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • Introducing helpers to retreive symbol and section
    names cleaned up the code a bit.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • The typical layout is now:
    WARNING: vmlinux.o(.text+0x372ec): Section mismatch: reference to .devinit.text:pci_scan_one_pbm in 'psycho_scan_bus'

    This is first step towards more readable warnings.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • Introducing separate sections for __dev* (HOTPLUG),
    __cpu* (HOTPLUG_CPU) and __mem* (MEMORY_HOTPLUG)
    allows us to do a much more reliable Section mismatch
    check in modpost. We are no longer dependent on the actual
    configuration of for example HOTPLUG.

    This has the effect that all users see much more
    Section mismatch warnings than before because they
    were almost all hidden when HOTPLUG was enabled.
    The advantage of this is that when building a piece
    of code then it is much more likely that the Section
    mismatch errors are spotted and the warnings will be
    felt less random of nature.

    Signed-off-by: Sam Ravnborg
    Cc: Greg KH
    Cc: Randy Dunlap
    Cc: Adrian Bunk

    Sam Ravnborg
     
  • Now that match() is introduced use it consistently so
    we can share the section name definitions.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • Change the logic in modpost so we identify all the
    bad combinations of sections that refer to other
    sections.
    Compared to the previous approach we are much less
    dependent on knowledge of what additional sections
    the tool chain uses and thus we can keep the false
    positives low.

    The implmentation is changed to use a table based
    lookup and we now check all combinations in first
    pass so we no longer need separate passes for init
    and exit sections.

    Tested that the same warnings are generated for
    an allyesconfig build without CONFIG_HOTPLUG.

    Signed-off-by: Sam Ravnborg
    Cc: Randy Dunlap
    Cc: Adrian Bunk

    Sam Ravnborg
     
  • Split a too long function up in smaller bits to make
    prgram logic easier to follow.
    A few related changes done due to parameter
    changes.

    No functional changes.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • The relocation record sometimes contained an address
    which was not an exactly match for a symbol.

    Implment some simple logic such that if there
    is a symbol within 20 bytes of the address contained
    in the relocation record then print the name of this
    symbol.

    With this change modpost could find symbol names
    for the remaining .init.text symbols in my
    allyesconfig build for x86_64.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • It is very convinient to say:
    scripts/mod/modpost mm/built-in.o

    to check if any section mismatch errors occured
    in mm/ (as an example).
    Fix it so this is possible again.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • akpm complained about overly long lines in modpost.c and
    when started additional style issues were fixed:

    o Updated my copyright
    o Removed unneeded {}
    o Drop assignments in if ()
    o Spaces around operators
    o Break long lines
    o locate * near variable not type
    o Fix a format specifier for sizeof()
    o Corrected placement of '{' and '}'
    o spaces to tabs (but use tabs only for indention)

    modpost.c is not checkpatch clean. Readability were favoured
    on top of checkpatch compliance.
    But checkpatch were used to find additional stuff to clean up.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • When passing an file name > 1k the stack could be overflowed.
    Not really a security issue, but still better plugged.
    Signed-off-by: Andi Kleen
    Signed-off-by: Sam Ravnborg

    Andi Kleen
     
  • Fix wrong format strings in modpost exposed by the previous patch.
    Including one missing argument -- some random data was printed instead.
    Signed-off-by: Andi Kleen
    Signed-off-by: Sam Ravnborg

    Andi Kleen
     
  • This way gcc can warn for wrong format strings
    Signed-off-by: Andi Kleen
    Signed-off-by: Sam Ravnborg

    Andi Kleen
     

23 Oct, 2007

1 commit


18 Oct, 2007

1 commit

  • When part of build an external module tree, modpost first reads in the
    kernel's and then the external tree's Module.symvers files. From these files
    it establishes a symbol => module mapping. When it later reads in each module
    built and processes the symbols it finds, it discovers the symbol=>module
    mapping from Module.symvers and leaves it as it is.

    The problem comes with a module has been re-named or a symbol has moved from
    one module to another, since the Module.symvers file was generated. modpost
    does not update the symbol=>module mapping when it finds the new location of
    the symbol when scanning the newly built modules. This results in the module
    containing incorrect dependency information and the new Module.symvers file
    written by modpost will also contain the incorrect mappings, perpetuating the
    problem to the next build, and so on.

    When building the out of kernel development tree for kernel subsystem, like
    v4l-dvb or ALSA, deleting the external Module.symvers file before building
    (which the kernel build system doesn't do and shouldn't be necessary anyway),
    won't fix the problem. modpost still reads the kernel's Module.symvers, and
    since we a building a kernel subsystem, it will define the same symbols as the
    external modules.

    Signed-off-by: Trent Piepho
    Signed-off-by: Sam Ravnborg

    Trent Piepho
     

17 Oct, 2007

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild: (40 commits)
    kbuild: introduce ccflags-y, asflags-y and ldflags-y
    kbuild: enable 'make CPPFLAGS=...' to add additional options to CPP
    kbuild: enable use of AFLAGS and CFLAGS on commandline
    kbuild: enable 'make AFLAGS=...' to add additional options to AS
    kbuild: fix AFLAGS use in h8300 and m68knommu
    kbuild: check for wrong use of CFLAGS
    kbuild: enable 'make CFLAGS=...' to add additional options to CC
    kbuild: fix up CFLAGS usage
    kbuild: make modpost detect unterminated device id lists
    kbuild: call export_report from the Makefile
    kbuild: move Kai Germaschewski to CREDITS
    kconfig/menuconfig: distinguish between selected-by-another options and comments
    kconfig: tristate choices with mixed tristate and boolean values
    include/linux/Kbuild: remove duplicate entries
    kbuild: kill backward compatibility checks
    kbuild: kill EXTRA_ARFLAGS
    kbuild: fix documentation in makefiles.txt
    kbuild: call make once for all targets when O=.. is used
    kbuild: pass -g to assembler under CONFIG_DEBUG_INFO
    kbuild: update _shipped files for kconfig syntax cleanup
    ...

    Fix up conflicts in arch/um/sys-{x86_64,i386}/Makefile manually.

    Linus Torvalds
     

14 Oct, 2007

1 commit

  • I2C devices do not have any form of ID as PCI or USB devices have.
    No driver uses "MODULE_DEVICE_TABLE(i2c, ...)" because it doesn't
    make sense. So we can get rid of struct i2c_device_id and the
    associated support code.

    Signed-off-by: Jean Delvare
    Cc: Greg KH

    Jean Delvare
     

13 Oct, 2007

3 commits

  • Cause modpost to fail if any device id lists are incorrectly terminated,
    after reporting the offender.
    Improved reporting by akpm

    Signed-off-by: Kees Cook
    Cc: Greg KH
    Cc: Alexey Dobriyan
    Cc: Jeff Garzik
    Cc: Ben Collins
    Cc: Michael Wu
    Cc: Rusty Russell
    Signed-off-by: Andrew Morton
    Signed-off-by: Sam Ravnborg

    Kees Cook
     
  • Fix modpost segfault.

    Before:
    -------
    ynezz@ntbk:~/linux-2.6.git$ scripts/mod/modpost vmlinux ath_pci.o
    Segmentation fault

    After:
    ------
    ynezz@ntbk:~/linux-2.6.git$ scripts/mod/modpost vmlinux ath_pci.o
    FATAL: section header offset=815726848 in file 'ath_pci.o' is bigger then filesize=153968

    Sam: This seems to warn for a binutils issue. Anyway modpost should not
    segfault.

    Signed-off-by: Petr Stetiar
    Signed-off-by: Sam Ravnborg

    Petr Stetiar
     
  • The Elfnn_Section is not available on all platforms,
    noteworthy are cygwin.
    Use the safe replacement _Half.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     

12 Oct, 2007

1 commit

  • * 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (867 commits)
    [SKY2]: status polling loop (post merge)
    [NET]: Fix NAPI completion handling in some drivers.
    [TCP]: Limit processing lost_retrans loop to work-to-do cases
    [TCP]: Fix lost_retrans loop vs fastpath problems
    [TCP]: No need to re-count fackets_out/sacked_out at RTO
    [TCP]: Extract tcp_match_queue_to_sack from sacktag code
    [TCP]: Kill almost unused variable pcount from sacktag
    [TCP]: Fix mark_head_lost to ignore R-bit when trying to mark L
    [TCP]: Add bytes_acked (ABC) clearing to FRTO too
    [IPv6]: Update setsockopt(IPV6_MULTICAST_IF) to support RFC 3493, try2
    [NETFILTER]: x_tables: add missing ip6t_modulename aliases
    [NETFILTER]: nf_conntrack_tcp: fix connection reopening
    [QETH]: fix qeth_main.c
    [NETLINK]: fib_frontend build fixes
    [IPv6]: Export userland ND options through netlink (RDNSS support)
    [9P]: build fix with !CONFIG_SYSCTL
    [NET]: Fix dev_put() and dev_hold() comments
    [NET]: make netlink user -> kernel interface synchronious
    [NET]: unify netlink kernel socket recognition
    [NET]: cleanup 3rd argument in netlink_sendskb
    ...

    Fix up conflicts manually in Documentation/feature-removal-schedule.txt
    and my new least favourite crap, the "mod_devicetable" support in the
    files include/linux/mod_devicetable.h and scripts/mod/file2alias.c.

    (The latter files seem to be explicitly _designed_ to get conflicts when
    different subsystems work with them - that have an absolutely horrid
    lack of subsystem separation!)

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

11 Oct, 2007

2 commits

  • With the net namespaces many code leaved the __init section,
    thus making the kernel occupy more memory than it did before.
    Since we have a config option that prohibits the namespace
    creation, the functions that initialize/finalize some netns
    stuff are simply not needed and can be freed after the boot.

    Currently, this is almost not noticeable, since few calls
    are no longer in __init, but when the namespaces will be
    merged it will be possible to free more code. I propose to
    use the __net_init, __net_exit and __net_initdata "attributes"
    for functions/variables that are not used if the CONFIG_NET_NS
    is not set to save more space in memory.

    The exiting functions cannot just reside in the __exit section,
    as noticed by David, since the init section will have
    references on it and the compilation will fail due to modpost
    checks. These references can exist, since the init namespace
    never dies and the exit callbacks are never called. So I
    introduce the __exit_refok attribute just like it is already
    done with the __init_refok.

    Signed-off-by: Pavel Emelyanov
    Signed-off-by: David S. Miller

    Pavel Emelyanov
     
  • SSB is an SoC bus used in a number of embedded devices. The most
    well-known of these devices is probably the Linksys WRT54G, but there
    are others as well. The bus is also used internally on the BCM43xx
    and BCM44xx devices from Broadcom.

    This patch also includes support for SSB ID tables in modules, so
    that SSB drivers can be loaded automatically.

    Signed-off-by: Michael Buesch
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Michael Buesch
     

24 Sep, 2007

1 commit


01 Aug, 2007

1 commit

  • This is needed on MIPS where the same mechanism as get_user() is used to
    intercept bus error exceptions for some hardware probes. Without this
    patch modpost will throw spurious warnings:

    LD vmlinux
    SYSMAP System.map
    SYSMAP .tmp_System.map
    MODPOST vmlinux
    WARNING: arch/mips/sgi-ip22/built-in.o(__dbe_table+0x0): Section mismatch: reference to .init.text:

    Signed-off-by: Ralf Baechle
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ralf Baechle
     

26 Jul, 2007

4 commits

  • The Xtensa architecture places literal pools in sections separate
    from the instructions. The corresponsing text sections, therefore,
    reference the .literal section, and we have to suppress those
    warnings.

    The naming convention defines the name for a literal
    section as .SECTION.literal, unless .SECTION is .text. In that case
    the name is only .literal. Using strncmp() instead of strcmp()
    to compare the from-section with .SECTION.init.refok in pattern 0
    should not cause any regressions for other architectures.

    We also need to suppress warnings for two informational
    sections (.xt.lit and .xt.prop) used by the Xtensa architecture.

    Signed-off-by: Chris Zankel
    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • In the whitelist function of modpost now use the same
    check to identify init_section as in other places of modpost.
    This has the effect that we now recognize sections named
    .init.text.19 as init sections and we no longer warn
    when we see these.

    At the same time make surrounding code readable by dropping
    use of temporary flags.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • This is a preparational patch that just move
    two functions and add one (for now unused) function.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • We already check and warn about section mismatches from vmlinux
    (build as vmlinux.o) during first pass so skip the checks
    during the 2nd pass where we process modules.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     

24 Jul, 2007

1 commit

  • Modify modpost (file2alias.c) to add acpi*:XYZ0001: alias in modules.alias
    like:
    grep acpi /lib/modules/2.6.22-rc4-default/modules.alias
    alias acpi*:SNY5001:* sony_laptop
    alias acpi*:SNY6001:* sony_laptop
    for e.g. the sony_laptop module.
    This module matches against all ACPI devices with a HID or CID of SNY5001
    or SNY6001

    Export an uevent and modalias sysfs file containing the string:
    [MODALIAS=]acpi:PNP0C0C:
    additional CIDs are concatenated at the end.

    Signed-off-by: Thomas Renninger
    Signed-off-by: Kay Sievers
    Signed-off-by: Len Brown

    Thomas Renninger