|
@@ -1973,7 +1973,19 @@ err_pages:
|
|
page_cache_release(sg_page_iter_page(&sg_iter));
|
|
page_cache_release(sg_page_iter_page(&sg_iter));
|
|
sg_free_table(st);
|
|
sg_free_table(st);
|
|
kfree(st);
|
|
kfree(st);
|
|
- return PTR_ERR(page);
|
|
|
|
|
|
+
|
|
|
|
+ /* shmemfs first checks if there is enough memory to allocate the page
|
|
|
|
+ * and reports ENOSPC should there be insufficient, along with the usual
|
|
|
|
+ * ENOMEM for a genuine allocation failure.
|
|
|
|
+ *
|
|
|
|
+ * We use ENOSPC in our driver to mean that we have run out of aperture
|
|
|
|
+ * space and so want to translate the error from shmemfs back to our
|
|
|
|
+ * usual understanding of ENOMEM.
|
|
|
|
+ */
|
|
|
|
+ if (PTR_ERR(page) == -ENOSPC)
|
|
|
|
+ return -ENOMEM;
|
|
|
|
+ else
|
|
|
|
+ return PTR_ERR(page);
|
|
}
|
|
}
|
|
|
|
|
|
/* Ensure that the associated pages are gathered from the backing storage
|
|
/* Ensure that the associated pages are gathered from the backing storage
|