Re: [3/8] kill gen_init_cpio.c printk() of size_t warning

From: linux-os (linux-os_at_chaos.analogic.com)
Date: 01/03/05

  • Next message: Alan Cox: "Re: starting with 2.7"
    Date:	Mon, 3 Jan 2005 17:03:24 -0500 (EST)
    To: "H. Peter Anvin" <hpa@zytor.com>
    
    

    On Mon, 3 Jan 2005, H. Peter Anvin wrote:

    > William Lee Irwin III wrote:
    >>
    >> On Mon, Jan 03, 2005 at 09:09:48PM +0000, H. Peter Anvin wrote:
    >>
    >>> Dear Wrongbot,
    >>> Bull***. Signed is promoted to unsigned.
    >>
    >> I'm not sure who you're responding to here, but gcc emitted an actual
    >> warning and I was only attempting to carry out the minimal effort
    >> necessary to silence it. I'm not really interested in creating or
    >> being involved with controversy, just silencing the core build in the
    >> least invasive and so on way possible, leaving deeper drivers/ issues
    >> to the resolution of the true underlying problems.
    >>
    >> I don't have anything to do with the code excerpt above; I merely
    >> followed the style of the other unsigned integer coercions in the file.
    >>
    >
    > I was not responding to you, your stuff is perfectly sane.
    >
    > The claim from the Wrongbot was that "foo + 1" is bad when foo is a size_t.
    > This is utter bull***, since that's EXACTLY equivalent to:
    >
    > foo + (size_t)1
    >
    > ... because of promotion rules.
    >
    > -hpa
    > -

    I made no such claim. I claimed that the posted fix was wrong:

    >
    > Index: mm1-2.6.10/usr/gen_init_cpio.c
    > ===================================================================
    > --- mm1-2.6.10.orig/usr/gen_init_cpio.c 2005-01-03 06:45:53.000000000 -0800
    > +++ mm1-2.6.10/usr/gen_init_cpio.c 2005-01-03 09:42:18.000000000 -0800
    > @@ -112,7 +112,7 @@
    > (long) gid, /* gid */
    > 1, /* nlink */
    > (long) mtime, /* mtime */
    > - strlen(target) + 1, /* filesize */
    > + (unsigned)strlen(target) + 1,/* filesize */
    > 3, /* major */
    > 1, /* minor */
    > 0, /* rmajor */
    > -

    This is wrong because strlen() already returns a size_t (unsigned).
    This "fix" only served to quiet the compiler which was warning
    about the conversion. It is a "conversion", not a "promotion".
    The simple fix to quiet this conversion warning is to use 1U
    as previously shown.

    Cheers,
    *** Johnson
    Penguin : Linux version 2.6.9 on an i686 machine (5537.79 BogoMips).
      Notice : All mail here is now cached for review by Dictator Bush.
                      98.36% of all statistics are fiction.
    -
    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/


  • Next message: Alan Cox: "Re: starting with 2.7"