]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: mt7601u: fix clang -Wformat warning
authorJustin Stitt <justinstitt@google.com>
Mon, 11 Jul 2022 21:29:32 +0000 (14:29 -0700)
committerKalle Valo <kvalo@kernel.org>
Mon, 18 Jul 2022 11:54:23 +0000 (14:54 +0300)
When building with Clang we encounter this warning:
| drivers/net/wireless/mediatek/mt7601u/debugfs.c:92:6: error: format
| specifies type 'unsigned char' but the argument has type 'int'
| [-Werror,-Wformat] dev->ee->reg.start + dev->ee->reg.num - 1);

The format specifier used is `%hhu` which describes a u8. Both
`dev->ee->reg.start` and `.num` are u8 as well. However, the expression
as a whole is promoted to an int as you cannot get smaller-than-int from
addition. Therefore, to fix the warning, use the promoted-to-type's
format specifier -- in this case `%d`.

example:
```
uint8_t a = 4, b = 7;
int size = sizeof(a + b - 1);
printf("%d\n", size);
// output: 4
```

See more:
(https://wiki.sei.cmu.edu/confluence/display/c/INT02-C.+Understand+integer+conversion+rules)
"Integer types smaller than int are promoted when an operation is
performed on them. If all values of the original type can be represented
as an int, the value of the smaller type is converted to an int;
otherwise, it is converted to an unsigned int."

Signed-off-by: Justin Stitt <justinstitt@google.com>
Acked-by: Jakub Kicinski <kubakici@wp.pl>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20220711212932.1501592-1-justinstitt@google.com
drivers/net/wireless/mediatek/mt7601u/debugfs.c

index 20669eacb66ea8529325ebb8aca36ea03dccb062..230b0e1061a7e12d232ae9f0a83af7eb86e7643e 100644 (file)
@@ -88,7 +88,7 @@ mt7601u_eeprom_param_show(struct seq_file *file, void *data)
                   dev->ee->rssi_offset[0], dev->ee->rssi_offset[1]);
        seq_printf(file, "Reference temp: %hhx\n", dev->ee->ref_temp);
        seq_printf(file, "LNA gain: %hhx\n", dev->ee->lna_gain);
-       seq_printf(file, "Reg channels: %hhu-%hhu\n", dev->ee->reg.start,
+       seq_printf(file, "Reg channels: %hhu-%d\n", dev->ee->reg.start,
                   dev->ee->reg.start + dev->ee->reg.num - 1);
 
        seq_puts(file, "Per rate power:\n");