summaryrefslogtreecommitdiff
path: root/net/core/sock.c
diff options
context:
space:
mode:
authorJeff Garzik <jgarzik@pobox.com>2005-10-04 03:48:49 +0400
committerJeff Garzik <jgarzik@pobox.com>2005-10-04 03:48:49 +0400
commit0fbbbf2bde4da5cb01a949c3d7b21c0627f520a8 (patch)
treef081ef10f3067b28a1ee316a8e7292eeda143419 /net/core/sock.c
parent54f00389563c80fa1de250a21256313ba01ca07d (diff)
parent2b235826098bb653982894dfc3f70fd029f6c2e4 (diff)
downloadlinux-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.c20
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)