summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Monakhov <dmonakhov@sw.ru>2007-10-16 01:25:02 -0700
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-16 09:42:55 -0700
commit8268f5a7415d914fc855a86aa2284ac819dc6b2e (patch)
tree13628a6d3cb31f04472c4cccdc741979ecdf0ad0
parentafddba49d18f346e5cc2938b6ed7c512db18ca68 (diff)
downloadkernel-common-8268f5a7415d914fc855a86aa2284ac819dc6b2e.tar.gz
kernel-common-8268f5a7415d914fc855a86aa2284ac819dc6b2e.tar.bz2
kernel-common-8268f5a7415d914fc855a86aa2284ac819dc6b2e.zip
deny partial write for loop dev fd
Partial write can be easily supported by LO_CRYPT_NONE mode, but it is not easy in LO_CRYPT_CRYPTOAPI case, because of its block nature. I don't know who still used cryptoapi, but theoretically it is possible. So let's leave things as they are. Loop device doesn't support partial write before Nick's "write_begin/write_end" patch set, and let's it behave the same way after. Signed-off-by: Dmitriy Monakhov <dmonakhov@openvz.org> Cc: Nick Piggin <nickpiggin@yahoo.com.au> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--drivers/block/loop.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index a5f993ac28dd..e5a051577a5e 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -245,10 +245,8 @@ static int do_lo_send_aops(struct loop_device *lo, struct bio_vec *bvec,
ret = pagecache_write_end(file, mapping, pos, size, copied,
page, fsdata);
- if (ret < 0)
+ if (ret < 0 || ret != copied)
goto fail;
- if (ret < copied)
- copied = ret;
if (unlikely(transfer_result))
goto fail;