[Devel] [PATCH RHEL7 COMMIT] tcache: Fix __tcache_reclaim_page() wrong return value conversion
Konstantin Khorenko
khorenko at virtuozzo.com
Fri Aug 11 16:43:48 MSK 2017
Please consider to prepare a ReadyKernel patch for it.
https://readykernel.com/
--
Best regards,
Konstantin Khorenko,
Virtuozzo Linux Kernel Team
On 08/11/2017 04:42 PM, Konstantin Khorenko wrote:
> The commit is pushed to "branch-rh7-3.10.0-514.26.1.vz7.35.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
> after rh7-3.10.0-514.26.1.vz7.35.3
> ------>
> commit 1258681447209dc4ec4ecdcc01eba25fef4ddb78
> Author: Kirill Tkhai <ktkhai at virtuozzo.com>
> Date: Fri Aug 11 17:42:50 2017 +0400
>
> tcache: Fix __tcache_reclaim_page() wrong return value conversion
>
> Function tcache_page_tree_delete() returns pointer to struct page.
> We can't convert it to variable of bool type "as is", because they
> have different sizes. As all of struct pages are in kernel memory,
> their addresses are above PAGE_OFFSET, i.e. 0xffff880000000000.
> When such number is converted to bool, it becomes always 0. So,
> the algorhythm does not work as expected. Fix that.
>
> Fixes: ba2ea161f25b "mm/tcache: use lockless lookups in tcache's page tree"
> Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
> ---
> mm/tcache.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/mm/tcache.c b/mm/tcache.c
> index 458d3c4..0835e29 100644
> --- a/mm/tcache.c
> +++ b/mm/tcache.c
> @@ -1059,12 +1059,11 @@ tcache_lru_isolate(int nid, struct page **pages, int nr_to_isolate)
> static bool __tcache_reclaim_page(struct page *page)
> {
> struct tcache_node *node;
> - bool ret;
>
> node = tcache_page_node(page);
> - ret = tcache_page_tree_delete(node, page->index, page);
> + page = tcache_page_tree_delete(node, page->index, page);
> tcache_put_node_and_pool(node);
> - return ret;
> + return (page != NULL);
> }
>
> static int tcache_reclaim_pages(struct page **pages, int nr)
> .
>
More information about the Devel
mailing list