Skip to content

Commit

Permalink
OMAP3: serial: Check for zero-based physical addr
Browse files Browse the repository at this point in the history
This is for protecting a wrong mapping attempt of a zero-based
physical address.

The result is that, no serial port will be attempted to be mapped.

Also add an additional protection for NULL clocks before attempting
to enable them (if above condition applies)

Signed-off-by: Sergio Aguirre <saaguirre@ti.com>
  • Loading branch information
Sergio Aguirre committed Mar 15, 2010
1 parent 29b2ee5 commit e88d556
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions arch/arm/mach-omap2/serial.c
Original file line number Diff line number Diff line change
Expand Up @@ -664,6 +664,12 @@ void __init omap_serial_early_init(void)
struct device *dev = &pdev->dev;
struct plat_serial8250_port *p = dev->platform_data;

/* Don't map zero-based physical address */
if (p->mapbase == 0) {
printk(KERN_WARNING "omap serial: No physical address"
" for uart#%d, so skipping early_init...\n", i);
continue;
}
/*
* Module 4KB + L4 interconnect 4KB
* Static mapping, never released
Expand Down Expand Up @@ -727,6 +733,13 @@ void __init omap_serial_init_port(int port)
pdev = &uart->pdev;
dev = &pdev->dev;

/* Don't proceed if there's no clocks available */
if (unlikely(!uart->ick || !uart->fck)) {
WARN(1, "%s: can't init uart%d, no clocks available\n",
kobject_name(&dev->kobj), port);
return;
}

omap_uart_enable_clocks(uart);

omap_uart_reset(uart);
Expand Down

0 comments on commit e88d556

Please sign in to comment.