lkml.org 
[lkml]   [2006]   [May]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH -mm] sys_semctl gcc 4.1 warning fix
    On Wed, May 10, 2006 at 11:24:31AM -0400, Steven Rostedt wrote:
    >
    > On Wed, 10 May 2006, Daniel Walker wrote:
    >
    > > On Wed, 2006-05-10 at 16:09 +0100, Alan Cox wrote:
    > > > On Mer, 2006-05-10 at 07:31 -0700, Daniel Walker wrote:
    > > > > > Hiding warnings like this can be a hazard as it will hide real warnings
    > > > > > later on.
    > > > >
    > > > > How could it hide real warnings? If anything these patch allow other
    > > > > (real warnings) to be seen .
    > > >
    > > > Because while the warning is present people will check it now and again.
    > >
    > > But it's pointless to review it, in this case and for this warning .
    > >
    > > > If you set the variable to zero then you generate extra code and you
    > > > ensure nobody will look in future.
    > >
    > > The extra code is a problem , I'll admit that . But the warning should
    > > disappear , it's just a waste .
    > >
    >
    > What is really needed is an attribute to add to function parameters, that
    > tells gcc that the parameter, if a pointer, will be initialize via the
    > function.
    >
    > For example:
    >
    > #define __assigned __attribute__((initialized))
    >
    > then declare a function:
    >
    > int my_init_variabl(__assigned struct mystruct *var);
    >
    > So gcc can know that the passed in variable will be updated. It could
    > then check to see if the function actually does initialize the pointer,
    > if the declaration is visible to the function definition itself.
    >
    > Any gcc developers watching :)


    It seems you don't understand the problem at all:


    First of all note that your example does not apply in this case:

    copy_semid_from_user() does _not_ initialize sembuf in all cases.


    And you do not understand where gcc's problem is:

    gcc does in fact see that setbuf is always initialized if
    copy_semid_from_user() returns 0.

    setbuf is only initialized in the (cmd == IPC_SET) case and later only
    used in the (cmd == IPC_SET) case. And cmd can't change between the two
    occurences.

    Therefore, gcc should in theory already have enough information to prove
    that sembuf is always initialized before it's used.


    > -- Steve


    cu
    Adrian

    --

    "Is there not promise of rain?" Ling Tan asked suddenly out
    of the darkness. There had been need of rain for many days.
    "Only a promise," Lao Er said.
    Pearl S. Buck - Dragon Seed

    -
    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: 2006-05-10 18:27    [W:0.039 / U:179.816 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site