|
@@ -1024,7 +1024,7 @@ static long do_mbind(unsigned long start, unsigned long len,
|
|
|
|
|
|
err = migrate_prep();
|
|
|
if (err)
|
|
|
- return err;
|
|
|
+ goto mpol_out;
|
|
|
}
|
|
|
{
|
|
|
NODEMASK_SCRATCH(scratch);
|
|
@@ -1039,10 +1039,9 @@ static long do_mbind(unsigned long start, unsigned long len,
|
|
|
err = -ENOMEM;
|
|
|
NODEMASK_SCRATCH_FREE(scratch);
|
|
|
}
|
|
|
- if (err) {
|
|
|
- mpol_put(new);
|
|
|
- return err;
|
|
|
- }
|
|
|
+ if (err)
|
|
|
+ goto mpol_out;
|
|
|
+
|
|
|
vma = check_range(mm, start, end, nmask,
|
|
|
flags | MPOL_MF_INVERT, &pagelist);
|
|
|
|
|
@@ -1062,6 +1061,7 @@ static long do_mbind(unsigned long start, unsigned long len,
|
|
|
putback_lru_pages(&pagelist);
|
|
|
|
|
|
up_write(&mm->mmap_sem);
|
|
|
+ mpol_out:
|
|
|
mpol_put(new);
|
|
|
return err;
|
|
|
}
|