[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v3 15/21] xen/tpmfront: use xenbus_setup_ring() and xenbus_teardown_ring()



Simplify tpmfront's ring creation and removal via xenbus_setup_ring()
and xenbus_teardown_ring().

Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
---
 drivers/char/tpm/xen-tpmfront.c | 18 +++---------------
 1 file changed, 3 insertions(+), 15 deletions(-)

diff --git a/drivers/char/tpm/xen-tpmfront.c b/drivers/char/tpm/xen-tpmfront.c
index 69df04ae2401..379291826261 100644
--- a/drivers/char/tpm/xen-tpmfront.c
+++ b/drivers/char/tpm/xen-tpmfront.c
@@ -253,20 +253,12 @@ static int setup_ring(struct xenbus_device *dev, struct 
tpm_private *priv)
        struct xenbus_transaction xbt;
        const char *message = NULL;
        int rv;
-       grant_ref_t gref;
 
-       priv->shr = (void *)__get_free_page(GFP_KERNEL|__GFP_ZERO);
-       if (!priv->shr) {
-               xenbus_dev_fatal(dev, -ENOMEM, "allocating shared ring");
-               return -ENOMEM;
-       }
-
-       rv = xenbus_grant_ring(dev, priv->shr, 1, &gref);
+       rv = xenbus_setup_ring(dev, GFP_KERNEL, (void **)&priv->shr, 1,
+                              &priv->ring_ref);
        if (rv < 0)
                return rv;
 
-       priv->ring_ref = gref;
-
        rv = xenbus_alloc_evtchn(dev, &priv->evtchn);
        if (rv)
                return rv;
@@ -331,11 +323,7 @@ static void ring_free(struct tpm_private *priv)
        if (!priv)
                return;
 
-       if (priv->ring_ref)
-               gnttab_end_foreign_access(priv->ring_ref,
-                               (unsigned long)priv->shr);
-       else
-               free_page((unsigned long)priv->shr);
+       xenbus_teardown_ring((void **)&priv->shr, 1, &priv->ring_ref);
 
        if (priv->irq)
                unbind_from_irqhandler(priv->irq, priv);
-- 
2.35.3




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.