Make tailroom math follow same logic as everything else, subtracing
values in the order in which things are laid out in the buffer.
Tested-by: Corentin Noël <corentin.noel@collabora.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
         * add_recvbuf_mergeable() + get_mergeable_buf_len()
         */
        truesize = headroom ? PAGE_SIZE : truesize;
-       tailroom = truesize - len - headroom - (hdr_padded_len - hdr_len);
+       tailroom = truesize - headroom;
        buf = p - headroom;
 
        len -= hdr_len;
        offset += hdr_padded_len;
        p += hdr_padded_len;
+       tailroom -= hdr_padded_len + len;
 
        shinfo_size = SKB_DATA_ALIGN(sizeof(struct skb_shared_info));