Revert "xen/blkfront: When purging persistent grants, keep them in the buffer"
authorJens Axboe <axboe@kernel.dk>
Fri, 28 Sep 2018 15:40:17 +0000 (09:40 -0600)
committerJens Axboe <axboe@kernel.dk>
Fri, 28 Sep 2018 15:40:17 +0000 (09:40 -0600)
Fix didn't work for all cases, reverting to add a (hopefully)
better fix.

This reverts commit f151ba989d149bbdfc90e5405724bbea094f9b17.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/xen-blkfront.c

index 3b441fe..a71d817 100644 (file)
@@ -2667,9 +2667,11 @@ static void purge_persistent_grants(struct blkfront_info *info)
                            gnttab_query_foreign_access(gnt_list_entry->gref))
                                continue;
 
+                       list_del(&gnt_list_entry->node);
                        gnttab_end_foreign_access(gnt_list_entry->gref, 0, 0UL);
-                       gnt_list_entry->gref = GRANT_INVALID_REF;
                        rinfo->persistent_gnts_c--;
+                       __free_page(gnt_list_entry->page);
+                       kfree(gnt_list_entry);
                }
 
                spin_unlock_irqrestore(&rinfo->ring_lock, flags);