This is the old code in net/ipv6/ip6_output.c: mtu -= hlen + sizeof(struct frag_hdr); and this your suggested replacement: if (overflow_usub(mtu, hlen + sizeof(struct frag_hdr), &mtu) || mtu <= 7) goto fail_toobig; The problem as I see it is that the overflow_usub() function is non-standard and requires special compiler support to generate reasonably efficient code. That function hasn't been used