lkml.org 
[lkml]   [2020]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.9 554/757] vfio/pci: Clear token on bypass registration failure
    Date
    From: Alex Williamson <alex.williamson@redhat.com>

    [ Upstream commit 852b1beecb6ff9326f7ca4bc0fe69ae860ebdb9e ]

    The eventfd context is used as our irqbypass token, therefore if an
    eventfd is re-used, our token is the same. The irqbypass code will
    return an -EBUSY in this case, but we'll still attempt to unregister
    the producer, where if that duplicate token still exists, results in
    removing the wrong object. Clear the token of failed producers so
    that they harmlessly fall out when unregistered.

    Fixes: 6d7425f109d2 ("vfio: Register/unregister irq_bypass_producer")
    Reported-by: guomin chen <guomin_chen@sina.com>
    Tested-by: guomin chen <guomin_chen@sina.com>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/vfio/pci/vfio_pci_intrs.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    diff --git a/drivers/vfio/pci/vfio_pci_intrs.c b/drivers/vfio/pci/vfio_pci_intrs.c
    index 1d9fb25929459..869dce5f134dd 100644
    --- a/drivers/vfio/pci/vfio_pci_intrs.c
    +++ b/drivers/vfio/pci/vfio_pci_intrs.c
    @@ -352,11 +352,13 @@ static int vfio_msi_set_vector_signal(struct vfio_pci_device *vdev,
    vdev->ctx[vector].producer.token = trigger;
    vdev->ctx[vector].producer.irq = irq;
    ret = irq_bypass_register_producer(&vdev->ctx[vector].producer);
    - if (unlikely(ret))
    + if (unlikely(ret)) {
    dev_info(&pdev->dev,
    "irq bypass producer (token %p) registration fails: %d\n",
    vdev->ctx[vector].producer.token, ret);

    + vdev->ctx[vector].producer.token = NULL;
    + }
    vdev->ctx[vector].trigger = trigger;

    return 0;
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-10-27 17:41    [W:4.060 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site