diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2005-10-04 03:48:49 +0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-10-04 03:48:49 +0400 |
commit | 0fbbbf2bde4da5cb01a949c3d7b21c0627f520a8 (patch) | |
tree | f081ef10f3067b28a1ee316a8e7292eeda143419 /net/core/sock.c | |
parent | 54f00389563c80fa1de250a21256313ba01ca07d (diff) | |
parent | 2b235826098bb653982894dfc3f70fd029f6c2e4 (diff) | |
download | linux-0fbbbf2bde4da5cb01a949c3d7b21c0627f520a8.tar.xz |
Merge libata upstream (which includes C/H/S support) include irq-pio branch.
Merge branch 'upstream'
Diffstat (limited to 'net/core/sock.c')
-rw-r--r-- | net/core/sock.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/net/core/sock.c b/net/core/sock.c index ac63b56e23b2..928d2a1d6d8e 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -660,16 +660,20 @@ struct sock *sk_alloc(int family, unsigned int __nocast priority, sock_lock_init(sk); } - if (security_sk_alloc(sk, family, priority)) { - if (slab != NULL) - kmem_cache_free(slab, sk); - else - kfree(sk); - sk = NULL; - } else - __module_get(prot->owner); + if (security_sk_alloc(sk, family, priority)) + goto out_free; + + if (!try_module_get(prot->owner)) + goto out_free; } return sk; + +out_free: + if (slab != NULL) + kmem_cache_free(slab, sk); + else + kfree(sk); + return NULL; } void sk_free(struct sock *sk) |