In the exit path of interrupt_handler(), dc->flip map is traversed bit by bit to find and clear set bits and call tty_flip_buffer_push() for corresponding ports. Simplify it by using for_each_test_and_clear_bit(), as it skips already clear bits. Signed-off-by: Yury Norov <yury.norov@xxxxxxxxx> --- drivers/tty/nozomi.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/tty/nozomi.c b/drivers/tty/nozomi.c index e28a921c1637..2fe063190867 100644 --- a/drivers/tty/nozomi.c +++ b/drivers/tty/nozomi.c @@ -28,6 +28,7 @@ /* Enable this to have a lot of debug printouts */ #define DEBUG +#include <linux/find_atomic.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/pci.h> @@ -1201,9 +1202,8 @@ static irqreturn_t interrupt_handler(int irq, void *dev_id) exit_handler: spin_unlock(&dc->spin_mutex); - for (a = 0; a < NOZOMI_MAX_PORTS; a++) - if (test_and_clear_bit(a, &dc->flip)) - tty_flip_buffer_push(&dc->port[a].port); + for_each_test_and_clear_bit(a, &dc->flip, NOZOMI_MAX_PORTS) + tty_flip_buffer_push(&dc->port[a].port); return IRQ_HANDLED; none: -- 2.43.0