10 Aug, 2010

7 commits

  • These are caused by checkpatch incorrectly parsing its internal
    representation of a statement block for struct's (or anything else that is
    a statement block encapsulated in {}'s that also ends with a ';'). Fix
    this by properly parsing a statement block.

    An example:

    +struct dummy_type dummy = {
    + .foo = "baz",
    +};
    +EXPORT_SYMBOL_GPL(dummy);
    +
    +static int dummy_func(void)
    +{
    + return -EDUMMYCODE;
    +}
    +EXPORT_SYMBOL_GPL(dummy_func);

    WARNING: EXPORT_SYMBOL(foo); should immediately \
    follow its function/variable
    #19: FILE: dummy.c:4:
    +EXPORT_SYMBOL_GPL(dummy);

    The above warning is issued when it should not be.

    Signed-off-by: Patrick Pannuto
    Cc: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Patrick Pannuto
     
  • As explained in Documentation/timers/timers-howto.txt, msleep's of < 20ms
    may sleep for as long as 20ms. Caller's of msleep(1) or msleep(2), etc
    are likely not to expect this quirky behavior - warn them.

    Signed-off-by: Patrick Pannuto
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Patrick Pannuto
     
  • When possible, sleeping is (usually) better than delaying; however, don't
    bother callers of udelay < 10us, as those cases are generally not worth
    the switch to usleep

    [akpm@linux-foundation.org: fix mismatched parentheses]
    Signed-off-by: Patrick Pannuto
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Patrick Pannuto
     
  • Add new logging functions netdev_ and netif_.
    Don't complain if the only thing on a line is a quoted string.

    Signed-off-by: Joe Perches
    Cc: Andy Whitcroft
    Cc: Wolfram Sang
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Make error message say 'ERROR: do not initialise globals to 0 or NULL'
    rather than 'ERROR: do not initialise externals to 0 or NULL'. Makes more
    sense in the context since there is an extern keyword in C and that is a
    global declaration within the scope of the current file.

    Signed-off-by: Joe Eloff
    Cc: Andy Whitcroft
    Cc: Wolfram Sang
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Eloff
     
  • I've got a false positive when spaces are present at the beginning of a
    line.

    So I add this check, obviously excluding to check the lines in the middle of
    comments.

    For instance this code passes the checkpatch test:

    +struct davinci_mcbsp_data {
    + unsigned int fmt;
    + int clk_div;
    +};
    +
    +static struct davinci_mcbsp_data mcbsp_data;

    Where, before the string "int clk_div", I have 4 spaces (\040
    ascii character).

    With v2.6.34 scripts/checkpatch.pl script I get:

    scripts/checkpatch.pl 0001-ASoC-DaVinci-Added-support-for-stereo-I2S.patch
    total: 0 errors, 0 warnings, 201 lines checked
    0001-ASoC-DaVinci-Added-support-for-stereo-I2S.patch has no obvious style
    problems and is ready for submission.

    That is not correct. Instead with the proposed patch I get:

    scripts/checkpatch.pl 0001-ASoC-DaVinci-Added-support-for-stereo-I2S.patch
    WARNING: please, no space for starting a line,
    excluding comments
    #63: FILE: sound/soc/davinci/davinci-i2s.c:165:
    + int clk_div;$

    WARNING: please, no space for starting a line,
    excluding comments
    #95: FILE: sound/soc/davinci/davinci-i2s.c:406:
    + return 0;$

    total: 0 errors, 2 warnings, 201 lines checked

    That is correct.

    Signed-off-by: Raffaele Recalcati
    Cc: Wolfram Sang
    Cc: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Raffaele Recalcati
     
  • Change the check suggesting replacement of asm-includes with
    linux-includes. Exceptions to this rule are easier to extend now. Add
    memory.h because ARM has a custom one.

    Signed-off-by: Wolfram Sang
    Cc: Russell King
    Cc: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Wolfram Sang
     

25 May, 2010

2 commits

  • The C99 specification states in section 6.11.5:

    The placement of a storage-class specifier other than at the beginning
    of the declaration specifiers in a declaration is an obsolescent
    feature.

    Signed-off-by: Tobias Klauser
    Acked-by: Jean Delvare
    Cc: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tobias Klauser
     
  • I've seen various new Kconfigs with rather unhelpful one liner
    descriptions. Add a Kconfig warning for a minimum length of the Kconfig
    help section.

    Right now I arbitarily chose 4. The exact value can be debated.

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Andi Kleen
    Cc: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andi Kleen
     

22 May, 2010

1 commit

  • The conversion of device->sem to device->mutex resulted in lockdep
    warnings. Create a novalidate class for now until the driver folks
    come up with separate classes. That way we have at least the basic
    mutex debugging coverage.

    Add a checkpatch error so the usage is reserved for device->mutex.

    [ tglx: checkpatch and compile fix for LOCKDEP=n ]

    Signed-off-by: Peter Zijlstra
    Signed-off-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Peter Zijlstra
     

07 Mar, 2010

8 commits

  • Signed-off-by: Joe Perches
    Cc: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Signed-off-by: Alberto Panizzo
    Cc: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alberto Panizzo
     
  • Based on Arjan's suggestion, extend the list of ops structures that should
    be const.

    Signed-off-by: Emese Revfy
    Cc: Andy Whitcroft
    Cc: Arjan van de Ven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Emese Revfy
     
  • Here is a small code snippet, which will be complained about by
    checkpatch.pl:

    #define __STRUCT_KFIFO_COMMON(recsize, ptrtype) \
    union { \
    struct { \
    unsigned int in; \
    unsigned int out; \
    }; \
    char rectype[recsize]; \
    ptrtype *ptr; \
    const ptrtype *ptr_const; \
    };

    This construct is legal and safe, so checkpatch.pl should accept this. It
    should be also true for struct defined in a macro.

    Add the `struct' and `union' keywords to the exceptions list of the
    checkpatch.pl script, to prevent error message "Macros with multiple
    statements should be enclosed in a do - while loop". Otherwise it is not
    possible to build a struct or union with a macro.

    Signed-off-by: Stefani Seibold
    Cc: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stefani Seibold
     
  • checkpatch falsely complained about '__initconst' because it thought the
    'const' needed a space before. Fix this by changing the list of
    attributes:

    - add '__initconst'
    - force plain 'init' to contain a word-boundary at the end

    Signed-off-by: Wolfram Sang
    Cc: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Wolfram Sang
     
  • Signed-off-by: Joe Perches
    Cc: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • In case if the statement and the conditional are in one line, the line
    appears in the report doubly.

    And items of this check have no blank line before the next item.

    This patch fixes these trivial problems, to improve readability of the
    report.

    [sample.c]
    > if (cond1
    > && cond2
    > && cond3) func_foo();
    >
    > if (cond4) func_bar();

    Before:
    > ERROR: trailing statements should be on next line
    > #1: FILE: sample.c:1:
    > +if (cond1
    > [...]
    > + && cond3) func_foo();
    > ERROR: trailing statements should be on next line
    > #5: FILE: sample.c:5:
    > +if (cond4) func_bar();
    > +if (cond4) func_bar();
    > total: 2 errors, 0 warnings, 5 lines checked

    After:
    > ERROR: trailing statements should be on next line
    > #1: FILE: sample.c:1:
    > +if (cond1
    > [...]
    > + && cond3) func_foo();
    >
    > ERROR: trailing statements should be on next line
    > #5: FILE: sample.c:5:
    > +if (cond4) func_bar();
    >
    > total: 2 errors, 0 warnings, 5 lines checked

    Signed-off-by: Hidetoshi Seto
    Cc: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hidetoshi Seto
     
  • sizeof(&foo) is frequently an error. Warn on its use.

    Signed-off-by: Joe Perches
    Cc: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     

13 Jan, 2010

1 commit


29 Oct, 2009

7 commits

  • Signed-off-by: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Whitcroft
     
  • Ingo reported that the following lines triggered a false warning,

    static struct lock_class_key rcu_lock_key;
    struct lockdep_map rcu_lock_map =
    STATIC_LOCKDEP_MAP_INIT("rcu_read_lock", &rcu_lock_key);
    EXPORT_SYMBOL_GPL(rcu_lock_map);

    from kernel/rcutree.c , and the false warning looked like this,

    WARNING: EXPORT_SYMBOL(foo); should immediately follow its
    function/variable
    +EXPORT_SYMBOL_GPL(rcu_lock_map);

    We actually should be checking the statement before the EXPORT_* for a
    mention of the exported object, and complain where it is not there.

    [akpm@linux-foundation.org: coding-style fixes]
    Cc: Ingo Molnar
    Cc: Paul E. McKenney
    Reported-by: Daniel Walker
    Signed-off-by: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Whitcroft
     
  • In the following code,

    union thread_union init_thread_union
    __attribute__((__section__(".data.init_task"))) =
    { INIT_THREAD_INFO(init_task) };

    There is a non-conforming declaration. It should really be like the
    following,

    union thread_union init_thread_union
    __attribute__((__section__(".data.init_task"))) = {
    INIT_THREAD_INFO(init_task)
    };

    However, checkpatch doesn't catch this right now because it doesn't
    correctly evaluate the "__attribute__".

    It is not at all clear that we care what preceeds an assignment style
    attribute when we find the open brace. Relax the test so we do not need
    to check the __attribute__.

    Reported-by: Daniel Walker
    Signed-off-by: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Whitcroft
     
  • The macro concatenation (##) sequence can cause false errors when checking
    macro's. Checkpatch doesn't currently know about the operator.

    For example this line,

    + entry = (struct ftrace_raw_##call *)raw_data; \

    is correct but it produces the following error,

    ERROR: need consistent spacing around '*' (ctx:WxB)
    + entry = (struct ftrace_raw_##call *)raw_data;\
    ^

    The line above doesn't have any spacing problems, and if you remove the
    macro concatenation sequence checkpatch doesn't give any errors.

    Extend identifier handling to include ## concatenation within the
    definition of an identifier.

    Reported-by: Daniel Walker
    Signed-off-by: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Whitcroft
     
  • Signed-off-by: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Whitcroft
     
  • We are allowing context scanning checks to apply against the first line of
    context outside at the end of the hunk. This can lead to false matches to
    patch names leading to various perl warnings. Correctly stop at the
    bottom of the hunk.

    Signed-off-by: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Whitcroft
     
  • Prevent known non types being detected as modifiers. Ensure we do not
    look at any type which starts with a keyword.

    Signed-off-by: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Whitcroft
     

22 Sep, 2009

8 commits


28 Feb, 2009

6 commits