The routine hugetlbfs_error_remove_page() incorrectly calls hugetlb_fix_reserve_counts which will result in bad (negative) reserved huge page counts. The following patch addresses this issue.
A follow up question/issue: When a hugetlbfs page is poisoned, it appears as an 'in use' huge page via all the external user visible metrics. Even the in internal counters think this is simply an 'in use' huge page. This usually is not an issue. However, it may be confusing if someone adjusts the total number of huge pages. For example, if after poisoning a huge page I set the total number of huge pages to zero, the poisoned page will be counted as 'surplus'. I was thinking about keeping at least a bad page count (if not a list) to avoid user confusion. It may be overkill as I have not given too much thought to this issue. Anyone else have thoughts here? Mike Kravetz (1): mm:hugetlbfs: Fix hwpoison reserve accounting fs/hugetlbfs/inode.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) -- 2.13.6