qla_target: remove qlt_check_fcport_exist
authorJörn Engel <joern@logfs.org>
Wed, 12 Jun 2013 20:27:54 +0000 (16:27 -0400)
committerNicholas Bellinger <nab@linux-iscsi.org>
Thu, 20 Jun 2013 21:10:48 +0000 (14:10 -0700)
commit08234e3adc7a299c9213bcfa0b5e97c359129670
tree0caae34a966145ca746550421ae50909c1a23c24
parent084ed45b3846ffb803a6cd6d631c1723e77689e0
qla_target: remove qlt_check_fcport_exist

Comment from original 2012 patch:
  In all our testing this function has never returned true.  However, the
  dropping of hardware_lock necessary to call this function seems to cause
  a use-after-free we manage to hit rather frequently.  Given this
  cost-benefit ratio, I'm willing to remove some 100 lines of code.

And since the same problem exists around shutdown_sess and put_sess,
this patch changes them from taking the hardware_lock to requiring the
hardware_lock to be taken.  In most cases the caller already had the
lock and had to drop it for the called method to reacquire it.  At best
that hurts performance and in rare instances it causes races with fatal
consequences.

We dropped the original 2012 patch when upgrading our kernel and it took
us nearly half a year to discover we still need it.

(nab: Fix qla_tgt_sess reference in tcm_qla2xxx_put_sess)

Signed-off-by: Joern Engel <joern@logfs.org>
Cc: Giridhar Malavali <giridhar.malavali@qlogic.com>
Cc: Chad Dupuis <chad.dupuis@qlogic.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/scsi/qla2xxx/qla_target.c
drivers/scsi/qla2xxx/tcm_qla2xxx.c