diff options
author | Gal Rosen <galr@storwize.com> | 2010-01-21 11:15:32 +0300 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-03-08 20:06:53 +0300 |
commit | 0d9dc7c8b9b7fa0f53647423b41056ee1beed735 (patch) | |
tree | 19cab2c6559f6cc5a31abfcf4fc1e33b0528ebc7 /include | |
parent | d55f88f0275e4b21435957d3d354a79bb9edeec7 (diff) | |
download | linux-0d9dc7c8b9b7fa0f53647423b41056ee1beed735.tar.xz |
[SCSI] scsi_transport_fc: Fix synchronization issue while deleting vport
The issue occur while deleting 60 virtual ports through the sys
interface /sys/class/fc_vports/vport-X/vport_delete. It happen while in
a mistake each request sent twice for the same vport. This interface is
asynchronous, entering the delete request into a work queue, allowing
more than one request to enter to the delete work queue. The result is a
NULL pointer. The first request already delete the vport, while the
second request got a pointer to the vport before the device destroyed.
Re-create vport later cause system freeze.
Solution: Check vport flags before entering the request to the work queue.
[jejb: fixed int<->long problem on spinlock flags variable]
Signed-off-by: Gal Rosen <galr@storwize.com>
Acked-by: James Smart <james.smart@emulex.com>
Cc: Stable Tree <stable@kernel.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions