[PATCH v9 0/2] Move TPM-specific fields out of trusted_key_options

Srish Srinivasan posted 2 patches 1 week, 6 days ago
include/keys/trusted-type.h               |  11 --
include/keys/trusted_tpm.h                |  14 +++
security/keys/trusted-keys/trusted_tpm1.c | 125 ++++++++++++----------
security/keys/trusted-keys/trusted_tpm2.c |  50 +++++----
4 files changed, 113 insertions(+), 87 deletions(-)
[PATCH v9 0/2] Move TPM-specific fields out of trusted_key_options
Posted by Srish Srinivasan 1 week, 6 days ago
struct trusted_key_options contains fields that are specific to the TPM
trusted source, resulting in the accumulation backend-specific fields in
the generic options structure.

Move the TPM-specific fields into a new struct trusted_key_tpm and store a
pointer to it in the private member of struct trusted_key_options.

As a preparatory change, return immediately after a TPM unseal failure to
prevent pcrlock() from overwriting the unseal error.

Changelog:

 v9:
  - Resent the full patch set with consistent v9 subject prefix
  - Corrected patch 1/2, which was sent as v3 in v8, which caused b4 to
    flag the series as incomplete

 v8:
  - Rebase onto commit
    adc6a9f6d997 ("KEYS: trusted: Fix tpm2_load_cmd() boundary check")
    to resolve the merge conflicts
  - Include Jarkko's Reviewed-by tag

 v7:
  - Fix a memory leak in the preparatory fix

 v6:
  - Add a preparatory fix to return immediately after a TPM unseal failure
  - Replace explicit cleanup with __free(kfree_sensitive) in the TPM seal
    and unseal paths, as suggested by Jarkko

 v5:
  - Rename struct trusted_tpm_options to struct trusted_key_tpm, as
    suggestedby Jarkko.

 v4:
  - Rebased onto mainline after tpm-buf memory-safe allocation changes were
    merged
  - Resolved the resulting merge conflicts

 v3:
  - Exclude the preparatory clean up patch as the problem has been
    addressed in commit
    9ec4175a30eb ("KEYS: trusted: Debugging as a feature")

 v2:
  - Exclude the bug-fix patch as it has already been applied to 6.19-rc7
  - Rename instances of trusted_tpm_options from tpm_opts to private
  - Use pr_debug and KERN_DEBUG for logging debug messages (preparatory
    clean up patch)
  - Address other minor comments from Jarkko

Srish Srinivasan (2):
  keys/trusted_keys: return immediately after TPM unseal failure
  keys/trusted_keys: move TPM-specific fields into struct
    trusted_key_tpm

 include/keys/trusted-type.h               |  11 --
 include/keys/trusted_tpm.h                |  14 +++
 security/keys/trusted-keys/trusted_tpm1.c | 125 ++++++++++++----------
 security/keys/trusted-keys/trusted_tpm2.c |  50 +++++----
 4 files changed, 113 insertions(+), 87 deletions(-)

-- 
2.53.0
Re: [PATCH v9 0/2] Move TPM-specific fields out of trusted_key_options
Posted by Jarkko Sakkinen 1 week ago
On Sat, Sep 12, 2026 at 11:59:48AM +0530, Srish Srinivasan wrote:
> struct trusted_key_options contains fields that are specific to the TPM
> trusted source, resulting in the accumulation backend-specific fields in
> the generic options structure.
> 
> Move the TPM-specific fields into a new struct trusted_key_tpm and store a
> pointer to it in the private member of struct trusted_key_options.
> 
> As a preparatory change, return immediately after a TPM unseal failure to
> prevent pcrlock() from overwriting the unseal error.
> 
> Changelog:
> 
>  v9:
>   - Resent the full patch set with consistent v9 subject prefix
>   - Corrected patch 1/2, which was sent as v3 in v8, which caused b4 to
>     flag the series as incomplete
> 
>  v8:
>   - Rebase onto commit
>     adc6a9f6d997 ("KEYS: trusted: Fix tpm2_load_cmd() boundary check")
>     to resolve the merge conflicts
>   - Include Jarkko's Reviewed-by tag
> 
>  v7:
>   - Fix a memory leak in the preparatory fix
> 
>  v6:
>   - Add a preparatory fix to return immediately after a TPM unseal failure
>   - Replace explicit cleanup with __free(kfree_sensitive) in the TPM seal
>     and unseal paths, as suggested by Jarkko
> 
>  v5:
>   - Rename struct trusted_tpm_options to struct trusted_key_tpm, as
>     suggestedby Jarkko.
> 
>  v4:
>   - Rebased onto mainline after tpm-buf memory-safe allocation changes were
>     merged
>   - Resolved the resulting merge conflicts
> 
>  v3:
>   - Exclude the preparatory clean up patch as the problem has been
>     addressed in commit
>     9ec4175a30eb ("KEYS: trusted: Debugging as a feature")
> 
>  v2:
>   - Exclude the bug-fix patch as it has already been applied to 6.19-rc7
>   - Rename instances of trusted_tpm_options from tpm_opts to private
>   - Use pr_debug and KERN_DEBUG for logging debug messages (preparatory
>     clean up patch)
>   - Address other minor comments from Jarkko
> 
> Srish Srinivasan (2):
>   keys/trusted_keys: return immediately after TPM unseal failure
>   keys/trusted_keys: move TPM-specific fields into struct
>     trusted_key_tpm
> 
>  include/keys/trusted-type.h               |  11 --
>  include/keys/trusted_tpm.h                |  14 +++
>  security/keys/trusted-keys/trusted_tpm1.c | 125 ++++++++++++----------
>  security/keys/trusted-keys/trusted_tpm2.c |  50 +++++----
>  4 files changed, 113 insertions(+), 87 deletions(-)
> 
> -- 
> 2.53.0
> 

I applied v8 already. Please check from my tree whether this needs
reapplying or not.

BR, Jarkko
Re: [PATCH v9 0/2] Move TPM-specific fields out of trusted_key_options
Posted by Srish Srinivasan 1 week ago
On 9/18/26 7:42 AM, Jarkko Sakkinen wrote:
> On Sat, Sep 12, 2026 at 11:59:48AM +0530, Srish Srinivasan wrote:
>> struct trusted_key_options contains fields that are specific to the TPM
>> trusted source, resulting in the accumulation backend-specific fields in
>> the generic options structure.
>>
>> Move the TPM-specific fields into a new struct trusted_key_tpm and store a
>> pointer to it in the private member of struct trusted_key_options.
>>
>> As a preparatory change, return immediately after a TPM unseal failure to
>> prevent pcrlock() from overwriting the unseal error.
>>
>> Changelog:
>>
>>   v9:
>>    - Resent the full patch set with consistent v9 subject prefix
>>    - Corrected patch 1/2, which was sent as v3 in v8, which caused b4 to
>>      flag the series as incomplete
>>
>>   v8:
>>    - Rebase onto commit
>>      adc6a9f6d997 ("KEYS: trusted: Fix tpm2_load_cmd() boundary check")
>>      to resolve the merge conflicts
>>    - Include Jarkko's Reviewed-by tag
>>
>>   v7:
>>    - Fix a memory leak in the preparatory fix
>>
>>   v6:
>>    - Add a preparatory fix to return immediately after a TPM unseal failure
>>    - Replace explicit cleanup with __free(kfree_sensitive) in the TPM seal
>>      and unseal paths, as suggested by Jarkko
>>
>>   v5:
>>    - Rename struct trusted_tpm_options to struct trusted_key_tpm, as
>>      suggestedby Jarkko.
>>
>>   v4:
>>    - Rebased onto mainline after tpm-buf memory-safe allocation changes were
>>      merged
>>    - Resolved the resulting merge conflicts
>>
>>   v3:
>>    - Exclude the preparatory clean up patch as the problem has been
>>      addressed in commit
>>      9ec4175a30eb ("KEYS: trusted: Debugging as a feature")
>>
>>   v2:
>>    - Exclude the bug-fix patch as it has already been applied to 6.19-rc7
>>    - Rename instances of trusted_tpm_options from tpm_opts to private
>>    - Use pr_debug and KERN_DEBUG for logging debug messages (preparatory
>>      clean up patch)
>>    - Address other minor comments from Jarkko
>>
>> Srish Srinivasan (2):
>>    keys/trusted_keys: return immediately after TPM unseal failure
>>    keys/trusted_keys: move TPM-specific fields into struct
>>      trusted_key_tpm
>>
>>   include/keys/trusted-type.h               |  11 --
>>   include/keys/trusted_tpm.h                |  14 +++
>>   security/keys/trusted-keys/trusted_tpm1.c | 125 ++++++++++++----------
>>   security/keys/trusted-keys/trusted_tpm2.c |  50 +++++----
>>   4 files changed, 113 insertions(+), 87 deletions(-)
>>
>> -- 
>> 2.53.0
>>
> I applied v8 already. Please check from my tree whether this needs
> reapplying or not.


Hi Jarkko,

There is no functional change between v8 and v9.

As per 
https://lore.kernel.org/all/aqR1vX9u209mCHsq@kernel.org/#:~:text=ERROR%3A%20missing%20%5B1/2%5D!
v8 did not apply cleanly as I got the versioning for patch 1/2 wrong.

I fixed that problem in v9.

>
> BR, Jarkko

Thanks,
Srish.