]> git.baikalelectronics.ru Git - kernel.git/commitdiff
tpm: tpm2_bios_measurements_next should increase position index
authorVasily Averin <vvs@virtuozzo.com>
Tue, 25 Feb 2020 06:26:22 +0000 (09:26 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 Apr 2020 08:50:11 +0000 (10:50 +0200)
commit 2bbdf7c302905d581f7dd082d288097a7f29c3a3 upstream.

If .next function does not change position index,
following .show function will repeat output related
to current position index.

For /sys/kernel/security/tpm0/binary_bios_measurements:
1) read after lseek beyound end of file generates whole last line.
2) read after lseek to middle of last line generates
expected end of last line and unexpected whole last line once again.

Cc: stable@vger.kernel.org # 4.19.x
Fixes: 46cb04d471b6 ("fs/seq_file.c: simplify seq_file iteration code ...")
Link: https://bugzilla.kernel.org/show_bug.cgi?id=206283
Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/char/tpm/eventlog/tpm2.c

index b9aeda1cbcd72dbb0b090c2303a941e51313efc9..e741b115752588e1f8dc3d56b20ffb1309900c64 100644 (file)
@@ -94,6 +94,7 @@ static void *tpm2_bios_measurements_next(struct seq_file *m, void *v,
        size_t event_size;
        void *marker;
 
+       (*pos)++;
        event_header = log->bios_event_log;
 
        if (v == SEQ_START_TOKEN) {
@@ -118,7 +119,6 @@ static void *tpm2_bios_measurements_next(struct seq_file *m, void *v,
        if (((v + event_size) >= limit) || (event_size == 0))
                return NULL;
 
-       (*pos)++;
        return v;
 }