lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Sun, 3 Oct 2010 03:29:43 +0000
From:	Ævar Arnfjörð Bjarmason <avarab@...il.com>
To:	Stephen Hemminger <shemminger@...tta.com>
Cc:	Andrew Morton <akpm@...ux-foundation.org>,
	Michal Marek <mmarek@...e.cz>, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 2/2] namespace.pl : update file exclusion list

On Tue, Sep 28, 2010 at 08:44, Stephen Hemminger <shemminger@...tta.com> wrote:
> The list of exceptions in kernel tree was out of date. Convert
> the long list of if clauses to a hashes which is more efficient
> and more common in perl.
>
> Signed-off-by: Stephen Hemminger <shemminger@...tta.com>
>
> --- a/scripts/namespace.pl      2010-09-28 09:28:52.251563058 +0900
> +++ b/scripts/namespace.pl      2010-09-28 15:13:38.092073114 +0900
> @@ -84,6 +84,58 @@ my %ksymtab = ();    # names that appear in
>  my %ref = ();          # $ref{$name} exists if there is a true external reference to $name
>  my %export = ();       # $export{$name} exists if there is an EXPORT_... of $name
>
> +my %nmexception = (
> +    'fs/ext3/bitmap'                   => 1,
> +    'fs/ext4/bitmap'                   => 1,
> +    'arch/x86/lib/thunk_32'            => 1,
> +    'arch/x86/lib/cmpxchg'             => 1,
> +    'arch/x86/vdso/vdso32/note'                => 1,
> +    'lib/irq_regs'                     => 1,
> +    'usr/initramfs_data'               => 1,
> +    'drivers/scsi/aic94xx/aic94xx_dump'        => 1,
> +    'drivers/scsi/libsas/sas_dump'     => 1,
> +    'lib/dec_and_lock'                 => 1,
> +    'drivers/ide/ide-probe-mini'       => 1,
> +    'usr/initramfs_data'               => 1,
> +    'drivers/acpi/acpia/exdump'                => 1,
> +    'drivers/acpi/acpia/rsdump'                => 1,
> +    'drivers/acpi/acpia/nsdumpdv'      => 1,
> +    'drivers/acpi/acpia/nsdump'                => 1,
> +    'arch/ia64/sn/kernel/sn2/io'       => 1,
> +    'arch/ia64/kernel/gate-data'       => 1,
> +    'security/capability'              => 1,
> +    'fs/ntfs/sysctl'                   => 1,
> +    'fs/jfs/jfs_debug'                 => 1,
> +);
> +
> +my %nameexception = (
> +    'mod_use_count_'    => 1,
> +    '__initramfs_end'  => 1,
> +    '__initramfs_start'        => 1,
> +    '_einittext'       => 1,
> +    '_sinittext'       => 1,
> +    'kallsyms_names'   => 1,
> +    'kallsyms_num_syms'        => 1,
> +    'kallsyms_addresses'=> 1,
> +    '__this_module'    => 1,
> +    '_etext'           => 1,
> +    '_edata'           => 1,
> +    '_end'             => 1,
> +    '__bss_start'      => 1,
> +    '_text'            => 1,
> +    '_stext'           => 1,
> +    '__gp'             => 1,
> +    'ia64_unw_start'   => 1,
> +    'ia64_unw_end'     => 1,
> +    '__init_begin'     => 1,
> +    '__init_end'       => 1,
> +    '__bss_stop'       => 1,
> +    '__nosave_begin'   => 1,
> +    '__nosave_end'     => 1,
> +    'pg0'              => 1,
> +);
> +
> +
>  &find(\&linux_objects, '.');   # find the objects and do_nm on them
>  &list_multiply_defined();
>  &resolve_external_references();
> @@ -272,27 +324,9 @@ sub do_nm
>        close($nmdata);
>
>        if ($#nmdata < 0) {
> -               if (
> -                       $fullname ne "lib/brlock.o"
> -                       && $fullname ne "lib/dec_and_lock.o"
> -                       && $fullname ne "fs/xfs/xfs_macros.o"
> -                       && $fullname ne "drivers/ide/ide-probe-mini.o"
> -                       && $fullname ne "usr/initramfs_data.o"
> -                       && $fullname ne "drivers/acpi/executer/exdump.o"
> -                       && $fullname ne "drivers/acpi/resources/rsdump.o"
> -                       && $fullname ne "drivers/acpi/namespace/nsdumpdv.o"
> -                       && $fullname ne "drivers/acpi/namespace/nsdump.o"
> -                       && $fullname ne "arch/ia64/sn/kernel/sn2/io.o"
> -                       && $fullname ne "arch/ia64/kernel/gate-data.o"
> -                       && $fullname ne "drivers/ieee1394/oui.o"
> -                       && $fullname ne "security/capability.o"
> -                       && $fullname ne "sound/core/wrappers.o"
> -                       && $fullname ne "fs/ntfs/sysctl.o"
> -                       && $fullname ne "fs/jfs/jfs_debug.o"
> -               ) {
> -                       printf "No nm data for $fullname\n";
> -               }
> -               return;
> +           printf "No nm data for $fullname\n"
> +               unless $nmexception{$fullname};
> +           return;


This would be more readable and easier to update:

    my @nmexception = qw(
        fs/ext3/bitmap
        fs/ext4/bitmap
        arch/x86/lib/thunk_32
        arch/x86/lib/cmpxchg
        arch/x86/vdso/vdso32/note
        lib/irq_regs
        usr/initramfs_data
        drivers/scsi/aic94xx/aic94xx_dump
        drivers/scsi/libsas/sas_dump
        lib/dec_and_lock
        drivers/ide/ide-probe-mini
        usr/initramfs_data
        drivers/acpi/acpia/exdump
        drivers/acpi/acpia/rsdump
        drivers/acpi/acpia/nsdumpdv
        drivers/acpi/acpia/nsdump
        arch/ia64/sn/kernel/sn2/io
        arch/ia64/kernel/gate-data
        security/capability
        fs/ntfs/sysctl
        fs/jfs/jfs_debug
    );

    my @nameexception = qw(
        mod_use_count_
        __initramfs_end
        __initramfs_start
        _einittext
        _sinittext
        kallsyms_names
        kallsyms_num_syms
        kallsyms_addresses
        __this_module
        _etext
        _edata
        _end
        __bss_start
        _text
        _stext
        __gp
        ia64_unw_start
        ia64_unw_end
        __init_begin
        __init_end
        __bss_stop
        __nosave_begin
        __nosave_end
        pg0
    );

    my (%nmexception, %nameexception);
    @nmexception{@...xception} = ();
    @nameexception{@...eexception} = ();

Then later:

    print "No nm data for $fullname\n"
        unless exists $nmexception{$fullname};

I.e. use print (not printf) and exists().

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ