Return current break if brk failed
Signed-off-by: Zheng, Qi <huaiqing.zq@antgroup.com>
This commit is contained in:
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
|
||||||
|
Loading…
Reference in New Issue
Block a user