Message ID | 20190904185057.8400-1-roberto.sassu@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] KEYS: trusted: correctly initialize digests and fix locking issue | expand |
On Wed, 2019-09-04 at 20:50 +0200, Roberto Sassu wrote: > This patch fixes two issues introduced with commit 0b6cf6b97b7e ("tpm: pass > an array of tpm_extend_digest structures to tpm_pcr_extend()"). > > It initializes the algorithm in init_digests() for trusted keys, and moves > the algorithm check in tpm_pcr_extend() before locks are taken in > tpm_find_get_ops(). > > Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com> > Fixes: 0b6cf6b97b7e ("tpm: pass an array of tpm_extend_digest structures to tpm_pcr_extend()") > --- The changelog is missing. You should place it right after these three dashes before diffstat. So, why did you do v2? I don't see any description of the two issues. The commit messages goes on explaining right away what this patch does. Would be nice to have one paragraph describing both of the issues at first before striving into solutions. Also, the granularity should be one patch per one issue so this will require two patches in total. /Jarkko
On Sat, 2019-09-07 at 22:02 +0300, Jarkko Sakkinen wrote: > On Wed, 2019-09-04 at 20:50 +0200, Roberto Sassu wrote: > > This patch fixes two issues introduced with commit 0b6cf6b97b7e ("tpm: pass > > an array of tpm_extend_digest structures to tpm_pcr_extend()"). > > > > It initializes the algorithm in init_digests() for trusted keys, and moves > > the algorithm check in tpm_pcr_extend() before locks are taken in > > tpm_find_get_ops(). > > > > Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com> > > Fixes: 0b6cf6b97b7e ("tpm: pass an array of tpm_extend_digest structures to tpm_pcr_extend()") > > --- > > The changelog is missing. You should place it right after these three > dashes before diffstat. So, why did you do v2? > > I don't see any description of the two issues. The commit messages > goes on explaining right away what this patch does. Would be nice > to have one paragraph describing both of the issues at first before > striving into solutions. > > Also, the granularity should be one patch per one issue so this will > require two patches in total. Actually taking my words back as far as the last paragraph goes. Since the fixes tag is the same I'm cool with one patch as long as the commit message describes better what you're doing and why. /Jarkko
diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c index 1b4f95c13e00..1fffa91fc148 100644 --- a/drivers/char/tpm/tpm-interface.c +++ b/drivers/char/tpm/tpm-interface.c @@ -316,14 +316,14 @@ int tpm_pcr_extend(struct tpm_chip *chip, u32 pcr_idx, int rc; int i; - chip = tpm_find_get_ops(chip); - if (!chip) - return -ENODEV; - for (i = 0; i < chip->nr_allocated_banks; i++) if (digests[i].alg_id != chip->allocated_banks[i].alg_id) return -EINVAL; + chip = tpm_find_get_ops(chip); + if (!chip) + return -ENODEV; + if (chip->flags & TPM_CHIP_FLAG_TPM2) { rc = tpm2_pcr_extend(chip, pcr_idx, digests); tpm_put_ops(chip); diff --git a/security/keys/trusted.c b/security/keys/trusted.c index ade699131065..1fbd77816610 100644 --- a/security/keys/trusted.c +++ b/security/keys/trusted.c @@ -1228,11 +1228,16 @@ static int __init trusted_shash_alloc(void) static int __init init_digests(void) { + int i; + digests = kcalloc(chip->nr_allocated_banks, sizeof(*digests), GFP_KERNEL); if (!digests) return -ENOMEM; + for (i = 0; i < chip->nr_allocated_banks; i++) + digests[i].alg_id = chip->allocated_banks[i].alg_id; + return 0; }
This patch fixes two issues introduced with commit 0b6cf6b97b7e ("tpm: pass an array of tpm_extend_digest structures to tpm_pcr_extend()"). It initializes the algorithm in init_digests() for trusted keys, and moves the algorithm check in tpm_pcr_extend() before locks are taken in tpm_find_get_ops(). Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com> Fixes: 0b6cf6b97b7e ("tpm: pass an array of tpm_extend_digest structures to tpm_pcr_extend()") --- drivers/char/tpm/tpm-interface.c | 8 ++++---- security/keys/trusted.c | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-)