cxlflash: Fix to avoid invalid port_sel value
authorManoj Kumar <kumarmn@us.ibm.com>
Wed, 21 Oct 2015 20:10:31 +0000 (15:10 -0500)
committerJames Bottomley <JBottomley@Odin.com>
Fri, 30 Oct 2015 07:57:21 +0000 (16:57 +0900)
commitfa4aa632da19fba0154b66a50329acd738304291
tree08afcf489f87f429ab281c2f3d902743af89bf39
parentb704f70ce2003c8046d5c0128303aeeb0d93d890
cxlflash: Fix to avoid invalid port_sel value

If two concurrent MANAGE_LUN ioctls are issued with the same
WWID parameter, it would result in an incorrect value of port_sel.

This is because port_sel is modified without any locks being
held. If the first caller stalls after the return from
find_and_create_lun(), the value of port_sel will be set
incorrectly to indicate a single port, though in this case
it should have been set to both ports.

To fix, use the global mutex to serialize the lookup of the
WWID and the subsequent modification of port_sel.

Signed-off-by: Matthew R. Ochs <mrochs@linux.vnet.ibm.com>
Signed-off-by: Manoj N. Kumar <manoj@linux.vnet.ibm.com>
Reviewed-by: Brian King <brking@linux.vnet.ibm.com>
Reviewed-by: Tomas Henzl <thenzl@redhat.com>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
drivers/scsi/cxlflash/lunmgt.c