From 8983fa99140297aa4a57b11b0222cf26c135bd00 Mon Sep 17 00:00:00 2001 From: Nathan Lynch Date: Mon, 29 Apr 2013 16:29:46 -0500 Subject: [PATCH] rtnl_link_af_unregister: fix locking rtnl_link_af_unregister() attempts to write-lock info_lock twice instead of releasing it before returning. It also will return with info_lock write-locked if passed a NULL ops. Signed-off-by: Thomas Graf --- lib/route/link/api.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/route/link/api.c b/lib/route/link/api.c index 352bb83..6d1e12f 100644 --- a/lib/route/link/api.c +++ b/lib/route/link/api.c @@ -326,7 +326,7 @@ int rtnl_link_af_unregister(struct rtnl_link_af_ops *ops) int err = -NLE_INVAL; if (!ops) - goto errout; + return err; nl_write_lock(&info_lock); if (!af_ops[ops->ao_family]) { @@ -345,7 +345,7 @@ int rtnl_link_af_unregister(struct rtnl_link_af_ops *ops) ops->ao_family); errout: - nl_write_lock(&info_lock); + nl_write_unlock(&info_lock); return err; }