Re: creation of sock

From: Jacob L E Blain Christen (dweomer@entheal.com)
Date: Fri Feb 23 2001 - 16:53:10 EST


im a kernel newbie here so pardon "the blind leading the blind" ...

doing a quick search for all calls to sk_alloc in the entire kernel
sources
yields only one call that sets the "zero out the allocated struct"
boolean
to false and that is:
        net/ipv4/tcp_minisocks.c:tcp_create_openreq_child().
this funtion in turn is only ever called from:
        net/ipv[46]/tcp_ipv[46].c:tcp_v[46]_syn_recv_sock()

the comment above the ipv4 version is (verbatim):

        /*
         * The three way handshake has completed - we got a valid synack -
         * now create the new socket.
         */

so if you need those experimental values of yours zeroed out on socket
creation i suggest replacing this snippet from
net/core/sock.c:sk_alloc()

        if(sk && zero_it) {
                memset(sk, 0, sizeof(struct sock));
                sk->family = family;
                sock_lock_init(sk);
        }

with

        if( sk ) {
                /* set your NULL init values here */
                if( zero_it ) {
                        memset(sk, 0, sizeof(struct sock));
                        sk->family = family;
                        sock_lock_init(sk);
                }
        }

doh! i just re-read your mail and realized youre using the 2.2.15
kernel.
my examples are from the 2.4.2 sources...

looking at the 2.2.16 source (i have only 2.2.1[46] and not 2.2.15 for
the
2.2 series) the (roughly) congruent if block of code is:

        if(sk) {
                if (zero_it)
                        memset(sk, 0, sizeof(struct sock));
                sk->family = family;
        }

and so if you're setting your init values to NULL under the "zero_it"
condition you would get the behavior that you reported.

hope that helps.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Feb 23 2001 - 21:00:31 EST