vfs: ftruncate check IS_APPEND() on real upper inode
[linux-block.git] / fs / open.c
index 949cef29c3bba9395efd2e461d2078d0a9a9b47c..993a91d20cc7b19f86e471f17ff1ab457dcc1717 100644 (file)
--- a/fs/open.c
+++ b/fs/open.c
@@ -193,7 +193,8 @@ static long do_sys_ftruncate(unsigned int fd, loff_t length, int small)
                goto out_putf;
 
        error = -EPERM;
-       if (IS_APPEND(inode))
+       /* Check IS_APPEND on real upper inode */
+       if (IS_APPEND(file_inode(f.file)))
                goto out_putf;
 
        sb_start_write(inode->i_sb);