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]
Message-Id: <200901031932.51873.rob@landley.net>
Date:	Sat, 3 Jan 2009 19:32:51 -0600
From:	Rob Landley <rob@...dley.net>
To:	"H. Peter Anvin" <hpa@...or.com>
Cc:	Sam Ravnborg <sam@...nborg.org>,
	Embedded Linux mailing list <linux-embedded@...r.kernel.org>,
	linux-kernel@...r.kernel.org,
	Andrew Morton <akpm@...ux-foundation.org>
Subject: Re: [PATCH 1/3]: Replace kernel/timeconst.pl with kernel/timeconst.sh

On Friday 02 January 2009 13:33:02 H. Peter Anvin wrote:
> Rob Landley wrote:
> > You mean "The new shell script is much simpler, about 1/4 the size, runs
> > on Red Hat 9 from 2003, and isn't perl?" :)
>
> And introduces unclear environment dependencies depending on how
> external utilities are implemented.

I note that sed and printf and such are all susv3.  I have an explicit test 
for 32 bit math in the script that cares, and this worked in Red Hat 9 circa 
2003.

I consider this a step up from code with an implicit dependency on a CPAN 
library.

> The whole point of why that script was written in Perl was to have
> access to arbitrary-precision arithmetic -- after it was shown that bc
> would simply lock up on some systems.

A) I'm not using bc.

B) You don't need arbitrary precision arithmetic, you need around 72 bits 
worth of arithmetic for the pathological case.

C) Your definition of "access to arbitrary-precision arithmetic" includes the 
following, cut and paste verbatim from your old script:

# Precomputed values for systems without Math::BigInt
# Generated by:
# timeconst.pl --can 24 32 48 64 100 122 128 200 250 256 300 512 1000 1024 
1200
%canned_values = (
    24 => [
        '0xa6aaaaab','0x2aaaaaa',26,
        125,3,
        '0xc49ba5e4','0x1fbe76c8b4',37,
        3,125,
        '0xa2c2aaab','0xaaaa',16,
        125000,3,
        '0xc9539b89','0x7fffbce4217d',47,
        3,125000,
    ], 32 => [
        '0xfa000000','0x6000000',27,
        125,4,
        '0x83126e98','0xfdf3b645a',36,
        4,125,
        '0xf4240000','0x0',17,
        31250,1,
        '0x8637bd06','0x3fff79c842fa',46,
        1,31250,
    ], 48 => [
        '0xa6aaaaab','0x6aaaaaa',27,
        125,6,
        '0xc49ba5e4','0xfdf3b645a',36,
        6,125,
        '0xa2c2aaab','0x15555',17,
        62500,3,
        '0xc9539b89','0x3fffbce4217d',46,
        3,62500,
    ], 64 => [
        '0xfa000000','0xe000000',28,
        125,8,
        '0x83126e98','0x7ef9db22d',35,
        8,125,
        '0xf4240000','0x0',18,
        15625,1,
        '0x8637bd06','0x1fff79c842fa',45,
        1,15625,
    ], 100 => [
        '0xa0000000','0x0',28,
        10,1,
        '0xcccccccd','0x733333333',35,
        1,10,
        '0x9c400000','0x0',18,
        10000,1,
        '0xd1b71759','0x1fff2e48e8a7',45,
        1,10000,
    ], 122 => [
        '0x8325c53f','0xfbcda3a',28,
        500,61,
        '0xf9db22d1','0x7fbe76c8b',35,
        61,500,
        '0x8012e2a0','0x3ef36',18,
        500000,61,
        '0xffda4053','0x1ffffbce4217',45,
        61,500000,
    ], 128 => [
        '0xfa000000','0x1e000000',29,
        125,16,
        '0x83126e98','0x3f7ced916',34,
        16,125,
        '0xf4240000','0x40000',19,
        15625,2,
        '0x8637bd06','0xfffbce4217d',44,
        2,15625,
    ], 200 => [
        '0xa0000000','0x0',29,
        5,1,
        '0xcccccccd','0x333333333',34,
        1,5,
        '0x9c400000','0x0',19,
        5000,1,
        '0xd1b71759','0xfff2e48e8a7',44,
        1,5000,
    ], 250 => [
        '0x80000000','0x0',29,
        4,1,
        '0x80000000','0x180000000',33,
        1,4,
        '0xfa000000','0x0',20,
        4000,1,
        '0x83126e98','0x7ff7ced9168',43,
        1,4000,
    ], 256 => [
        '0xfa000000','0x3e000000',30,
        125,32,
        '0x83126e98','0x1fbe76c8b',33,
        32,125,
        '0xf4240000','0xc0000',20,
        15625,4,
        '0x8637bd06','0x7ffde7210be',43,
        4,15625,
    ], 300 => [
        '0xd5555556','0x2aaaaaaa',30,
        10,3,
        '0x9999999a','0x1cccccccc',33,
        3,10,
        '0xd0555556','0xaaaaa',20,
        10000,3,
        '0x9d495183','0x7ffcb923a29',43,
        3,10000,
    ], 512 => [
        '0xfa000000','0x7e000000',31,
        125,64,
        '0x83126e98','0xfdf3b645',32,
        64,125,
        '0xf4240000','0x1c0000',21,
        15625,8,
        '0x8637bd06','0x3ffef39085f',42,
        8,15625,
    ], 1000 => [
        '0x80000000','0x0',31,
        1,1,
        '0x80000000','0x0',31,
        1,1,
        '0xfa000000','0x0',22,
        1000,1,
        '0x83126e98','0x1ff7ced9168',41,
        1,1000,
    ], 1024 => [
        '0xfa000000','0xfe000000',32,
        125,128,
        '0x83126e98','0x7ef9db22',31,
        128,125,
        '0xf4240000','0x3c0000',22,
        15625,16,
        '0x8637bd06','0x1fff79c842f',41,
        16,15625,
    ], 1200 => [
        '0xd5555556','0xd5555555',32,
        5,6,
        '0x9999999a','0x66666666',31,
        6,5,
        '0xd0555556','0x2aaaaa',22,
        2500,3,
        '0x9d495183','0x1ffcb923a29',41,
        3,2500,
    ]
);

Plus a decent chunk of the remaining logic was code to regenerate that table, 
and to figure out when to use the table and when to compute new values.  (And 
erroring out if the system wasn't capable of doing so.)  I don't understand 
why you didn't just precompute the actual header file output instead or 
precomputing perl source, but that's a side issue.

Rob

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ