From: Michal Kubecek <mkube...@suse.cz> Date: Mon, 2 Mar 2015 18:27:11 +0100 (CET)
> If an over-MTU UDP datagram is sent through a SOCK_RAW socket to a > UFO-capable device, ip_ufo_append_data() sets skb->ip_summed to > CHECKSUM_PARTIAL unconditionally as all GSO code assumes transport layer > checksum is to be computed on segmentation. However, in this case, > skb->csum_start and skb->csum_offset are never set as raw socket > transmit path bypasses udp_send_skb() where they are usually set. As a > result, driver may access invalid memory when trying to calculate the > checksum and store the result (as observed in virtio_net driver). > > Moreover, the very idea of modifying the userspace provided UDP header > is IMHO against raw socket semantics (I wasn't able to find a document > clearly stating this or the opposite, though). And while allowing > CHECKSUM_NONE in the UFO case would be more efficient, it would be a bit > too intrusive change just to handle a corner case like this. Therefore > disallowing UFO for packets from SOCK_DGRAM seems to be the best option. > > Signed-off-by: Michal Kubecek <mkube...@suse.cz> Seems reasonable to me, applied, thanks! -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/