link: fix reference leak in rtnl_link_af_data_compare()

Signed-off-by: Thomas Graf <tgraf@suug.ch>
This commit is contained in:
Thomas Graf 2013-01-18 14:49:08 +01:00
parent 5c3f2f015a
commit 5291af6fb5

View file

@ -366,20 +366,25 @@ int rtnl_link_af_data_compare(struct rtnl_link *a, struct rtnl_link *b,
int family)
{
struct rtnl_link_af_ops *af_ops = rtnl_link_af_ops_lookup(family);
int ret = 0;
if (!af_ops)
return ~0;
if (!a->l_af_data[family] && !b->l_af_data[family])
return 0;
goto out;
if (!a->l_af_data[family] || !b->l_af_data[family])
return ~0;
if (!a->l_af_data[family] || !b->l_af_data[family]) {
ret = ~0;
goto out;
}
if (af_ops->ao_compare)
return af_ops->ao_compare(a, b, family, ~0, 0);
ret = af_ops->ao_compare(a, b, family, ~0, 0);
out:
rtnl_link_af_ops_put(af_ops);
return 0;
return ret;
}
/** @} */