> @@ -641,16 +691,22 @@ static void zcache_pampd_free(void *pampd, struct 
> tmem_pool *pool,
>  {
>       struct page *page = NULL;
>       unsigned int zsize, zpages;
> +     bool zero_filled = false;
>  
>       BUG_ON(preemptible());
> -     if (pampd_is_remote(pampd)) {
> +
> +     if (pampd == (void *)ZERO_FILLED)
> +             zero_filled = true;
> +
> +     if (pampd_is_remote(pampd) && !zero_filled) {
>               BUG_ON(!ramster_enabled);
>               pampd = ramster_pampd_free(pampd, pool, oid, index, acct);
>               if (pampd == NULL)
>                       return;
>       }
>       if (is_ephemeral(pool)) {
> -             page = zbud_free_and_delist((struct zbudref *)pampd,
> +             if (!zero_filled)
> +                     page = zbud_free_and_delist((struct zbudref *)pampd,
>                                               true, &zsize, &zpages);

This check should also apply for !is_ephemeral(pool).

>               if (page)
>                       dec_zcache_eph_pageframes();
> @@ -667,7 +723,7 @@ static void zcache_pampd_free(void *pampd, struct 
> tmem_pool *pool,
>       }
>       if (!is_local_client(pool->client))
>               ramster_count_foreign_pages(is_ephemeral(pool), -1);
> -     if (page)
> +     if (page && !zero_filled)
>               zcache_free_page(page);
>  }
>  
> 

-- 
Regards,
-Bob
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to