Showing error 1020

User: Jiri Slaby
Error type: Leaving function in locked state
Error type description: Some lock is not unlocked on all paths of a function, so it is leaked
File location: net/xfrm/xfrm_policy.c
Line in file: 2362
Project: Linux Kernel
Project version: 2.6.28
Tools: Undetermined 1
Entered: 2012-03-04 17:07:06 UTC


Source:

2332        if (unlikely(afinfo->family >= NPROTO))
2333                return -EAFNOSUPPORT;
2334        write_lock_bh(&xfrm_policy_afinfo_lock);
2335        if (likely(xfrm_policy_afinfo[afinfo->family] != NULL)) {
2336                if (unlikely(xfrm_policy_afinfo[afinfo->family] != afinfo))
2337                        err = -EINVAL;
2338                else {
2339                        struct dst_ops *dst_ops = afinfo->dst_ops;
2340                        xfrm_policy_afinfo[afinfo->family] = NULL;
2341                        dst_ops->kmem_cachep = NULL;
2342                        dst_ops->check = NULL;
2343                        dst_ops->negative_advice = NULL;
2344                        dst_ops->link_failure = NULL;
2345                        afinfo->garbage_collect = NULL;
2346                }
2347        }
2348        write_unlock_bh(&xfrm_policy_afinfo_lock);
2349        return err;
2350}
2351EXPORT_SYMBOL(xfrm_policy_unregister_afinfo);
2352
2353static struct xfrm_policy_afinfo *xfrm_policy_get_afinfo(unsigned short family)
2354{
2355        struct xfrm_policy_afinfo *afinfo;
2356        if (unlikely(family >= NPROTO))
2357                return NULL;
2358        read_lock(&xfrm_policy_afinfo_lock);
2359        afinfo = xfrm_policy_afinfo[family];
2360        if (unlikely(!afinfo))
2361                read_unlock(&xfrm_policy_afinfo_lock);
2362        return afinfo;
2363}
2364
2365static void xfrm_policy_put_afinfo(struct xfrm_policy_afinfo *afinfo)
2366{
2367        read_unlock(&xfrm_policy_afinfo_lock);
2368}
2369
2370static int xfrm_dev_event(struct notifier_block *this, unsigned long event, void *ptr)
2371{
2372        struct net_device *dev = ptr;
Show full sources