Re: [PATCH 2.6.31.1] include/linux/kmemcheck.h: fix a sparse warning

From: Vegard Nossum
Date: Fri Oct 02 2009 - 03:51:25 EST


2009/10/2 Bart Van Assche <bart.vanassche@xxxxxxxxx>:
> On Sat, Sep 26, 2009 at 2:28 PM, Bart Van Assche
> <bart.vanassche@xxxxxxxxx> wrote:
>>
>> Checking a 2.6.31.1 kernel configured with allyesconfig/allmodconfig
>> with sparse (make C=2) triggers a sparse warning on code that uses the
>> kmemcheck_annotate_bitfield() macro. An example of such a warning:
>>
>> include/net/inet_sock.h:208:17: warning: do-while statement is not a compound statement
>>
>> Signed-off-by: Bart Van Assche <bart.vanassche@xxxxxxxxx>
>> Cc: Vegard Nossum <vegardno@xxxxxxxxxx>
>> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
>>
>> --- linux-2.6.31.1/include/linux/kmemcheck-orig.h    2009-09-26 13:53:44.000000000 +0200
>> +++ linux-2.6.31.1/include/linux/kmemcheck.h  Â2009-09-26 13:53:56.000000000 +0200
>> @@ -137,13 +137,13 @@ static inline void kmemcheck_mark_initia
>> Â Â Â Âint name##_end[0];
>>
>> Â#define kmemcheck_annotate_bitfield(ptr, name) Â Â Â Â Â Â Â Â Â Â Â Â \
>> - Â Â Â do if (ptr) { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \
>> + Â Â Â do { if (ptr) { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \
>> Â Â Â Â Â Â Â Âint _n = (long) &((ptr)->name##_end) Â Â Â Â Â Â Â Â Â Â\
>> Â Â Â Â Â Â Â Â Â Â Â Â- (long) &((ptr)->name##_begin); Â Â Â Â Â Â Â Â\
>> Â Â Â Â Â Â Â ÂBUILD_BUG_ON(_n < 0); Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \
>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\
>> Â Â Â Â Â Â Â Âkmemcheck_mark_initialized(&((ptr)->name##_begin), _n); \
>> - Â Â Â } while (0)
>> + Â Â Â } } while (0)
>>
>> Â#define kmemcheck_annotate_variable(var) Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \
>> Â Â Â Âdo { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\
>
> (ping)
>
> Did anyone already have the time to review the patch above ?
>
> Bart.

Hi,

A patch for this problem has already been applied in latest mainline.
Thanks anyway, and sorry for not responding sooner.


Vegard
¢éì®&Þ~º&¶¬–+-±éÝ¥Šw®žË±Êâmébžìdz¹Þ)í…æèw*jg¬±¨¶‰šŽŠÝj/êäz¹ÞŠà2ŠÞ¨è­Ú&¢)ß«a¶Úþø®G«éh®æj:+v‰¨Šwè†Ù>Wš±êÞiÛaxPjØm¶Ÿÿà -»+ƒùdš_