Re: [PATCH] ubifs: Get/put page when changing PG_private

From: zhangjun
Date: Mon Dec 24 2018 - 21:42:53 EST


On 2018/12/21 äå4:56, Richard Weinberger wrote:
Am Samstag, 15. Dezember 2018, 16:01:30 CET schrieb Richard Weinberger:
The page migration code assumes that a page with PG_private
set has its page count elevated by 1.
UBIFS never did this and therefore the migration code was unable
to migrate some pages owned by UBIFS.
The lead to situations where the CMA memory allocator failed to
allocate memory.

Fix this by using get/put_page when changing PG_private.

Cc: <stable@xxxxxxxxxxxxxxx>
Cc: zhangjun <openzhangj@xxxxxxxxx>
Fixes: 4ac1c17b2044 ("UBIFS: Implement ->migratepage()")
Reported-by: zhangjun <openzhangj@xxxxxxxxx>
Signed-off-by: Richard Weinberger <richard@xxxxxx>
FYI, on the XFS side a similar change caused a regression.
https://marc.info/?l=linux-fsdevel&m=154530861202448&w=2

Until this regression is not fully understood, including the implications
for UBIFS, I'll not merge this patch.

Thanks,
//richard


Hello,richard


Before fully understanding this regression, in order to fix the bug of cma_alloc(),
submit a conservative patch that modifies count in iomap_migrate_page().
Can you consider merging first?

https://marc.info/?l=linux-kernel&m=154473132332661&w=2


Thanks
//zhangjun