This is an automatically generated commit. When doing `git bisect`, consider `git bisect --skip`. Signed-off-by: Kenneth Kasilag <kenneth@kasilag.me> Link: https://github.com/openwrt/openwrt/pull/21019 Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
62 lines
2.7 KiB
Diff
62 lines
2.7 KiB
Diff
From ac6f0825e582f2216a582c9edf0cee7bfe347ba6 Mon Sep 17 00:00:00 2001
|
|
From: Kees Cook <kees@kernel.org>
|
|
Date: Sun, 17 Nov 2024 03:45:38 -0800
|
|
Subject: [PATCH] pinctrl: airoha: Use unsigned long for bit search
|
|
|
|
Instead of risking alignment problems and causing (false positive) array
|
|
bound warnings when casting a u32 to (64-bit) unsigned long, just use a
|
|
native unsigned long for doing bit searches. Avoids warning with GCC 15's
|
|
-Warray-bounds -fdiagnostics-details:
|
|
|
|
In file included from ../include/linux/bitmap.h:11,
|
|
from ../include/linux/cpumask.h:12,
|
|
from ../arch/x86/include/asm/paravirt.h:21,
|
|
from ../arch/x86/include/asm/irqflags.h:80,
|
|
from ../include/linux/irqflags.h:18,
|
|
from ../include/linux/spinlock.h:59,
|
|
from ../include/linux/irq.h:14,
|
|
from ../include/linux/irqchip/chained_irq.h:10,
|
|
from ../include/linux/gpio/driver.h:8,
|
|
from ../drivers/pinctrl/mediatek/pinctrl-airoha.c:11:
|
|
In function 'find_next_bit',
|
|
inlined from 'airoha_irq_handler' at ../drivers/pinctrl/mediatek/pinctrl-airoha.c:2394:3:
|
|
../include/linux/find.h:65:23: error: array subscript 'long unsigned int[0]' is partly outside array bounds of 'u32[1]' {aka 'unsigned int[1]'} [-Werror=array-bounds=]
|
|
65 | val = *addr & GENMASK(size - 1, offset);
|
|
| ^~~~~
|
|
../drivers/pinctrl/mediatek/pinctrl-airoha.c: In function 'airoha_irq_handler':
|
|
../drivers/pinctrl/mediatek/pinctrl-airoha.c:2387:21: note: object 'status' of size 4
|
|
2387 | u32 status;
|
|
| ^~~~~~
|
|
|
|
Signed-off-by: Kees Cook <kees@kernel.org>
|
|
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
|
Link: https://lore.kernel.org/20241117114534.work.292-kees@kernel.org
|
|
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
|
---
|
|
drivers/pinctrl/mediatek/pinctrl-airoha.c | 9 +++++----
|
|
1 file changed, 5 insertions(+), 4 deletions(-)
|
|
|
|
--- a/drivers/pinctrl/mediatek/pinctrl-airoha.c
|
|
+++ b/drivers/pinctrl/mediatek/pinctrl-airoha.c
|
|
@@ -2384,15 +2384,16 @@ static irqreturn_t airoha_irq_handler(in
|
|
|
|
for (i = 0; i < ARRAY_SIZE(irq_status_regs); i++) {
|
|
struct gpio_irq_chip *girq = &pinctrl->gpiochip.chip.irq;
|
|
- u32 status;
|
|
+ u32 regmap;
|
|
+ unsigned long status;
|
|
int irq;
|
|
|
|
if (regmap_read(pinctrl->regmap, pinctrl->gpiochip.status[i],
|
|
- &status))
|
|
+ ®map))
|
|
continue;
|
|
|
|
- for_each_set_bit(irq, (unsigned long *)&status,
|
|
- AIROHA_PIN_BANK_SIZE) {
|
|
+ status = regmap;
|
|
+ for_each_set_bit(irq, &status, AIROHA_PIN_BANK_SIZE) {
|
|
u32 offset = irq + i * AIROHA_PIN_BANK_SIZE;
|
|
|
|
generic_handle_irq(irq_find_mapping(girq->domain,
|