This is a note to let you know that I've just added the patch titled

    IB/qib: Fix debugfs ordering issue with multiple HCAs

to the 3.14-stable tree which can be found at:
    
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     ib-qib-fix-debugfs-ordering-issue-with-multiple-hcas.patch
and it can be found in the queue-3.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.


>From f8b6c47a44c063062317646683a73371c24c69ee Mon Sep 17 00:00:00 2001
From: Mike Marciniszyn <[email protected]>
Date: Fri, 7 Mar 2014 08:32:31 -0500
Subject: IB/qib: Fix debugfs ordering issue with multiple HCAs

From: Mike Marciniszyn <[email protected]>

commit f8b6c47a44c063062317646683a73371c24c69ee upstream.

The debugfs init code was incorrectly called before the idr mechanism
is used to get the unit number, so the dd->unit hasn't been
initialized.  This caused the unit relative directory creation to fail
after the first.

This patch moves the init for the debugfs stuff until after all of the
failures and after the unit number has been determined.

A bug in unwind code in qib_alloc_devdata() is also fixed.

Reviewed-by: Dennis Dalessandro <[email protected]>
Signed-off-by: Mike Marciniszyn <[email protected]>
Signed-off-by: Roland Dreier <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
 drivers/infiniband/hw/qib/qib_init.c |   25 +++++++++++--------------
 1 file changed, 11 insertions(+), 14 deletions(-)

--- a/drivers/infiniband/hw/qib/qib_init.c
+++ b/drivers/infiniband/hw/qib/qib_init.c
@@ -1097,14 +1097,10 @@ struct qib_devdata *qib_alloc_devdata(st
        int ret;
 
        dd = (struct qib_devdata *) ib_alloc_device(sizeof(*dd) + extra);
-       if (!dd) {
-               dd = ERR_PTR(-ENOMEM);
-               goto bail;
-       }
+       if (!dd)
+               return ERR_PTR(-ENOMEM);
 
-#ifdef CONFIG_DEBUG_FS
-       qib_dbg_ibdev_init(&dd->verbs_dev);
-#endif
+       INIT_LIST_HEAD(&dd->list);
 
        idr_preload(GFP_KERNEL);
        spin_lock_irqsave(&qib_devs_lock, flags);
@@ -1121,11 +1117,6 @@ struct qib_devdata *qib_alloc_devdata(st
        if (ret < 0) {
                qib_early_err(&pdev->dev,
                              "Could not allocate unit ID: error %d\n", -ret);
-#ifdef CONFIG_DEBUG_FS
-               qib_dbg_ibdev_exit(&dd->verbs_dev);
-#endif
-               ib_dealloc_device(&dd->verbs_dev.ibdev);
-               dd = ERR_PTR(ret);
                goto bail;
        }
 
@@ -1139,9 +1130,15 @@ struct qib_devdata *qib_alloc_devdata(st
                        qib_early_err(&pdev->dev,
                                "Could not alloc cpulist info, cpu affinity 
might be wrong\n");
        }
-
-bail:
+#ifdef CONFIG_DEBUG_FS
+       qib_dbg_ibdev_init(&dd->verbs_dev);
+#endif
        return dd;
+bail:
+       if (!list_empty(&dd->list))
+               list_del_init(&dd->list);
+       ib_dealloc_device(&dd->verbs_dev.ibdev);
+       return ERR_PTR(ret);;
 }
 
 /*


Patches currently in stable-queue which might be from 
[email protected] are

queue-3.14/ib-qib-fix-debugfs-ordering-issue-with-multiple-hcas.patch
queue-3.14/ib-qib-add-missing-braces-in-do_qib_user_sdma_queue_create.patch
queue-3.14/ib-ipath-fix-potential-buffer-overrun-in-sending-diag-packet-routine.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to