Message ID | 57926727.840e420a.d7fc9.38dd@mx.google.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
On Sat, Jul 23, 2016 at 02:34:08AM +0800, tom.ty89@gmail.com wrote: > From: Tom Yan <tom.ty89@gmail.com> > > 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> Applied to libata/for-4.9. Thanks.
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c index 4a4e6f1..5cfcb4b 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, mask; int i; @@ -3668,7 +3668,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, mask; int i;