| From 70732e6d9c87b1401139cfd93c327bc2fe2d40e4 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 13 Mar 2024 13:53:41 +1100 |
| Subject: macintosh/via-macii: Fix "BUG: sleeping function called from invalid |
| context" |
| |
| From: Finn Thain <fthain@linux-m68k.org> |
| |
| [ Upstream commit d301a71c76ee4c384b4e03cdc320a55f5cf1df05 ] |
| |
| The via-macii ADB driver calls request_irq() after disabling hard |
| interrupts. But disabling interrupts isn't necessary here because the |
| VIA shift register interrupt was masked during VIA1 initialization. |
| |
| Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") |
| Signed-off-by: Finn Thain <fthain@linux-m68k.org> |
| Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org> |
| Link: https://lore.kernel.org/r/419fcc09d0e563b425c419053d02236b044d86b0.1710298421.git.fthain@linux-m68k.org |
| Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/macintosh/via-macii.c | 11 +++-------- |
| 1 file changed, 3 insertions(+), 8 deletions(-) |
| |
| diff --git a/drivers/macintosh/via-macii.c b/drivers/macintosh/via-macii.c |
| index db9270da5b8e9..b6ddf1d47cb4e 100644 |
| --- a/drivers/macintosh/via-macii.c |
| +++ b/drivers/macintosh/via-macii.c |
| @@ -140,24 +140,19 @@ static int macii_probe(void) |
| /* Initialize the driver */ |
| static int macii_init(void) |
| { |
| - unsigned long flags; |
| int err; |
| |
| - local_irq_save(flags); |
| - |
| err = macii_init_via(); |
| if (err) |
| - goto out; |
| + return err; |
| |
| err = request_irq(IRQ_MAC_ADB, macii_interrupt, 0, "ADB", |
| macii_interrupt); |
| if (err) |
| - goto out; |
| + return err; |
| |
| macii_state = idle; |
| -out: |
| - local_irq_restore(flags); |
| - return err; |
| + return 0; |
| } |
| |
| /* initialize the hardware */ |
| -- |
| 2.43.0 |
| |