|
@@ -628,7 +628,7 @@ static void init_zspage(struct page *first_page, struct size_class *class)
|
|
while (page) {
|
|
while (page) {
|
|
struct page *next_page;
|
|
struct page *next_page;
|
|
struct link_free *link;
|
|
struct link_free *link;
|
|
- unsigned int i, objs_on_page;
|
|
|
|
|
|
+ unsigned int i = 1;
|
|
|
|
|
|
/*
|
|
/*
|
|
* page->index stores offset of first object starting
|
|
* page->index stores offset of first object starting
|
|
@@ -641,14 +641,10 @@ static void init_zspage(struct page *first_page, struct size_class *class)
|
|
|
|
|
|
link = (struct link_free *)kmap_atomic(page) +
|
|
link = (struct link_free *)kmap_atomic(page) +
|
|
off / sizeof(*link);
|
|
off / sizeof(*link);
|
|
- objs_on_page = (PAGE_SIZE - off) / class->size;
|
|
|
|
|
|
|
|
- for (i = 1; i <= objs_on_page; i++) {
|
|
|
|
- off += class->size;
|
|
|
|
- if (off < PAGE_SIZE) {
|
|
|
|
- link->next = obj_location_to_handle(page, i);
|
|
|
|
- link += class->size / sizeof(*link);
|
|
|
|
- }
|
|
|
|
|
|
+ while ((off += class->size) < PAGE_SIZE) {
|
|
|
|
+ link->next = obj_location_to_handle(page, i++);
|
|
|
|
+ link += class->size / sizeof(*link);
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -660,7 +656,7 @@ static void init_zspage(struct page *first_page, struct size_class *class)
|
|
link->next = obj_location_to_handle(next_page, 0);
|
|
link->next = obj_location_to_handle(next_page, 0);
|
|
kunmap_atomic(link);
|
|
kunmap_atomic(link);
|
|
page = next_page;
|
|
page = next_page;
|
|
- off = (off + class->size) % PAGE_SIZE;
|
|
|
|
|
|
+ off %= PAGE_SIZE;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|