lkml.org 
[lkml]   [2022]   [Jul]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [RFC PATCH 2/3] pci/doe: Use devm_xa_init()
    On Tue, Jul 05, 2022 at 04:21:58PM -0700, ira.weiny@intel.com wrote:
    > From: Ira Weiny <ira.weiny@intel.com>
    >
    > The XArray being used to store the protocols does not even store
    > allocated objects.

    I guess the point is that the doe_mb->prots XArray doesn't reference
    any other objects that would need to be freed when destroying
    doe_mb->prots? A few more words here would make the commit log more
    useful to non-XArray experts.

    s|pci/doe|PCI/DOE| in subject to match the drivers/pci convention.

    > Use devm_xa_init() to automatically destroy the XArray when the PCI
    > device goes away.
    >
    > Signed-off-by: Ira Weiny <ira.weiny@intel.com>
    > ---
    > drivers/pci/doe.c | 14 ++------------
    > 1 file changed, 2 insertions(+), 12 deletions(-)
    >
    > diff --git a/drivers/pci/doe.c b/drivers/pci/doe.c
    > index 0b02f33ef994..aa36f459d375 100644
    > --- a/drivers/pci/doe.c
    > +++ b/drivers/pci/doe.c
    > @@ -386,13 +386,6 @@ static int pci_doe_cache_protocols(struct pci_doe_mb *doe_mb)
    > return 0;
    > }
    >
    > -static void pci_doe_xa_destroy(void *mb)
    > -{
    > - struct pci_doe_mb *doe_mb = mb;
    > -
    > - xa_destroy(&doe_mb->prots);
    > -}
    > -
    > static void pci_doe_destroy_workqueue(void *mb)
    > {
    > struct pci_doe_mb *doe_mb = mb;
    > @@ -440,11 +433,8 @@ struct pci_doe_mb *pcim_doe_create_mb(struct pci_dev *pdev, u16 cap_offset)
    > doe_mb->pdev = pdev;
    > doe_mb->cap_offset = cap_offset;
    > init_waitqueue_head(&doe_mb->wq);
    > -
    > - xa_init(&doe_mb->prots);
    > - rc = devm_add_action(dev, pci_doe_xa_destroy, doe_mb);
    > - if (rc)
    > - return ERR_PTR(rc);
    > + if (devm_xa_init(dev, &doe_mb->prots))
    > + return ERR_PTR(-ENOMEM);
    >
    > doe_mb->work_queue = alloc_ordered_workqueue("DOE: [%x]", 0,
    > doe_mb->cap_offset);
    > --
    > 2.35.3
    >

    \
     
     \ /
      Last update: 2022-07-07 18:07    [W:2.879 / U:0.200 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site