mirror of
https://github.com/qemu/qemu.git
synced 2024-11-26 12:23:36 +08:00
scsi: avoid an off-by-one error in megasas_mmio_write
While reading magic sequence(MFI_SEQ) in megasas_mmio_write, an off-by-one error could occur as 's->adp_reset' index is not reset after reading the last sequence. Reported-by: YY Z <bigbird475958471@gmail.com> Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org> Message-Id: <20170424120634.12268-1-ppandit@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
aab9e87e7a
commit
24dfa9fa2f
@ -2138,15 +2138,15 @@ static void megasas_mmio_write(void *opaque, hwaddr addr,
|
||||
case MFI_SEQ:
|
||||
trace_megasas_mmio_writel("MFI_SEQ", val);
|
||||
/* Magic sequence to start ADP reset */
|
||||
if (adp_reset_seq[s->adp_reset] == val) {
|
||||
s->adp_reset++;
|
||||
if (adp_reset_seq[s->adp_reset++] == val) {
|
||||
if (s->adp_reset == 6) {
|
||||
s->adp_reset = 0;
|
||||
s->diag = MFI_DIAG_WRITE_ENABLE;
|
||||
}
|
||||
} else {
|
||||
s->adp_reset = 0;
|
||||
s->diag = 0;
|
||||
}
|
||||
if (s->adp_reset == 6) {
|
||||
s->diag = MFI_DIAG_WRITE_ENABLE;
|
||||
}
|
||||
break;
|
||||
case MFI_DIAG:
|
||||
trace_megasas_mmio_writel("MFI_DIAG", val);
|
||||
|
Loading…
Reference in New Issue
Block a user