return (*op & 0xC0) == 0x80;
 }
 
-int icmpv6_push_pending_frames(struct sock *sk, struct flowi6 *fl6,
-                              struct icmp6hdr *thdr, int len)
+void icmpv6_push_pending_frames(struct sock *sk, struct flowi6 *fl6,
+                               struct icmp6hdr *thdr, int len)
 {
        struct sk_buff *skb;
        struct icmp6hdr *icmp6h;
 
        skb = skb_peek(&sk->sk_write_queue);
        if (!skb)
-               goto out;
+               return;
 
        icmp6h = icmp6_hdr(skb);
        memcpy(icmp6h, thdr, sizeof(struct icmp6hdr));
                                                      tmp_csum);
        }
        ip6_push_pending_frames(sk);
-out:
-       return 0;
 }
 
 struct icmpv6_msg {
        int iif = 0;
        int addr_type = 0;
        int len;
-       int err = 0;
        u32 mark = IP6_REPLY_MARK(net, skb->mark);
 
        if ((u8 *)hdr < skb->head ||
        rcu_read_lock();
        idev = __in6_dev_get(skb->dev);
 
-       err = ip6_append_data(sk, icmpv6_getfrag, &msg,
-                             len + sizeof(struct icmp6hdr),
-                             sizeof(struct icmp6hdr),
-                             &ipc6, &fl6, (struct rt6_info *)dst,
-                             MSG_DONTWAIT, &sockc_unused);
-       if (err) {
+       if (ip6_append_data(sk, icmpv6_getfrag, &msg,
+                           len + sizeof(struct icmp6hdr),
+                           sizeof(struct icmp6hdr),
+                           &ipc6, &fl6, (struct rt6_info *)dst,
+                           MSG_DONTWAIT, &sockc_unused)) {
                ICMP6_INC_STATS(net, idev, ICMP6_MIB_OUTERRORS);
                ip6_flush_pending_frames(sk);
        } else {
-               err = icmpv6_push_pending_frames(sk, &fl6, &tmp_hdr,
-                                                len + sizeof(struct icmp6hdr));
+               icmpv6_push_pending_frames(sk, &fl6, &tmp_hdr,
+                                          len + sizeof(struct icmp6hdr));
        }
        rcu_read_unlock();
 out_dst_release:
        struct icmpv6_msg msg;
        struct dst_entry *dst;
        struct ipcm6_cookie ipc6;
-       int err = 0;
        u32 mark = IP6_REPLY_MARK(net, skb->mark);
        struct sockcm_cookie sockc_unused = {0};
 
        else if (!fl6.flowi6_oif)
                fl6.flowi6_oif = np->ucast_oif;
 
-       err = ip6_dst_lookup(net, sk, &dst, &fl6);
-       if (err)
+       if (ip6_dst_lookup(net, sk, &dst, &fl6))
                goto out;
        dst = xfrm_lookup(net, dst, flowi6_to_flowi(&fl6), sk, 0);
        if (IS_ERR(dst))
        ipc6.dontfrag = np->dontfrag;
        ipc6.opt = NULL;
 
-       err = ip6_append_data(sk, icmpv6_getfrag, &msg, skb->len + sizeof(struct icmp6hdr),
-                               sizeof(struct icmp6hdr), &ipc6, &fl6,
-                               (struct rt6_info *)dst, MSG_DONTWAIT,
-                               &sockc_unused);
-
-       if (err) {
+       if (ip6_append_data(sk, icmpv6_getfrag, &msg,
+                           skb->len + sizeof(struct icmp6hdr),
+                           sizeof(struct icmp6hdr), &ipc6, &fl6,
+                           (struct rt6_info *)dst, MSG_DONTWAIT,
+                           &sockc_unused)) {
                __ICMP6_INC_STATS(net, idev, ICMP6_MIB_OUTERRORS);
                ip6_flush_pending_frames(sk);
        } else {
-               err = icmpv6_push_pending_frames(sk, &fl6, &tmp_hdr,
-                                                skb->len + sizeof(struct icmp6hdr));
+               icmpv6_push_pending_frames(sk, &fl6, &tmp_hdr,
+                                          skb->len + sizeof(struct icmp6hdr));
        }
        dst_release(dst);
 out: