]> xenbits.xensource.com Git - qemu-upstream-4.3-testing.git/commitdiff
ide: Correct improper smart self test counter reset in ide core.
authorBenoît Canet <benoit.canet@irqsave.net>
Wed, 4 Mar 2015 17:17:12 +0000 (17:17 +0000)
committerStefano Stabellini <stefano.stabellini@eu.citrix.com>
Thu, 5 Mar 2015 13:21:57 +0000 (13:21 +0000)
The SMART self test counter was incorrectly being reset to zero,
not 1. This had the effect that on every 21st SMART EXECUTE OFFLINE:
 * We would write off the beginning of a dynamically allocated buffer
 * We forgot the SMART history
Fix this.

Signed-off-by: Benoit Canet <benoit@irqsave.net>
Message-id: 1397336390-24664-1-git-send-email-benoit.canet@irqsave.net
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Cc: qemu-stable@nongnu.org
Acked-by: Kevin Wolf <kwolf@redhat.com>
[PMM: tweaked commit message as per suggestions from Markus]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
hw/ide/core.c

index c4f93d0e47d5b0de261dd27eac13b925200a78cc..7ad53f8f61900a106b47123061b34abc055778b9 100644 (file)
@@ -1557,7 +1557,7 @@ void ide_exec_cmd(IDEBus *bus, uint32_t val)
                case 2: /* extended self test */
                s->smart_selftest_count++;
                if(s->smart_selftest_count > 21)
-                       s->smart_selftest_count = 0;
+                       s->smart_selftest_count = 1;
                n = 2 + (s->smart_selftest_count - 1) * 24;
                s->smart_selftest_data[n] = s->sector;
                s->smart_selftest_data[n+1] = 0x00; /* OK and finished */