|
@@ -3,6 +3,7 @@
|
|
|
|
|
|
#include <linux/fs.h>
|
|
|
#include <linux/mm.h>
|
|
|
+#include <linux/uaccess.h>
|
|
|
|
|
|
#include <asm/cacheflush.h>
|
|
|
|
|
@@ -41,9 +42,10 @@ static inline void *kmap(struct page *page)
|
|
|
|
|
|
#define kunmap(page) do { (void) (page); } while (0)
|
|
|
|
|
|
-#define kmap_atomic(page, idx) page_address(page)
|
|
|
-#define kunmap_atomic(addr, idx) do { } while (0)
|
|
|
-#define kmap_atomic_pfn(pfn, idx) page_address(pfn_to_page(pfn))
|
|
|
+#define kmap_atomic(page, idx) \
|
|
|
+ ({ pagefault_disable(); page_address(page); })
|
|
|
+#define kunmap_atomic(addr, idx) do { pagefault_enable(); } while (0)
|
|
|
+#define kmap_atomic_pfn(pfn, idx) kmap_atomic(pfn_to_page(pfn), (idx))
|
|
|
#define kmap_atomic_to_page(ptr) virt_to_page(ptr)
|
|
|
#endif
|
|
|
|