lkml.org 
[lkml]   [2007]   [Jun]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 9/36] drivers edac new intel 5000X mc driver
    Randy Dunlap wrote:
    > On Thu, 7 Jun 2007 14:38:40 -0700 Andrew Morton wrote:
    >
    >> On Sun, 3 Jun 2007 07:40:26 -0700 (PDT)
    >> Doug Thompson <norsk5@yahoo.com> wrote:
    >>
    >>> +static void i5000_process_nonfatal_error_info(struct mem_ctl_info
    >>> *mci,
    >>> + struct i5000_error_info * info,
    >> ditto (please check whole patch)
    >>
    >> (I thought checkpatch.pl would catch this, but it doesn't?)
    >
    > Here's a small patch against v.3 that will catch this.
    >
    > ---
    > From: Randy Dunlap <randy.dunlap@oracle.com>
    >
    > Catch "struct * blah" by allowing spaces preceding the '*'.
    > Bah. Maybe the error string needs a small change also.
    >
    > Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
    > ---
    > scripts/checkpatch.pl | 2 +-
    > 1 file changed, 1 insertion(+), 1 deletion(-)
    >
    > --- scripts.orig/checkpatch-v3.pl
    > +++ scripts/checkpatch-v3.pl
    > @@ -393,7 +393,7 @@ sub process {
    > }
    >
    > # * goes on variable not on type
    > - if ($line=~/[A-Za-z\d_]+\* [A-Za-z\d_]+/) {
    > + if ($line=~/[\sA-Za-z\d_]+\* [A-Za-z\d_]+/) {
    > print "\"foo* bar\" should be \"foo *bar\"\n";
    > print "$herecurr";
    > $clean = 0;
    > -

    0.04 already has checks for reporting the foo ** bar style cast format
    where there are two or more '*'s:

    "foo ** bar" should be "foo **bar"
    #12: FILE: Z4.c:9:
    + struct i5000_error_info ** foo;

    The declaration forms (just for a single *) are unfortunately ambiguous,
    it is hard to tell them from the foo * foo multiply form, for example if
    we relax this test to include one '*':

    "foo * bar" should be "foo *bar"
    #19: FILE: Z4.c:16:
    + int a = this * info;

    [/me pokes at it for a bit.]

    Ok so the key here is that we should only be applying these foo* bar
    checks to types. What we can do is cook up a match for the standard
    type forms, char, short ..., struct foo etc and use that to disambiguate
    the single '*' form:

    "foo * bar" should be "foo *bar"
    #10: FILE: Z4.c:7:
    + struct i5000_error_info * foo;

    We will miss those which are not obviously types, basically typedefs but
    as we already are hot against those we should be pretty close to 100%
    coverage.

    -apw
    -
    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-06-08 10:41    [W:0.025 / U:29.848 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site