From: Neil Brown Date: Fri, 2 Sep 2005 03:13:54 +0000 (+1000) Subject: [SCSI] fix possible deadlock in scsi_lib.c X-Git-Tag: v2.6.14-rc1~5^2~14 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=286f3e13a1dc7f32407629fbd7aabc8ea78c62b5;p=pandora-kernel.git [SCSI] fix possible deadlock in scsi_lib.c 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 scsi_issue_flush_fn. This calls sd_issue_flush which calls sd_sync_cache, which calls scsi_execute_request. This will (as sshdr != NULL) call kmalloc(SCSI_SENSE_BUFFERSIZE, GFP_KERNEL) 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 message. Signed-off-by: Neil Brown Signed-off-by: James Bottomley --- Reading git-diff-tree failed