netdev
[Top] [All Lists]

[PATCH 1/12][SOCK] make sk_alloc use kmalloc for non performance critica

To: "David S. Miller" <davem@xxxxxxxxxxxxx>
Subject: [PATCH 1/12][SOCK] make sk_alloc use kmalloc for non performance critical families
From: Arnaldo Carvalho de Melo <acme@xxxxxxxxxxxxxxxx>
Date: Fri, 21 Jan 2005 01:18:55 -0200
Cc: Networking Team <netdev@xxxxxxxxxxx>
Organization: Conectiva S.A.
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mozilla Thunderbird 1.0 (X11/20041220)
Hi David,

        Please see the log in the patch.

Regards,

- Arnaldo

===================================================================


ChangeSet@xxxxxx, 2005-01-20 20:25:41-02:00, acme@xxxxxxxxxxxxxxxxxxxxxx
  [SOCK] make sk_alloc use kmalloc for non performance critical families
  
  With this we can have aggregate protocol specific struct proto_sock
  allocated for non performance critical protocols.
  
  We still check for slab == NULL && zero_it == 1 to allocate from the
  generic "sock" slab cache, but this will be removed when all the
  network families stop using sk_protinfo, when the generic "sock"
  slab cache will be removed.
  
  Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxxxxxxxx>
  Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>


 sock.c |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)


diff -Nru a/net/core/sock.c b/net/core/sock.c
--- a/net/core/sock.c   2005-01-21 00:24:03 -02:00
+++ b/net/core/sock.c   2005-01-21 00:24:03 -02:00
@@ -621,9 +621,17 @@
 {
        struct sock *sk = NULL;
 
-       if (!slab)
+       /*
+        * Transitional, this test will be removed when sk_cachep is killed
+        */
+       if (slab == NULL && zero_it == 1)
                slab = sk_cachep;
-       sk = kmem_cache_alloc(slab, priority);
+
+       if (slab != NULL)
+               sk = kmem_cache_alloc(slab, priority);
+       else
+               sk = kmalloc(zero_it, priority);
+
        if (sk) {
                if (zero_it) {
                        memset(sk, 0,
@@ -662,7 +670,10 @@
                       __FUNCTION__, atomic_read(&sk->sk_omem_alloc));
 
        security_sk_free(sk);
-       kmem_cache_free(sk->sk_slab, sk);
+       if (sk->sk_slab != NULL)
+               kmem_cache_free(sk->sk_slab, sk);
+       else
+               kfree(sk);
        module_put(owner);
 }
 


<Prev in Thread] Current Thread [Next in Thread>
  • [PATCH 1/12][SOCK] make sk_alloc use kmalloc for non performance critical families, Arnaldo Carvalho de Melo <=