From: Nick Piggin writev with a zero-length segment is a noop, and we shouldn't return EFAULT. Signed-off-by: Nick Piggin Signed-off-by: Andrew Morton --- include/linux/pagemap.h | 6 ++++++ 1 files changed, 6 insertions(+) diff -puN include/linux/pagemap.h~mm-fix-pagecache-write-deadlocks-zerolength-fix include/linux/pagemap.h --- a/include/linux/pagemap.h~mm-fix-pagecache-write-deadlocks-zerolength-fix +++ a/include/linux/pagemap.h @@ -198,6 +198,9 @@ static inline int fault_in_pages_writeab { int ret; + if (unlikely(size == 0)) + return 0; + /* * Writing zeroes into userspace here is OK, because we know that if * the zero gets there, we'll be overwriting it. @@ -222,6 +225,9 @@ static inline int fault_in_pages_readabl volatile char c; int ret; + if (unlikely(size == 0)) + return 0; + ret = __get_user(c, uaddr); if (ret == 0) { const char __user *end = uaddr + size - 1; _