Skip to content
  • Neil Brown's avatar
    [SCSI] fix possible deadlock in scsi_lib.c · 286f3e13
    Neil Brown authored
      If a filesystem, while writing out data, decides that it is good
    to issue a cache flush on a SCSI drive (or other 'sd' device), it will
    call blkdev_issue_flush which calls ->issue_flush_fn which is
    This calls sd_issue_flush which calls sd_sync_cache, which calls
    This will (as sshdr != NULL) call
    If memory is tight, the presence of GFP_KERNEL may cause write
    requests to be sent to some filesystem to free up memory, however if
    that filesystem is waiting for the issue_flush_fn to complete, you
    could get a deadlock.
    I wonder if it might be more appropriate to use GFP_NOIO as in the
    following patch.
    I wonder if it might be even more appropriate to cope better with a
    kmalloc failure, especially as in this use, sd_sync_cache only will
    use the sense information to print out a more informative error
    Signed-off-by: default avatarNeil Brown <>
    Signed-off-by: default avatarJames Bottomley <>