HID: i2c-hid: fix i2c_hid_dbg macro
authorBenjamin Tissoires <benjamin.tissoires@gmail.com>
Tue, 4 Dec 2012 15:27:46 +0000 (16:27 +0100)
committerJiri Kosina <jkosina@suse.cz>
Wed, 5 Dec 2012 09:56:45 +0000 (10:56 +0100)
This avoids the problematic case:

if (condition)
i2c_hid_dbg(ihid, "Blah blah %d\n", i);
else
do_something_very_important();

Which looks correct, however with the previous macro definition,
this expands to the unexpected:

if (condition) {
if (debug) \
dev_printk(KERN_DEBUG, &ihid->client->dev,
"Blah blah %d\n", i);
else
do_something_very_important();
}

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Reviewed-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/i2c-hid/i2c-hid.c

index 3c8fe4673705f9e9ac22a87967478a6bedbb6e11..d95e8de6a9207aebe1805a7f524f9289760d46f2 100644 (file)
@@ -50,9 +50,11 @@ static bool debug;
 module_param(debug, bool, 0444);
 MODULE_PARM_DESC(debug, "print a lot of debug information");
 
-#define i2c_hid_dbg(ihid, fmt, arg...) \
-       if (debug)                      \
-               dev_printk(KERN_DEBUG, &(ihid)->client->dev, fmt, ##arg)
+#define i2c_hid_dbg(ihid, fmt, arg...)                                   \
+do {                                                                     \
+       if (debug)                                                        \
+               dev_printk(KERN_DEBUG, &(ihid)->client->dev, fmt, ##arg); \
+} while (0)
 
 struct i2c_hid_desc {
        __le16 wHIDDescLength;