X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=net%2Fipv4%2Fip_sockglue.c;h=035ad645a8d9d8abd55321ad2bcd0e44d1d0fc3c;hb=b633353115e352d3c31c12d4c61978c810f05ea1;hp=3f1befc4e17b244e4f356b0ccf7fb863e80850e3;hpb=b1d95ae5c5bd3deba84d00c4f83d7d0836b5936f;p=linux-2.6-block.git diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c index 3f1befc4e17b..035ad645a8d9 100644 --- a/net/ipv4/ip_sockglue.c +++ b/net/ipv4/ip_sockglue.c @@ -249,6 +249,8 @@ int ip_cmsg_send(struct net *net, struct msghdr *msg, struct ipcm_cookie *ipc, switch (cmsg->cmsg_type) { case IP_RETOPTS: err = cmsg->cmsg_len - CMSG_ALIGN(sizeof(struct cmsghdr)); + + /* Our caller is responsible for freeing ipc->opt */ err = ip_options_get(net, &ipc->opt, CMSG_DATA(cmsg), err < 40 ? err : 40); if (err)