read/write: A zero byte read or write is a no-op not an error
authorAlan Cox <alan@linux.intel.com>
Sat, 16 May 2015 11:01:04 +0000 (12:01 +0100)
committerAlan Cox <alan@linux.intel.com>
Sat, 16 May 2015 11:01:04 +0000 (12:01 +0100)
Kernel/syscall_fs.c

index 78799a9..24a6265 100644 (file)
@@ -426,6 +426,9 @@ arg_t _read(void)
        inoptr ino;
        uint8_t flag;
 
+       if (!nbytes)
+               return 0;
+
        if (!valaddr(buf, nbytes))
                return -1;
        /* Set up u_base, u_offset, ino; check permissions, file num. */
@@ -486,6 +489,9 @@ arg_t _write(void)
        inoptr ino;
        uint8_t flag;
 
+       if (!nbytes)
+               return 0;
+
        if (!valaddr(buf, nbytes))
                return -1;
        /* Set up u_base, u_offset, ino; check permissions, file num. */