On Thu, Jul 18, 2019 at 10:23:30AM +0800, Wei Wang wrote:
Fixes: 418a3ab1e778 (mm/balloon_compaction: List interfaces)I would add here "this is necessary when it's used from
A #GP is reported in the guest when requesting balloon inflation via
virtio-balloon. The reason is that the virtio-balloon driver has
removed the page from its internal page list (via balloon_page_pop),
but balloon_page_enqueue_one also calls "list_del" to do the removal.
balloon_page_enqueue_list but not when it's called
from balloon_page_enqueue".
So remove the list_del in balloon_page_enqueue_one, and have the callersPatch is good but comments need some work.
do the page removal from their own page lists.
Signed-off-by: Wei Wang <wei.w.wang@xxxxxxxxx>
---This comment does not make sense. E.g. balloon_page_enqueue
mm/balloon_compaction.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/mm/balloon_compaction.c b/mm/balloon_compaction.c
index 83a7b61..1a5ddc4 100644
--- a/mm/balloon_compaction.c
+++ b/mm/balloon_compaction.c
@@ -11,6 +11,7 @@
#include <linux/export.h>
#include <linux/balloon_compaction.h>
+/* Callers ensure that @page has been removed from its original list. */
does nothing to ensure this. And drivers are not supposed
to care how the page lists are managed. Pls drop.
Instead please add the following to balloon_page_enqueue:
Note: drivers must not call balloon_page_list_enqueue on