diff options
author | Tom Yan <tom.ty89@gmail.com> | 2016-07-22 20:34:08 +0200 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2016-08-09 22:13:04 +0200 |
commit | d7372cb6290eedadcf2d191b033388df3c0c39f2 (patch) | |
tree | 443c13a8ac23d447aef389d184c83341a011342b /drivers/ata/libata-scsi.c | |
parent | Linux 4.8-rc1 (diff) | |
download | linux-d7372cb6290eedadcf2d191b033388df3c0c39f2.tar.xz linux-d7372cb6290eedadcf2d191b033388df3c0c39f2.zip |
libata-scsi: use u8 array to store mode page copy
ata_mselect_*() would initialize a char array for storing a copy of
the current mode page. However, char could be signed char. In that
case, bytes larger than 127 would be converted to negative number.
For example, 0xff from def_control_mpage[] would become -1. This
prevented ata_mselect_control() from working at all, since when it
did the read-only bits check, there would always be a mismatch.
Signed-off-by: Tom Yan <tom.ty89@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'drivers/ata/libata-scsi.c')
-rw-r--r-- | drivers/ata/libata-scsi.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c index e207b33e4ce9..0bc4532bb60a 100644 --- a/drivers/ata/libata-scsi.c +++ b/drivers/ata/libata-scsi.c @@ -3610,7 +3610,7 @@ static int ata_mselect_caching(struct ata_queued_cmd *qc, { struct ata_taskfile *tf = &qc->tf; struct ata_device *dev = qc->dev; - char mpage[CACHE_MPAGE_LEN]; + u8 mpage[CACHE_MPAGE_LEN]; u8 wce; int i; @@ -3666,7 +3666,7 @@ static int ata_mselect_control(struct ata_queued_cmd *qc, const u8 *buf, int len, u16 *fp) { struct ata_device *dev = qc->dev; - char mpage[CONTROL_MPAGE_LEN]; + u8 mpage[CONTROL_MPAGE_LEN]; u8 d_sense; int i; |