diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index a0ee682dc394..39646f224514 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c @@ -234,7 +234,7 @@ group_extend_out: case EXT4_IOC_MOVE_EXT: { struct move_extent me; struct file *donor_filp; - int err; + int err, fput_needed; if (!(filp->f_mode & FMODE_READ) || !(filp->f_mode & FMODE_WRITE)) @@ -245,7 +245,7 @@ group_extend_out: return -EFAULT; me.moved_len = 0; - donor_filp = fget(me.donor_fd); + donor_filp = fget_light(me.donor_fd, &fput_needed); if (!donor_filp) return -EBADF; @@ -274,7 +274,7 @@ group_extend_out: &me, sizeof(me))) err = -EFAULT; mext_out: - fput(donor_filp); + fput_light(donor_filp, fput_needed); return err; }