diff options
Diffstat (limited to 'drivers/tty/serial/atmel_serial.c')
| -rw-r--r-- | drivers/tty/serial/atmel_serial.c | 11 | 
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c index d4a7c241b75..3467462869c 100644 --- a/drivers/tty/serial/atmel_serial.c +++ b/drivers/tty/serial/atmel_serial.c @@ -158,7 +158,7 @@ struct atmel_uart_port {  };  static struct atmel_uart_port atmel_ports[ATMEL_MAX_UART]; -static unsigned long atmel_ports_in_use; +static DECLARE_BITMAP(atmel_ports_in_use, ATMEL_MAX_UART);  #ifdef SUPPORT_SYSRQ  static struct console atmel_console; @@ -1769,15 +1769,14 @@ static int atmel_serial_probe(struct platform_device *pdev)  	if (ret < 0)  		/* port id not found in platform data nor device-tree aliases:  		 * auto-enumerate it */ -		ret = find_first_zero_bit(&atmel_ports_in_use, -				sizeof(atmel_ports_in_use)); +		ret = find_first_zero_bit(atmel_ports_in_use, ATMEL_MAX_UART); -	if (ret > ATMEL_MAX_UART) { +	if (ret >= ATMEL_MAX_UART) {  		ret = -ENODEV;  		goto err;  	} -	if (test_and_set_bit(ret, &atmel_ports_in_use)) { +	if (test_and_set_bit(ret, atmel_ports_in_use)) {  		/* port already in use */  		ret = -EBUSY;  		goto err; @@ -1857,7 +1856,7 @@ static int atmel_serial_remove(struct platform_device *pdev)  	/* "port" is allocated statically, so we shouldn't free it */ -	clear_bit(port->line, &atmel_ports_in_use); +	clear_bit(port->line, atmel_ports_in_use);  	clk_put(atmel_port->clk);  |