ahci: Fix data abort on multiple scsi resets.
authorRoger Quadros <rogerq@ti.com>
Tue, 1 Apr 2014 14:26:40 +0000 (17:26 +0300)
committerTom Rini <trini@ti.com>
Wed, 2 Apr 2014 19:44:40 +0000 (15:44 -0400)
commit3f62971162370213271dc1e7a396b6b3a6d5b6c6
treea2702d6abcf36219d1688aa5313af5fe07b42f6d
parent1336e2d343f088b71ec71907855caccd1053d166
ahci: Fix data abort on multiple scsi resets.

Commit 2faf5fb82ed6 introduced a regression that causes a data
abort when running scsi init followed by scsi reset.

There are 2 problems with the original commit
1) ALLOC_CACHE_ALIGN_BUFFER() allocates memory on the stack but is
assigned to ataid[port] and used by other functions.
2) The function ata_scsiop_inquiry() tries to free memory which was
never allocated on the heap.

Fix these problems by using tmpid as a temporary cache aligned buffer.
Allocate memory separately for ataid[port] and re-use it if required.

Fixes: 2faf5fb82ed6 (ahci: Fix cache align error messages)
Reported-by: Eli Nidam <elini@marvell.com>
Signed-off-by: Roger Quadros <rogerq@ti.com>
drivers/block/ahci.c