From: Ben Dooks Date: Sun, 3 Jul 2005 16:44:40 +0000 (+0100) Subject: [PATCH] ARM: 2785/1: S3C24XX - serial calls request_irq() with IRQs disabled X-Git-Tag: v2.6.13-rc2~12^2~1 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=75f631dc45c7327df26b82b9aea69376a306409c;p=linux-2.6 [PATCH] ARM: 2785/1: S3C24XX - serial calls request_irq() with IRQs disabled Patch from Ben Dooks The request_irq() function is called by s3c24xx uart driver with the local IRQs disabled. The request_irq() function can allocate memory via kmalloc(), and this may sleep causing a warning about sleeping in an invalid context. Signed-off-by: Ben Dooks Signed-off-by: Russell King --- diff --git a/drivers/serial/s3c2410.c b/drivers/serial/s3c2410.c index 5c4678478b..7365d4b50b 100644 --- a/drivers/serial/s3c2410.c +++ b/drivers/serial/s3c2410.c @@ -522,14 +522,11 @@ static void s3c24xx_serial_shutdown(struct uart_port *port) static int s3c24xx_serial_startup(struct uart_port *port) { struct s3c24xx_uart_port *ourport = to_ourport(port); - unsigned long flags; int ret; dbg("s3c24xx_serial_startup: port=%p (%08lx,%p)\n", port->mapbase, port->membase); - local_irq_save(flags); - rx_enabled(port) = 1; ret = request_irq(RX_IRQ(port), @@ -563,12 +560,10 @@ static int s3c24xx_serial_startup(struct uart_port *port) /* the port reset code should have done the correct * register setup for the port controls */ - local_irq_restore(flags); return ret; err: s3c24xx_serial_shutdown(port); - local_irq_restore(flags); return ret; }