lkml.org 
[lkml]   [2007]   [Jan]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [UPDATED PATCH] fix memory corruption from misinterpreted bad_inode_ops return values
    On Thu, Jan 04, 2007 at 03:21:06PM -0800, Mitchell Blank Jr wrote:
    > Linus Torvalds wrote:
    > > Well, that probably would work, but it's also true that returning a 64-bit
    > > value on a 32-bit platform really _does_ depend on more than the size.
    >
    > Yeah, obviously this is restricted to the signed-integer case. My point
    > was just that you could have the compiler figure out which variant to pick
    > for loff_t automatically.
    >
    > > "let's not play tricks with function types at all".
    >
    > I think I agree. The real (but harder) fix for the wasted space issue
    > would be to get the toolchain to automatically combine functions that
    > end up compiling into identical assembly.

    Can't do.

    int f(void)
    {
    return 0;
    }

    int g(void)
    {
    return 0;
    }

    int is_f(int (*p)(void))
    {
    return p == f;
    }

    main()
    {
    printf("%d %d\n", is_f(f), is_f(g));
    }

    would better produce
    1 0
    for anything resembling a sane C compiler. Comparing pointers to
    functions for equality is a well-defined operation and it's not
    to be messed with.

    You _can_ compile g into jump to f, but that's it. And that, AFAICS,
    is what gcc does.
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-01-05 00:55    [W:0.020 / U:30.476 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site