All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] splice: fix unexpected size truncation
@ 2014-01-13  9:24 Xiao Guangrong
  0 siblings, 0 replies; only message in thread
From: Xiao Guangrong @ 2014-01-13  9:24 UTC (permalink / raw)
  To: Al Viro; +Cc: LKML

@splice_desc.total_len is 32 bit(unsigned int) which is used to store the
size passed from userspace which is 64 bit(size_t) so that the size is
unexpectedly truncated

That causes vmsplice can not work if the size passed from userspace is >= 4G,
for example, we noticed in vmsplice, splice-reader does not do anything and
splice-writer is waiting for available buffer forever if the size is 4G

Fix it by extending @splice_desc.total_len to 64 bits as well

Signed-off-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
---
 include/linux/splice.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/include/linux/splice.h b/include/linux/splice.h
index 74575cb..1e85396 100644
--- a/include/linux/splice.h
+++ b/include/linux/splice.h
@@ -24,7 +24,8 @@
  * Passed to the actors
  */
 struct splice_desc {
-	unsigned int len, total_len;	/* current and remaining length */
+	size_t total_len;		/* remaining length */
+	unsigned int len;		/* current length */
 	unsigned int flags;		/* splice flags */
 	/*
 	 * actor() private data
-- 
1.8.1.4


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2014-01-13  9:35 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-13  9:24 [PATCH] splice: fix unexpected size truncation Xiao Guangrong

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.