Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=77f1f67a1a56defa210c3d8857f3e5eee3990a99
Commit:     77f1f67a1a56defa210c3d8857f3e5eee3990a99
Parent:     95756482c9bfa375418c5a32455494a3042f65cd
Author:     Chuck Lever <[EMAIL PROTECTED]>
AuthorDate: Mon Feb 12 00:53:39 2007 -0800
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Mon Feb 12 09:48:36 2007 -0800

    [PATCH] knfsd: SUNRPC: fix up svc_create_socket() to take a sockaddr struct 
+ length
    
    Replace existing svc_create_socket() API to allow callers to pass addresses
    larger than a sockaddr_in.
    
    Signed-off-by: Chuck Lever <[EMAIL PROTECTED]>
    Cc: Aurelien Charbon <[EMAIL PROTECTED]>
    Signed-off-by: Neil Brown <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 net/sunrpc/svcsock.c |   16 ++++++++--------
 1 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
index 6f509b9..63ae947 100644
--- a/net/sunrpc/svcsock.c
+++ b/net/sunrpc/svcsock.c
@@ -1700,7 +1700,7 @@ EXPORT_SYMBOL_GPL(svc_addsock);
  * Create socket for RPC service.
  */
 static int svc_create_socket(struct svc_serv *serv, int protocol,
-                               struct sockaddr_in *sin, int flags)
+                               struct sockaddr *sin, int len, int flags)
 {
        struct svc_sock *svsk;
        struct socket   *sock;
@@ -1710,8 +1710,7 @@ static int svc_create_socket(struct svc_serv *serv, int 
protocol,
 
        dprintk("svc: svc_create_socket(%s, %d, %s)\n",
                        serv->sv_program->pg_name, protocol,
-                       __svc_print_addr((struct sockaddr *) sin, buf,
-                                                               sizeof(buf)));
+                       __svc_print_addr(sin, buf, sizeof(buf)));
 
        if (protocol != IPPROTO_UDP && protocol != IPPROTO_TCP) {
                printk(KERN_WARNING "svc: only UDP and TCP "
@@ -1720,15 +1719,15 @@ static int svc_create_socket(struct svc_serv *serv, int 
protocol,
        }
        type = (protocol == IPPROTO_UDP)? SOCK_DGRAM : SOCK_STREAM;
 
-       if ((error = sock_create_kern(PF_INET, type, protocol, &sock)) < 0)
+       error = sock_create_kern(sin->sa_family, type, protocol, &sock);
+       if (error < 0)
                return error;
 
        svc_reclassify_socket(sock);
 
        if (type == SOCK_STREAM)
-               sock->sk->sk_reuse = 1; /* allow address reuse */
-       error = kernel_bind(sock, (struct sockaddr *) sin,
-                                       sizeof(*sin));
+               sock->sk->sk_reuse = 1;         /* allow address reuse */
+       error = kernel_bind(sock, sin, len);
        if (error < 0)
                goto bummer;
 
@@ -1818,7 +1817,8 @@ int svc_makesock(struct svc_serv *serv, int protocol, 
unsigned short port,
        };
 
        dprintk("svc: creating socket proto = %d\n", protocol);
-       return svc_create_socket(serv, protocol, &sin, flags);
+       return svc_create_socket(serv, protocol, (struct sockaddr *) &sin,
+                                                       sizeof(sin), flags);
 }
 
 /*
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to