Skip to content

patchwork + nipa + patatt #72

@vladimiroltean

Description

@vladimiroltean

Context: I am trying to deploy a NIPA instance for linux-phy. Thanks for
the amazing work kickstarting and maintaining such an effort.

The end-to-end attestation NIPA test, using patatt, has a problem.
Patch emails are supposed to have the X-Developer-Signature:
and X-Developer-Key: headers, and the hash of the body is supposed to
be able to be verified from the developer's OpenPGP key.

Problem statement: NIPA downloads what it thinks are 'raw' patches from
Patchwork (mbox format, example:
https://patchwork.kernel.org/project/linux-phy/patch/20260216110413.159994-6-krzysztof.kozlowski@oss.qualcomm.com/mbox/)
and runs attestation on those.

But if there was any Reviewed-by: email submitted as a reply to the
original patch, this results in a Reviewed-by tag being automatically
inserted into the body of the mbox file as downloaded from Patchwork.
This effectively corrupts the body as was originally signed, and patatt
validation fails (which means: the patch is no longer in the original
form as submitted by the developer).

Interestingly, the patch, when received from
"b4 mbox 20260216110413.159994-6-krzysztof.kozlowski@oss.qualcomm.com",
is saved as multiple emails into the same file (one per reply),
unsquashed, and patatt validation can be performed individually.

To me this is perhaps more apparent, because I am retroactively building
patches which sat in patchwork for a really long while. But even in
the case of netdev, there is a race condition such that any time the
automated patatt validation runs after receiving a manual Reviewed-by:
tag (slow builder/long queue + fast developer), it will fail.

Do the tools have a problem, or should NIPA not use the patchwork mbox
URL to download the raw_patch, and switch to another fetcher instead?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions