kNFSd - 1 of 7 - Fix cmsg setup for sock_sendmsg in svc_sendto
Subsystems (3)
PATCH 1/1 kNFSd - 1 of 7 - Fix cmsg setup for sock_sendmsg in svc_sendto
7 patches for knfsd in 2.6.0-testX. All NFSv4 related, except this first one. Thanks,
NeilBrown
### Comments for ChangeSet
From: Trond Myklebust <[email protected]>
... see the code in ip_sockglue.c + the macros in socket.h.... AFAICS the control messages have wierd alignment requirements.
----------- Diffstat output ------------
./net/sunrpc/svcsock.c | 20 ++++++++++---------- 1 files changed, 10 insertions(+), 10 deletions(-)
net/sunrpc/svcsock.c renamed from net/sunrpc/svcsock.c~current~ +10 -10
@@ -352,9 +352,9 @@ svc_sendto(struct svc_rqst *rqstp, strucstruct svc_sock *svsk = rqstp->rq_sock;struct socket *sock = svsk->sk_sock;int slen; -struct {struct cmsghdr cmh; -struct in_pktinfo pki; - } cm; +char buffer[CMSG_SPACE (sizeof (struct in_pktinfo ))]; +struct cmsghdr *cmh = (struct cmsghdr *)buffer; +struct in_pktinfo *pki = (struct in_pktinfo *)CMSG_DATA (cmh);int len =0 ;int result;int size;
@@ -374,13 +374,13 @@ svc_sendto(struct svc_rqst *rqstp, struc msg.msg_iovlen =0 ; msg.msg_flags =MSG_MORE ; - msg.msg_control = &cm; - msg.msg_controllen =sizeof (cm); - cm.cmh.cmsg_len =sizeof (cm); - cm.cmh.cmsg_level =SOL_IP ; - cm.cmh.cmsg_type =IP_PKTINFO ; - cm.pki.ipi_ifindex =0 ; - cm.pki.ipi_spec_dst.s_addr = rqstp->rq_daddr; + msg.msg_control = cmh; + msg.msg_controllen =sizeof (buffer); + cmh->cmsg_len =CMSG_LEN (sizeof (*pki)); + cmh->cmsg_level =SOL_IP ; + cmh->cmsg_type =IP_PKTINFO ; + pki->ipi_ifindex =0 ; + pki->ipi_spec_dst.s_addr = rqstp->rq_daddr;if (sock_sendmsg (sock, &msg,0 ) <0 ) goto out;
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs