Re: [PATCH] __set_page_dirty uses spin_lock_irqsave instead ofspin_lock_irq

From: David Rientjes
Date: Tue Feb 04 2014 - 16:34:49 EST


On Tue, 4 Feb 2014, kosaki.motohiro@xxxxxxxxx wrote:

> From: KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx>
>
> To use spin_{un}lock_irq is dangerous if caller disabled interrupt.
> During aio buffer migration, we have a possibility to see the
> following call stack.
>
> aio_migratepage [disable interrupt]
> migrate_page_copy
> clear_page_dirty_for_io
> set_page_dirty
> __set_page_dirty_buffers
> __set_page_dirty
> spin_lock_irq
>
> This mean, current aio migration is a deadlockable. spin_lock_irqsave
> is a safer alternative and we should use it.
>
> Reported-by: David Rientjes rientjes@xxxxxxxxxx>
> Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx

Acked-by: David Rientjes <rientjes@xxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/