All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Aneesh Kumar K.V (Arm)" <aneesh.kumar@kernel.org>
Cc: kvm@vger.kernel.org, linux-pci@vger.kernel.org
Subject: Re: [PATCH v8 03/15] virt: coco: tsm: Complete PCI registration before publishing the device
Date: Wed, 04 Nov 2026 16:32:59 +0000	[thread overview]
Message-ID: <sashiko-outbox-197622@kernel.org> (raw)
In-Reply-To: <20261104161632.3547423-4-aneesh.kumar@kernel.org>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] virt: coco: tsm: stale sysfs update and commit reference in commit log
--

commit 5fae6df00051f68d8e86275946ecd6ac727fb344
Author: Aneesh Kumar K.V (Arm) <aneesh.kumar@kernel.org>

virt: coco: tsm: Complete PCI registration before publishing the device

This commit moves PCI TSM registration ahead of device_add() in tsm_register()
so that a TSM device is not discoverable through class lookup while PCI
registration can still fail, and rolls back PCI registration if device_add()
fails.

>     virt: coco: tsm: Complete PCI registration before publishing the device
>     
>     tsm_register() calls device_add() before initializing and validating the
>     PCI operations. This makes the new TSM discoverable through the class
>     lookup while PCI registration can still fail. This ordering was introduced
>     by commit 3225f52cde56 ("PCI/TSM: Establish Secure Sessions and Link
>     Encryption").
>     
>     An existing link TSM can keep the PCI connect attribute visible during
>     registration of another TSM. A concurrent write naming the new TSM can
>     therefore reach it through:
>     
>       connect_store()
>         find_tsm_dev()
>           class_find_device()
>         is_link_tsm()
>         pci_tsm_connect()
>     
>     If the new backend supplies both link and device security operations,
>     pci_tsm_register() rejects it before taking pci_tsm_rwsem. The registration
>     thread then follows:
>     
>       tsm_register()
>         tsm_register_pci()
>           pci_tsm_register() -> -EINVAL
>           tsm_dev->pci_ops = NULL
>         device_del()
>         put_tsm_dev() [cleanup guard]
>     
>     If connect has already attached a PCI context, its temporary device
>     reference does not protect the stored tsm_dev pointer after the call
>     returns. Registration cleanup can then free a TSM still referenced by
>     that context. The original tsm_register_pci_or_reset() error path also
>     had this problem: device_unregister() removed the class device and dropped
>     its reference without tearing down an attached PCI context.
>     
>     Commit 37a73b0448ad ("tsm: Remove the device from lookup before PCI
>     teardown") subsequently added the unlocked pci_ops reset shown above.
>     That reset can also race with the connect path's accesses to pci_ops.
>     
>     Complete PCI registration before device_add() publishes the class device.
>     On PCI registration failure, the TSM remains undiscoverable. If
>     device_add() fails instead, unregister the PCI operations to roll back
>     the counters and PCI sysfs visibility before releasing the device.
>     
>     With pci_ops initialized before device_add(), the class PCI attributes
>     are created with the correct visibility, so remove the subsequent sysfs
>     group update. Keep the PCI change notification after successful device
>     publication.
>     
>     Fixes: 3225f52cde56 ("PCI/TSM: Establish Secure Sessions and Link Encryption")
>     Signed-off-by: Aneesh Kumar K.V (Arm) <aneesh.kumar@kernel.org>

[Severity: Medium]
Does the commit message match the actual changes in
drivers/virt/coco/tsm-core.c?

The final paragraph states that class PCI attributes are created with the
correct visibility and that a subsequent sysfs group update is removed.
However, in drivers/virt/coco/tsm-core.c, tsm_class only defines .name and
.dev_release without any class PCI attributes or attribute groups:

static const struct class tsm_class = {
	.name		= "tsm",
	.dev_release	= tsm_release
};

Neither tsm_register_pci() nor tsm_register() contained or removed a
sysfs_update_group() call; the patch only reorders tsm_register_pci() before
device_add(), adds pci_tsm_unregister() on the device_add() error path, and
moves kobject_uevent(&dev->kobj, KOBJ_CHANGE) from tsm_register_pci() into
tsm_register() after device_add().

Also, the commit message references commit 37a73b0448ad ("tsm: Remove the
device from lookup before PCI teardown"), which does not exist in the commit
history because the preceding commit in the series is 2ae926219f58 ("virt:
coco: tsm: Remove the device from lookup before PCI teardown"). Could the
commit message be updated to remove the stale sysfs group description and
reference the right commit?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261104161632.3547423-1-aneesh.kumar@kernel.org?part=3

  reply	other threads:[~2026-11-04 16:32 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-04 16:16 [PATCH v8 00/15] iommufd: TSM-backed virtual IOMMUs for confidential guests Aneesh Kumar K.V (Arm)
2026-11-04 16:16 ` [PATCH v8 01/15] PCI/TSM: Move core code into its own directory Aneesh Kumar K.V (Arm)
2026-11-04 16:23   ` sashiko-bot
2026-11-04 16:16 ` [PATCH v8 02/15] virt: coco: tsm: Remove the device from lookup before PCI teardown Aneesh Kumar K.V (Arm)
2026-11-04 16:27   ` sashiko-bot
2026-11-04 16:16 ` [PATCH v8 03/15] virt: coco: tsm: Complete PCI registration before publishing the device Aneesh Kumar K.V (Arm)
2026-11-04 16:32   ` sashiko-bot [this message]
2026-11-04 16:16 ` [PATCH v8 04/15] virt: coco: tsm: Require PCI operations when registering a TSM Aneesh Kumar K.V (Arm)
2026-11-04 16:36   ` sashiko-bot
2026-11-04 16:16 ` [PATCH v8 05/15] iommufd/device: Associate KVM file pointer with iommufd_device Aneesh Kumar K.V (Arm)
2026-11-04 16:40   ` sashiko-bot
2026-11-04 16:16 ` [PATCH v8 06/15] iommufd/device: Hold a KVM file reference for the device lifetime Aneesh Kumar K.V (Arm)
2026-11-04 16:43   ` sashiko-bot
2026-11-04 16:16 ` [PATCH v8 07/15] iommufd/viommu: Keep a reference to the KVM file Aneesh Kumar K.V (Arm)
2026-11-04 16:35   ` Jacob Pan
2026-11-04 16:46   ` sashiko-bot
2026-11-04 16:16 ` [PATCH v8 08/15] iommufd: Add a vDEVICE operation ioctl framework Aneesh Kumar K.V (Arm)
2026-11-04 16:54   ` sashiko-bot
2026-11-04 16:16 ` [PATCH v8 09/15] PCI/TSM: Remove the legacy guest request interface Aneesh Kumar K.V (Arm)
2026-11-04 16:56   ` sashiko-bot
2026-11-04 16:16 ` [PATCH v8 10/15] PCI/TSM: Add vIOMMU-bound device contexts Aneesh Kumar K.V (Arm)
2026-11-04 17:07   ` sashiko-bot
2026-11-04 16:16 ` [PATCH v8 11/15] iommufd/viommu: Select vIOMMU operations before allocation Aneesh Kumar K.V (Arm)
2026-11-04 17:14   ` sashiko-bot
2026-11-04 16:16 ` [PATCH v8 12/15] iommufd/viommu: Allow PCI TSM backends to provide vIOMMU operations Aneesh Kumar K.V (Arm)
2026-11-04 17:19   ` sashiko-bot
2026-11-04 23:23   ` Jacob Pan
2026-11-04 16:16 ` [PATCH v8 13/15] iommufd/viommu: Allow vIOMMUs without a parent HWPT Aneesh Kumar K.V (Arm)
2026-11-04 17:25   ` sashiko-bot
2026-11-04 19:03   ` Nicolin Chen
2026-11-04 19:31     ` Jason Gunthorpe
2026-11-04 16:16 ` [PATCH v8 14/15] PCI/TSM: Wait for device contexts before removing a DSM Aneesh Kumar K.V (Arm)
2026-11-04 17:41   ` sashiko-bot
2026-11-04 16:16 ` [PATCH v8 15/15] PCI/TSM: Wait for users during unregister Aneesh Kumar K.V (Arm)
2026-11-04 18:00   ` sashiko-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=sashiko-outbox-197622@kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=aneesh.kumar@kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.