• Khazhismel Kumykov's avatar
    dm resume: don't return EINVAL when signalled · 7a636b4f
    Khazhismel Kumykov authored
    If the dm_resume method is called on a device that is not suspended, the
    method will suspend the device briefly, before resuming it (so that the
    table will be swapped).
    
    However, there was a bug that the return value of dm_suspended_md was not
    checked. dm_suspended_md may return an error when it is interrupted by a
    signal. In this case, do_resume would call dm_swap_table, which would
    return -EINVAL.
    
    This commit fixes the logic, so that error returned by dm_suspend is
    checked and the resume operation is undone.
    Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: default avatarKhazhismel Kumykov <khazhy@google.com>
    Cc: stable@vger.kernel.org
    7a636b4f
dm-ioctl.c 52.5 KB