summaryrefslogtreecommitdiffstats
path: root/drivers/block/drbd/drbd_main.c
diff options
context:
space:
mode:
authorPhilipp Reisner2011-04-24 10:53:19 +0200
committerPhilipp Reisner2012-11-08 16:49:06 +0100
commit0ace9dfabec3c1e96a1cd9fe0791ecbe6737c2f9 (patch)
treede80467afbc59c4d98cdf6a3defa55fee051ac98 /drivers/block/drbd/drbd_main.c
parentdrbd: Basic refcounting for drbd_tconn (diff)
downloadkernel-qcow2-linux-0ace9dfabec3c1e96a1cd9fe0791ecbe6737c2f9.tar.gz
kernel-qcow2-linux-0ace9dfabec3c1e96a1cd9fe0791ecbe6737c2f9.tar.xz
kernel-qcow2-linux-0ace9dfabec3c1e96a1cd9fe0791ecbe6737c2f9.zip
drbd: Take a reference on tconn when finding a tconn by name
Rule #3 of kref.txt Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Diffstat (limited to 'drivers/block/drbd/drbd_main.c')
-rw-r--r--drivers/block/drbd/drbd_main.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c
index 11427f59c5af..f0a0e1759bab 100644
--- a/drivers/block/drbd/drbd_main.c
+++ b/drivers/block/drbd/drbd_main.c
@@ -2362,7 +2362,7 @@ static void drbd_init_workqueue(struct drbd_work_queue* wq)
INIT_LIST_HEAD(&wq->q);
}
-struct drbd_tconn *conn_by_name(const char *name)
+struct drbd_tconn *conn_get_by_name(const char *name)
{
struct drbd_tconn *tconn;
@@ -2371,8 +2371,10 @@ struct drbd_tconn *conn_by_name(const char *name)
down_read(&drbd_cfg_rwsem);
list_for_each_entry(tconn, &drbd_tconns, all_tconn) {
- if (!strcmp(tconn->name, name))
+ if (!strcmp(tconn->name, name)) {
+ kref_get(&tconn->kref);
goto found;
+ }
}
tconn = NULL;
found: