[PATCH] 0 byte writes should not seek even with O_APPEND

From: Christopher Yeoh (cyeoh@linuxcare.com.au)
Date: Mon Nov 20 2000 - 02:43:23 EST


Hi Linus,

Currently when a zero byte write is done on a regular file
opened with O_APPEND the file offset is set to the end of the
file. For POSIX compliant behaviour this shouldn't happen.

The attached patch fixes this.

Chris.

--- mm/filemap.c.orig Mon Nov 20 14:05:38 2000
+++ mm/filemap.c Mon Nov 20 18:11:43 2000
@@ -2458,12 +2458,15 @@
                 }
         }
 
- status = 0;
- if (count) {
- remove_suid(inode);
- inode->i_ctime = inode->i_mtime = CURRENT_TIME;
- mark_inode_dirty(inode);
+ if (count == 0) {
+ err = 0;
+ goto out;
         }
+
+ status = 0;
+ remove_suid(inode);
+ inode->i_ctime = inode->i_mtime = CURRENT_TIME;
+ mark_inode_dirty(inode);
 
         while (count) {
                 unsigned long bytes, index, offset;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Nov 23 2000 - 21:00:18 EST