lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20130930175640.GF10771@order.stressinduktion.org>
Date:	Mon, 30 Sep 2013 19:56:40 +0200
From:	Hannes Frederic Sowa <hannes@...essinduktion.org>
To:	Jiri Pirko <jiri@...nulli.us>
Cc:	netdev@...r.kernel.org, davem@...emloft.net, kuznet@....inr.ac.ru,
	jmorris@...ei.org, kaber@...sh.net, yoshfuji@...ux-ipv6.org
Subject: Re: [patch net] udp6: respect IPV6_DONTFRAG sockopt in case there are pending frames

On Mon, Sep 30, 2013 at 03:50:38PM +0200, Jiri Pirko wrote:
> if up->pending != 0 dontfrag is left with default value -1. That
> causes that application that do:
> sendto len>mtu flag MSG_MORE
> sendto len>mtu flag 0
> will receive EMSGSIZE errno as the result of the second sendto.
> 
> This patch fixes it by respecting IPV6_DONTFRAG socket option.
> 
> introduced by:
> commit 4b340ae20d0e2366792abe70f46629e576adaf5e "IPv6: Complete IPV6_DONTFRAG support"
> 
> Please push to stable as well.
> 
> Signed-off-by: Jiri Pirko <jiri@...nulli.us>
> ---
>  net/ipv6/udp.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
> index 72b7eaa..1878609 100644
> --- a/net/ipv6/udp.c
> +++ b/net/ipv6/udp.c
> @@ -1225,9 +1225,6 @@ do_udp_sendmsg:
>  	if (tclass < 0)
>  		tclass = np->tclass;
>  
> -	if (dontfrag < 0)
> -		dontfrag = np->dontfrag;
> -
>  	if (msg->msg_flags&MSG_CONFIRM)
>  		goto do_confirm;
>  back_from_confirm:
> @@ -1246,6 +1243,8 @@ back_from_confirm:
>  	up->pending = AF_INET6;
>  
>  do_append_data:
> +	if (dontfrag < 0)
> +		dontfrag = np->dontfrag;
>  	up->len += ulen;
>  	getfrag  =  is_udplite ?  udplite_getfrag : ip_generic_getfrag;
>  	err = ip6_append_data(sk, getfrag, msg->msg_iov, ulen,

Hmm, I wonder if we need the same change in ipv6/raw.c.

Looks good at first sight, but I need to do some more tests.

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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ