Re: [PATCH v2 1/2] pinctrl/samsung: Correct EINTG banks order

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Monday, April 16, 2018 4:52:40 PM CEST Paweł Chmiel wrote:
> All banks with GPIO interrupts should be at beginning
> of bank array and without any other types of banks between them.
> This order is expected by exynos_eint_gpio_irq, when doing
> interrupt group to bank translation.
> Otherwise, kernel NULL pointer dereference would happen
> when trying to handle interrupt, due to wrong bank being looked up.
> Observed on s5pv210, when trying to handle gpj0 interrupt,
> where kernel was mapping it to gpi bank.
> 
> Cc: stable@xxxxxxxxxxxxxxx
> Fixes: cfa76ddf5b3aad642cc904daa3d3784cbb5f2d57 ("pinctrl: samsung: Split Exynos drivers per ARMv7 and ARMv8")
> Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@xxxxxxxxx>
> ---
> 
> Changes from v1:
>   - Limit changes to s5pv210 and Exynos5410. Exynos3250 will be handled later.
> ---
>  drivers/pinctrl/samsung/pinctrl-exynos-arm.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/pinctrl/samsung/pinctrl-exynos-arm.c b/drivers/pinctrl/samsung/pinctrl-exynos-arm.c
> index 90c2744..4f4ae66 100644
> --- a/drivers/pinctrl/samsung/pinctrl-exynos-arm.c
> +++ b/drivers/pinctrl/samsung/pinctrl-exynos-arm.c
> @@ -105,12 +105,12 @@ static const struct samsung_pin_bank_data s5pv210_pin_bank[] __initconst = {
>  	EXYNOS_PIN_BANK_EINTG(7, 0x1c0, "gpg1", 0x38),
>  	EXYNOS_PIN_BANK_EINTG(7, 0x1e0, "gpg2", 0x3c),
>  	EXYNOS_PIN_BANK_EINTG(7, 0x200, "gpg3", 0x40),
> -	EXYNOS_PIN_BANK_EINTN(7, 0x220, "gpi"),
>  	EXYNOS_PIN_BANK_EINTG(8, 0x240, "gpj0", 0x44),
>  	EXYNOS_PIN_BANK_EINTG(6, 0x260, "gpj1", 0x48),
>  	EXYNOS_PIN_BANK_EINTG(8, 0x280, "gpj2", 0x4c),
>  	EXYNOS_PIN_BANK_EINTG(8, 0x2a0, "gpj3", 0x50),
>  	EXYNOS_PIN_BANK_EINTG(5, 0x2c0, "gpj4", 0x54),
> +	EXYNOS_PIN_BANK_EINTN(7, 0x220, "gpi"),
>  	EXYNOS_PIN_BANK_EINTN(8, 0x2e0, "mp01"),
>  	EXYNOS_PIN_BANK_EINTN(4, 0x300, "mp02"),
>  	EXYNOS_PIN_BANK_EINTN(8, 0x320, "mp03"),
> @@ -630,7 +630,6 @@ static const struct samsung_pin_bank_data exynos5410_pin_banks0[] __initconst =
>  	EXYNOS_PIN_BANK_EINTG(4, 0x100, "gpc3", 0x20),
>  	EXYNOS_PIN_BANK_EINTG(7, 0x120, "gpc1", 0x24),
>  	EXYNOS_PIN_BANK_EINTG(7, 0x140, "gpc2", 0x28),
> -	EXYNOS_PIN_BANK_EINTN(2, 0x160, "gpm5"),
>  	EXYNOS_PIN_BANK_EINTG(8, 0x180, "gpd1", 0x2c),
>  	EXYNOS_PIN_BANK_EINTG(8, 0x1A0, "gpe0", 0x30),
>  	EXYNOS_PIN_BANK_EINTG(2, 0x1C0, "gpe1", 0x34),
> @@ -641,6 +640,7 @@ static const struct samsung_pin_bank_data exynos5410_pin_banks0[] __initconst =
>  	EXYNOS_PIN_BANK_EINTG(2, 0x260, "gpg2", 0x48),
>  	EXYNOS_PIN_BANK_EINTG(4, 0x280, "gph0", 0x4c),
>  	EXYNOS_PIN_BANK_EINTG(8, 0x2A0, "gph1", 0x50),
> +	EXYNOS_PIN_BANK_EINTN(2, 0x160, "gpm5"),
>  	EXYNOS_PIN_BANK_EINTN(8, 0x2C0, "gpm7"),
>  	EXYNOS_PIN_BANK_EINTN(6, 0x2E0, "gpy0"),
>  	EXYNOS_PIN_BANK_EINTN(4, 0x300, "gpy1"),
> 
Hi
Both patches shouldn't be send yet to this list. Sorry for problems.

Best regards
Paweł





[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]