Return current break if brk failed

Signed-off-by: Zheng, Qi <huaiqing.zq@antgroup.com>
This commit is contained in:
Zheng, Qi 2021-10-18 13:38:26 +08:00 committed by Zongmin.Gu
parent 8dc773cc62
commit 0eb3353b7c

@ -413,17 +413,19 @@ impl ProcessVM {
let heap_start = self.heap_range.start(); let heap_start = self.heap_range.start();
let heap_end = self.heap_range.end(); let heap_end = self.heap_range.end();
if new_brk == 0 { if new_brk >= heap_start && new_brk <= heap_end {
return Ok(self.get_brk()); self.brk
} else if new_brk < heap_start { .fetch_update(Ordering::SeqCst, Ordering::SeqCst, |old_brk| Some(new_brk));
return_errno!(EINVAL, "New brk address is too low"); Ok(new_brk)
} else if new_brk > heap_end { } else {
return_errno!(EINVAL, "New brk address is too high"); if new_brk < heap_start {
} error!("New brk address is too low");
} else if new_brk > heap_end {
error!("New brk address is too high");
}
self.brk Ok(self.get_brk())
.fetch_update(Ordering::SeqCst, Ordering::SeqCst, |old_brk| Some(new_brk)); }
Ok(new_brk)
} }
// Get a NON-accurate free size for current process // Get a NON-accurate free size for current process