diff options
-rw-r--r-- | fs/nilfs2/ioctl.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/nilfs2/ioctl.c b/fs/nilfs2/ioctl.c index 8e5cad020c30..313d0a21da48 100644 --- a/fs/nilfs2/ioctl.c +++ b/fs/nilfs2/ioctl.c | |||
@@ -601,13 +601,17 @@ static int nilfs_ioctl_sync(struct inode *inode, struct file *filp, | |||
601 | { | 601 | { |
602 | __u64 cno; | 602 | __u64 cno; |
603 | int ret; | 603 | int ret; |
604 | struct the_nilfs *nilfs; | ||
604 | 605 | ||
605 | ret = nilfs_construct_segment(inode->i_sb); | 606 | ret = nilfs_construct_segment(inode->i_sb); |
606 | if (ret < 0) | 607 | if (ret < 0) |
607 | return ret; | 608 | return ret; |
608 | 609 | ||
609 | if (argp != NULL) { | 610 | if (argp != NULL) { |
610 | cno = NILFS_SB(inode->i_sb)->s_nilfs->ns_cno - 1; | 611 | nilfs = NILFS_SB(inode->i_sb)->s_nilfs; |
612 | down_read(&nilfs->ns_segctor_sem); | ||
613 | cno = nilfs->ns_cno - 1; | ||
614 | up_read(&nilfs->ns_segctor_sem); | ||
611 | if (copy_to_user(argp, &cno, sizeof(cno))) | 615 | if (copy_to_user(argp, &cno, sizeof(cno))) |
612 | return -EFAULT; | 616 | return -EFAULT; |
613 | } | 617 | } |