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
| ||
|
Message-Id: <20120727.134804.412337393847863208.davem@davemloft.net> Date: Fri, 27 Jul 2012 13:48:04 -0700 (PDT) From: David Miller <davem@...emloft.net> To: jkosina@...e.cz Cc: christopher.leech@...el.com, linux-kernel@...r.kernel.org, netdev@...r.kernel.org, jbohac@...e.cz Subject: Re: [PATCH v2] tcp: perform DMA to userspace only if there is a task waiting for it From: Jiri Kosina <jkosina@...e.cz> Date: Fri, 27 Jul 2012 22:38:50 +0200 (CEST) > Back in 2006, commit 1a2449a87b ("[I/OAT]: TCP recv offload to I/OAT") > added support for receive offloading to IOAT dma engine if available. > > The code in tcp_rcv_established() tries to perform early DMA copy if > applicable. It however does so without checking whether the userspace > task is actually expecting the data in the buffer. > > This is not a problem under normal circumstances, but there is a corner > case where this doesn't work -- and that's when MSG_TRUNC flag to > recvmsg() is used. > > If the IOAT dma engine is not used, the code properly checks whether > there is a valid ucopy.task and the socket is owned by userspace, but > misses the check in the dmaengine case. > > This problem can be observed in real trivially -- for example 'tbench' is a > good reproducer, as it makes a heavy use of MSG_TRUNC. On systems utilizing > IOAT, you will soon find tbench waiting indefinitely in sk_wait_data(), as they > have been already early-copied in tcp_rcv_established() using dma engine. > > This patch introduces the same check we are performing in the simple > iovec copy case to the IOAT case as well. It fixes the indefinite > recvmsg(MSG_TRUNC) hangs. > > Signed-off-by: Jiri Kosina <jkosina@...e.cz> Applied. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists