--- x/fs/reiserfs/ioctl.c +++ y/fs/reiserfs/ioctl.c @@ -77,6 +77,7 @@ long reiserfs_ioctl(struct file *filp, u { struct inode *inode = file_inode(filp); int err = 0; + __u32 g; reiserfs_write_lock(inode->i_sb); @@ -93,7 +94,10 @@ long reiserfs_ioctl(struct file *filp, u * Card (card@masi.ibp.fr) */ case REISERFS_IOC_GETVERSION: - err = put_user(inode->i_generation, (int __user *)arg); + g = inode->i_generation; + reiserfs_write_unlock(inode->i_sb); + err = put_user(g, (int __user *)arg); + return err; break; case REISERFS_IOC_SETVERSION: if (!inode_owner_or_capable(&init_user_ns, inode)) {