Re: [PATCH 6/8] Make the sk_clone() lighter

2007-11-01 Thread David Miller
From: Pavel Emelyanov [EMAIL PROTECTED]
Date: Wed, 31 Oct 2007 16:54:34 +0300

 The sk_prot_alloc() already performs all the stuff needed by the
 sk_clone(). Besides, the sk_prot_alloc() requires almost twice
 less arguments than the sk_alloc() does, so call the sk_prot_alloc()
 saving the stack a bit.
 
 Signed-off-by: Pavel Emelyanov [EMAIL PROTECTED]

I reread this patch and now I understand why it's correct.

When zero_it argument is zero, as was the case here, all of
the sk-sk_net processing is not done.

Applied, thanks.
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 6/8] Make the sk_clone() lighter

2007-11-01 Thread Pavel Emelyanov
David Miller wrote:
 From: Pavel Emelyanov [EMAIL PROTECTED]
 Date: Wed, 31 Oct 2007 16:54:34 +0300
 
 The sk_prot_alloc() already performs all the stuff needed by the
 sk_clone(). Besides, the sk_prot_alloc() requires almost twice
 less arguments than the sk_alloc() does, so call the sk_prot_alloc()
 saving the stack a bit.

 Signed-off-by: Pavel Emelyanov [EMAIL PROTECTED]

 ---

 diff --git a/net/core/sock.c b/net/core/sock.c
 index e7537e4..c032f48 100644
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
 @@ -976,8 +976,9 @@ void sk_free(struct sock *sk)
  
  struct sock *sk_clone(const struct sock *sk, const gfp_t priority)
  {
 -struct sock *newsk = sk_alloc(sk-sk_net, sk-sk_family, priority, 
 sk-sk_prot, 0);
 -
 +struct sock *newsk;
 +
 +newsk = sk_prot_alloc(sk-sk_prot, priority, sk-sk_family);
  if (newsk != NULL) {
  struct sk_filter *filter;
  
 
 After we make this change, what will set up newsk-sk_net?

This will be done automatically in the sock_copy().

 That's part of what sk_alloc() was doing for us, and that's
 why we need to pass the extra argument.
 

No it wasn't doing it for us, because the sk_net assignment was
done inside the if (zero_it) branch, but zero_it is 0 in this case.

Thanks,
Pavel
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 6/8] Make the sk_clone() lighter

2007-11-01 Thread David Miller
From: Pavel Emelyanov [EMAIL PROTECTED]
Date: Wed, 31 Oct 2007 16:54:34 +0300

 The sk_prot_alloc() already performs all the stuff needed by the
 sk_clone(). Besides, the sk_prot_alloc() requires almost twice
 less arguments than the sk_alloc() does, so call the sk_prot_alloc()
 saving the stack a bit.
 
 Signed-off-by: Pavel Emelyanov [EMAIL PROTECTED]
 
 ---
 
 diff --git a/net/core/sock.c b/net/core/sock.c
 index e7537e4..c032f48 100644
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
 @@ -976,8 +976,9 @@ void sk_free(struct sock *sk)
  
  struct sock *sk_clone(const struct sock *sk, const gfp_t priority)
  {
 - struct sock *newsk = sk_alloc(sk-sk_net, sk-sk_family, priority, 
 sk-sk_prot, 0);
 -
 + struct sock *newsk;
 +
 + newsk = sk_prot_alloc(sk-sk_prot, priority, sk-sk_family);
   if (newsk != NULL) {
   struct sk_filter *filter;
  

After we make this change, what will set up newsk-sk_net?

That's part of what sk_alloc() was doing for us, and that's
why we need to pass the extra argument.
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 6/8] Make the sk_clone() lighter

2007-10-31 Thread Pavel Emelyanov
The sk_prot_alloc() already performs all the stuff needed by the
sk_clone(). Besides, the sk_prot_alloc() requires almost twice
less arguments than the sk_alloc() does, so call the sk_prot_alloc()
saving the stack a bit.

Signed-off-by: Pavel Emelyanov [EMAIL PROTECTED]

---

diff --git a/net/core/sock.c b/net/core/sock.c
index e7537e4..c032f48 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -976,8 +976,9 @@ void sk_free(struct sock *sk)
 
 struct sock *sk_clone(const struct sock *sk, const gfp_t priority)
 {
-   struct sock *newsk = sk_alloc(sk-sk_net, sk-sk_family, priority, 
sk-sk_prot, 0);
-
+   struct sock *newsk;
+
+   newsk = sk_prot_alloc(sk-sk_prot, priority, sk-sk_family);
if (newsk != NULL) {
struct sk_filter *filter;
 
-- 
1.5.3.4

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html