SCSI fixes on 20140819
These are the two bug fixes I mentioned in the final merge window pull. One is a reversed logic check in the device busy tests which can cause a nasty hang and another crash seen in the new SCSI pool support if the use count ever goes to zero. Signed-off-by: James Bottomley <JBottomley@Parallels.com> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQEcBAABAgAGBQJT85zGAAoJEDeqqVYsXL0Mnw4IAJ7BP+4nUlP7Oib8JfPu4Df2 b6dv3YEGe6th4awrHqUnATusjQLIybk/rgRKb6P50o1iX2VI+rs1mAm9esw9NalS 8aKzDMAv9pTRsRvAhe3AnIVGGCYAekV4AZWmsXQPCKqcsQZSZKAnIerLBf0lBemR X3+1VhYtbB9z4o0Gpv4E5mR/7CqIouDpe5QGRKRY2+/Yyp2El6Vzwqr9XMLyOvmY Y9WaIhM1UzABl+NAlDhMnA0Yw27UHJfWY6UWZ3Wa73DQCWsdZ6eydal4g8YNA5pB +6UjMQKWh/bXHZl8v+eCuuXODXZQGazKOFFoc6SGumxAcuLraCBFsuU5m4AQ0NA= =v+g2 -----END PGP SIGNATURE----- Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi Pull SCSI fixes from James Bottomley: "These are the two bug fixes I mentioned in the final merge window pull. One is a reversed logic check in the device busy tests which can cause a nasty hang and another crash seen in the new SCSI pool support if the use count ever goes to zero" [ The device busy test already got merged from a patch earlier, so is now duplicated. ] * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: [SCSI] save command pool address of Scsi_Host [SCSI] fix qemu boot hang problem
This commit is contained in:
Коммит
be816bc491
|
@ -377,6 +377,10 @@ scsi_alloc_host_cmd_pool(struct Scsi_Host *shost)
|
|||
pool->slab_flags |= SLAB_CACHE_DMA;
|
||||
pool->gfp_mask = __GFP_DMA;
|
||||
}
|
||||
|
||||
if (hostt->cmd_size)
|
||||
hostt->cmd_pool = pool;
|
||||
|
||||
return pool;
|
||||
}
|
||||
|
||||
|
@ -421,8 +425,10 @@ out:
|
|||
out_free_slab:
|
||||
kmem_cache_destroy(pool->cmd_slab);
|
||||
out_free_pool:
|
||||
if (hostt->cmd_size)
|
||||
if (hostt->cmd_size) {
|
||||
scsi_free_host_cmd_pool(pool);
|
||||
hostt->cmd_pool = NULL;
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -444,8 +450,10 @@ static void scsi_put_host_cmd_pool(struct Scsi_Host *shost)
|
|||
if (!--pool->users) {
|
||||
kmem_cache_destroy(pool->cmd_slab);
|
||||
kmem_cache_destroy(pool->sense_slab);
|
||||
if (hostt->cmd_size)
|
||||
if (hostt->cmd_size) {
|
||||
scsi_free_host_cmd_pool(pool);
|
||||
hostt->cmd_pool = NULL;
|
||||
}
|
||||
}
|
||||
mutex_unlock(&host_cmd_pool_mutex);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче