Merge tag 'leds-5.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/pavel...
[linux-2.6-microblaze.git] / net / ipv4 / raw.c
index 407956b..50a7317 100644 (file)
@@ -260,11 +260,12 @@ static void raw_err(struct sock *sk, struct sk_buff *skb, u32 info)
                err = EHOSTUNREACH;
                if (code > NR_ICMP_UNREACH)
                        break;
-               err = icmp_err_convert[code].errno;
-               harderr = icmp_err_convert[code].fatal;
                if (code == ICMP_FRAG_NEEDED) {
                        harderr = inet->pmtudisc != IP_PMTUDISC_DONT;
                        err = EMSGSIZE;
+               } else {
+                       err = icmp_err_convert[code].errno;
+                       harderr = icmp_err_convert[code].fatal;
                }
        }
 
@@ -478,7 +479,7 @@ static int raw_getfrag(void *from, char *to, int offset, int len, int odd,
                        skb->csum = csum_block_add(
                                skb->csum,
                                csum_partial_copy_nocheck(rfv->hdr.c + offset,
-                                                         to, copy, 0),
+                                                         to, copy),
                                odd);
 
                odd = 0;
@@ -639,7 +640,7 @@ static int raw_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
                        goto done;
        }
 
-       security_sk_classify_flow(sk, flowi4_to_flowi(&fl4));
+       security_sk_classify_flow(sk, flowi4_to_flowi_common(&fl4));
        rt = ip_route_output_flow(net, &fl4, sk);
        if (IS_ERR(rt)) {
                err = PTR_ERR(rt);