mirror of
https://github.com/rdmsr/zag.git
synced 2026-11-01 23:58:21 +00:00
mm/vmem: fix wrong rotor assignment
This commit is contained in:
+4
-4
@@ -309,13 +309,13 @@ pub const Arena = struct {
|
|||||||
if (next_entry != &self.list.head) {
|
if (next_entry != &self.list.head) {
|
||||||
const next_seg: *Segment = @fieldParentPtr("link", next_entry);
|
const next_seg: *Segment = @fieldParentPtr("link", next_entry);
|
||||||
|
|
||||||
if (self.rotor == next_seg) self.rotor = seg;
|
|
||||||
|
|
||||||
if (next_seg.type == .Free) {
|
if (next_seg.type == .Free) {
|
||||||
// Remove next segment from freelist and segment list, then merge into seg.
|
// Remove next segment from freelist and segment list, then merge into seg.
|
||||||
self.remove_segment_from_freelist(next_seg);
|
self.remove_segment_from_freelist(next_seg);
|
||||||
next_seg.link.remove();
|
next_seg.link.remove();
|
||||||
seg.size += next_seg.size;
|
seg.size += next_seg.size;
|
||||||
|
|
||||||
|
if (self.rotor == next_seg) self.rotor = seg;
|
||||||
self.free_segment(next_seg);
|
self.free_segment(next_seg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -325,14 +325,14 @@ pub const Arena = struct {
|
|||||||
if (prev_entry != &self.list.head) {
|
if (prev_entry != &self.list.head) {
|
||||||
const prev_seg: *Segment = @fieldParentPtr("link", prev_entry);
|
const prev_seg: *Segment = @fieldParentPtr("link", prev_entry);
|
||||||
|
|
||||||
if (self.rotor == prev_seg) self.rotor = seg;
|
|
||||||
|
|
||||||
if (prev_seg.type == .Free) {
|
if (prev_seg.type == .Free) {
|
||||||
// Remove previous segment from freelist and segment list, then merge into seg.
|
// Remove previous segment from freelist and segment list, then merge into seg.
|
||||||
self.remove_segment_from_freelist(prev_seg);
|
self.remove_segment_from_freelist(prev_seg);
|
||||||
prev_seg.link.remove();
|
prev_seg.link.remove();
|
||||||
seg.base = prev_seg.base;
|
seg.base = prev_seg.base;
|
||||||
seg.size += prev_seg.size;
|
seg.size += prev_seg.size;
|
||||||
|
|
||||||
|
if (self.rotor == prev_seg) self.rotor = seg;
|
||||||
self.free_segment(prev_seg);
|
self.free_segment(prev_seg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user