lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 10 Mar 2020 21:11:06 -0700 From: Andrej Ras <kermitthekoder@...il.com> To: Michal Kubecek <mkubecek@...e.cz> Cc: netdev@...r.kernel.org Subject: Re: What does this code do I understand that the code is appending data, what I do not understand is why is it first calculating the remaining space by taking the difference using the size of mtu and if the difference is <= 0 it recalculates the difference using maxfraglen. Why not just use maxfraglen -- All we need to know is how much more data can be added to the skb. On Tue, Mar 10, 2020 at 3:12 PM Michal Kubecek <mkubecek@...e.cz> wrote: > > On Tue, Mar 10, 2020 at 02:42:11PM -0700, Andrej Ras wrote: > > While browsing the Linux networking code I came across these two lines > > in __ip_append_data() which I do not understand. > > > > /* Check if the remaining data fits into current packet. */ > > copy = mtu - skb->len; > > if (copy < length) > > copy = maxfraglen - skb->len; > > if (copy <= 0) { > > > > Why not just use maxfraglen. > > > > Perhaps someone can explain why this is needed. > > This function appends more data to an skb which can already contain some > payload. Therefore you need to take current length (from earlier) into > account, not only newly appended data. > > This can be easily enforced e.g. with TCP_CORK or UDP_CORK socket option > or MSG_MORE flag. > > Michal Kubecek
Powered by blists - more mailing lists