lkml.org 
[lkml]   [2011]   [Jan]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH 2/2] Replace the dangerous to_root_device macro with an inline function
    Date
    Greg KH <gregkh@suse.de> writes:

    > On Thu, Jan 06, 2011 at 04:24:24PM +0100, Ferenc Wagner wrote:
    >
    >> The original macro worked only when applied to variables named 'dev'.
    >> While this could have been fixed by simply renaming the macro argument,
    >> a more type-safe replacement is preferred.
    >
    > Preferred for what? This is a local macro, not exported to anything
    > else, is it causing problems today within this single file?

    No, it isn't a problem currently, because this macro is applied to
    variables named 'dev' exclusively. But the macro definition is wrong,
    as it uses 'dev' (the macro argument) in two places, of which the second
    probably isn't intentional, as the third argument of the container_of
    macro is a structure member name, which should stay fixed to the literal
    string 'dev' in this case, not replaced by the actual macro argument.

    So you've got the choice of leaving things as they are and happen to
    work for the moment, fixing the definition of the to_root_device macro
    to use some other token as the name of the free variable instead of
    'dev', or to replace the macro with a function, which provides some
    type-checking advantages during compilation as well. I thought this was
    a general reason for preferring inline functions over preprocessor
    macros in the kernel codebase, but maybe I was wrong.
    --
    Regards,
    Feri.


    \
     
     \ /
      Last update: 2011-01-06 21:49    [W:0.019 / U:182.488 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site