| From foo@baz Wed Mar 11 11:44:33 CET 2015 |
| From: Alexander Drozdov <al.drozdov@gmail.com> |
| Date: Tue, 17 Feb 2015 13:33:46 +0300 |
| Subject: ipv4: ip_check_defrag should correctly check return value of skb_copy_bits |
| |
| From: Alexander Drozdov <al.drozdov@gmail.com> |
| |
| [ Upstream commit fba04a9e0c869498889b6445fd06cbe7da9bb834 ] |
| |
| skb_copy_bits() returns zero on success and negative value on error, |
| so it is needed to invert the condition in ip_check_defrag(). |
| |
| Fixes: 1bf3751ec90c ("ipv4: ip_check_defrag must not modify skb before unsharing") |
| Signed-off-by: Alexander Drozdov <al.drozdov@gmail.com> |
| Acked-by: Eric Dumazet <edumazet@google.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/ipv4/ip_fragment.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/net/ipv4/ip_fragment.c |
| +++ b/net/ipv4/ip_fragment.c |
| @@ -664,7 +664,7 @@ struct sk_buff *ip_check_defrag(struct s |
| if (skb->protocol != htons(ETH_P_IP)) |
| return skb; |
| |
| - if (!skb_copy_bits(skb, 0, &iph, sizeof(iph))) |
| + if (skb_copy_bits(skb, 0, &iph, sizeof(iph)) < 0) |
| return skb; |
| |
| if (iph.ihl < 5 || iph.version != 4) |