]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
tpm: tpm1_bios_measurements_next should increase position index
authorVasily Averin <vvs@virtuozzo.com>
Tue, 25 Feb 2020 06:26:08 +0000 (09:26 +0300)
committerJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Fri, 13 Mar 2020 01:53:16 +0000 (03:53 +0200)
If .next function does not change position index,
following .show function will repeat output related
to current position index.

In case of /sys/kernel/security/tpm0/ascii_bios_measurements
and 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: 1f4aace60b0e ("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>
drivers/char/tpm/eventlog/tpm1.c

index 739b1d9d16b645170d07a6b0749cf126fc24722e..2c96977ad080a698a9128a8040423094e3cf9219 100644 (file)
@@ -115,6 +115,7 @@ static void *tpm1_bios_measurements_next(struct seq_file *m, void *v,
        u32 converted_event_size;
        u32 converted_event_type;
 
+       (*pos)++;
        converted_event_size = do_endian_conversion(event->event_size);
 
        v += sizeof(struct tcpa_event) + converted_event_size;
@@ -132,7 +133,6 @@ static void *tpm1_bios_measurements_next(struct seq_file *m, void *v,
            ((v + sizeof(struct tcpa_event) + converted_event_size) > limit))
                return NULL;
 
-       (*pos)++;
        return v;
 }