On Thu, 5 Dec 2019, Qian Cai wrote:
On Dec 5, 2019, at 12:39 PM, Yang Shi yang.shi@linux.alibaba.com wrote:
There are definitely a few inconsistencies, but I think the manpage is quite clear for this specific case, which says "status is an array of integers that return the status of each page. The array contains valid values only if move_pages() did not return an error." And, it looks kernel just misbehaved since 4.17 due to the fixes commit, so it sounds like a regression too.
“Only if” in strictly logical term does not necessarily mean it must contain valid values if move_pages() succeed.
The intended meaning is that valid values in the status array are provided when the syscall succeeds and not otherwise. In the error case there may be some valid values but since the operation may have aborted not all values may have a value.