cxlflash: Fix AFU version access/storage and add check
authorMatthew R. Ochs <[email protected]>
Wed, 21 Oct 2015 20:14:01 +0000 (15:14 -0500)
committerJames Bottomley <[email protected]>
Fri, 30 Oct 2015 08:14:41 +0000 (17:14 +0900)
commite5ce067b7b6e123a88929a18a8a58811ffcec279
tree605d97ad36ed048531a6326bf85644c8f3f50670
parent964497b3bf3fed0a1db9dabe9fe080853230e5a7
cxlflash: Fix AFU version access/storage and add check

The AFU version is stored as a non-terminated string of bytes within
a 64-bit little-endian register. Presently the value is read directly
(no MMIO accessor) and is stored in a buffer that is not big enough
to contain a NULL terminator. Additionally the version obtained is not
evaluated against a known value to prevent usage with unsupported AFUs.
All of these deficiencies can lead to a variety of problems.

To remedy, use the correct MMIO accessor to read the version value into
a null-terminated buffer and add a check to prevent an incompatible AFU
from being used with this driver.

Signed-off-by: Matthew R. Ochs <[email protected]>
Signed-off-by: Manoj N. Kumar <[email protected]>
Reviewed-by: Brian King <[email protected]>
Reviewed-by: Daniel Axtens <[email protected]>
Reviewed-by: Tomas Henzl <[email protected]>
Signed-off-by: James Bottomley <[email protected]>
drivers/scsi/cxlflash/common.h
drivers/scsi/cxlflash/main.c
drivers/scsi/cxlflash/sislite.h