• NeilBrown's avatar
    [PATCH] md: fix potential memalloc deadlock in md · ec803d27
    NeilBrown authored
    If a GFP_KERNEL allocation is attempted in md while the mddev_lock is
    held, it is possible for a deadlock to eventuate.
    This happens if the array was marked 'clean', and the memalloc triggers
    a write-out to the md device.
    For the writeout to succeed, the array must be marked 'dirty', and that
    requires getting the mddev_lock.
    
    So, before attempting a GFP_KERNEL alloction while holding the lock,
    make sure the array is marked 'dirty' (unless it is currently read-only).
    Signed-off-by: default avatarNeil Brown <neilb@suse.de>
    Signed-off-by: default avatarChris Wright <chrisw@sous-sol.org>
    ec803d27
raid5.c 108 KB