Patch from Gilad H <gilad.public2@gmail.com> with improvements fixing the following...
authorvlnb <vlnb@d57e44dd-8a1f-0410-8b47-8ef2f437770f>
Thu, 14 Jan 2010 13:14:30 +0000 (13:14 +0000)
committervlnb <vlnb@d57e44dd-8a1f-0410-8b47-8ef2f437770f>
Thu, 14 Jan 2010 13:14:30 +0000 (13:14 +0000)
commit142e2ff318954c13d15e9c9a59b76489c09d207a
tree9bb97a0115908faa80083981368ac34520bfa039
parentf1859a6c58d2193cc4600aff59f7d65c0b7202e3
Patch from Gilad H <gilad.public2@gmail.com> with improvements fixing the following scenario:

1. Commands start going to the init_cmd_list probably because SCST was suspended
2. A command is now waiting in the init_cmd_list, it was not yet completely initialized (more impotently cmd->dev == NULL)
3. A clear task set for the same lun arrives from a different initiator
4. The command is marked as aborted from other initiator and released from the init list.
5. The command gets to the PRE_XMIT_RESPONSE state, since it was aborted the scst_xmit_process_aborted_cmd is called.
6. At this stage since the command is marked as aborted by other initiator the scst checks for the device TAS flag (cmd->dev->tas) however cmd->dev is NULL and we crash on Null pointer de-referencing.

git-svn-id: https://scst.svn.sourceforge.net/svnroot/scst/trunk@1466 d57e44dd-8a1f-0410-8b47-8ef2f437770f
scst/include/scst.h
scst/src/scst_lib.c
scst/src/scst_targ.c