Files
linux/drivers/scsi
David S. Miller 74e8a9efa9 esp_scsi: Fix tag state corruption when autosensing.
[ Upstream commit 21af8107f2 ]

Meelis Roos reports a crash in esp_free_lun_tag() in the presense
of a disk which has died.

The issue is that when we issue an autosense command, we do so by
hijacking the original command that caused the check-condition.

When we do so we clear out the ent->tag[] array when we issue it via
find_and_prep_issuable_command().  This is so that the autosense
command is forced to be issued non-tagged.

That is problematic, because it is the value of ent->tag[] which
determines whether we issued the original scsi command as tagged
vs. non-tagged (see esp_alloc_lun_tag()).

And that, in turn, is what trips up the sanity checks in
esp_free_lun_tag().  That function needs the original ->tag[] values
in order to free up the tag slot properly.

Fix this by remembering the original command's tag values, and
having esp_alloc_lun_tag() and esp_free_lun_tag() use them.

Reported-by: Meelis Roos <mroos@linux.ee>
Tested-by: Meelis Roos <mroos@linux.ee>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-10-13 16:08:32 -07:00
..
2013-04-09 14:13:26 -04:00
2013-04-09 14:13:27 -04:00
2013-06-26 23:08:22 -07:00
2013-05-10 07:53:40 -07:00
2013-04-09 14:13:21 -04:00
2013-02-22 23:31:31 -05:00
2013-02-22 23:31:31 -05:00
2013-02-22 23:31:31 -05:00
2013-04-09 14:13:15 -04:00
2013-04-09 14:13:15 -04:00
2013-04-09 14:13:22 -04:00
2013-04-09 14:13:23 -04:00
2013-04-09 14:13:24 -04:00
2013-04-09 14:13:19 -04:00
2013-04-09 14:13:19 -04:00
2013-02-27 19:10:18 -08:00
2013-04-09 14:13:24 -04:00
2013-04-09 14:13:24 -04:00
2013-04-09 14:13:17 -04:00
2013-04-09 14:13:17 -04:00
2013-04-09 14:13:23 -04:00
2013-04-09 14:13:17 -04:00
2013-04-09 14:13:16 -04:00
2013-04-09 14:13:16 -04:00
2013-04-09 14:13:16 -04:00
2013-04-09 14:13:16 -04:00
2013-04-09 14:13:15 -04:00
2013-04-09 14:13:16 -04:00
2013-04-09 14:13:25 -04:00
2013-04-09 14:13:27 -04:00
2013-04-09 14:13:17 -04:00
2013-04-09 14:13:17 -04:00
2013-05-05 00:15:15 -04:00
2012-03-28 18:30:03 +01:00
2013-04-09 14:13:15 -04:00
2013-04-09 14:13:17 -04:00
2013-04-09 14:13:17 -04:00
2012-03-28 18:30:03 +01:00
2013-04-09 14:13:17 -04:00
2013-04-09 14:13:17 -04:00
2012-02-21 11:40:37 +01:00
2013-04-09 14:13:17 -04:00
2012-01-03 22:54:07 -05:00
2013-07-25 14:07:30 -07:00
2013-05-07 20:16:25 -07:00
2012-09-14 17:59:29 +01:00
2013-05-04 14:50:16 -04:00
2013-05-04 14:50:16 -04:00
2013-05-04 14:50:16 -04:00
2013-04-09 14:13:17 -04:00
2013-04-09 14:13:17 -04:00
2013-04-09 14:13:15 -04:00
2013-04-09 14:13:15 -04:00
2013-04-09 14:13:15 -04:00