diff options
| author | Andrew Morton <akpm@digeo.com> | 2003-03-28 03:20:05 -0800 |
|---|---|---|
| committer | Dave Jones <davej@tetrachloride.(none)> | 2003-03-28 03:20:05 -0800 |
| commit | 0353acecdc729c1988d5cf6489bc659aae28f54e (patch) | |
| tree | 18b8bbedbff987bf1c320a4f8dfa926b97e8defa | |
| parent | 507388c9e9685f44cc32e5318109a343e3ff567c (diff) | |
[PATCH] add a might_sleep() check to kmap()
kmap() can sleep, but rarely does. Add a check for kmap() being called from
inappropriate contexts.
| -rw-r--r-- | arch/i386/mm/highmem.c | 3 | ||||
| -rw-r--r-- | include/linux/highmem.h | 6 |
2 files changed, 6 insertions, 3 deletions
diff --git a/arch/i386/mm/highmem.c b/arch/i386/mm/highmem.c index 5c5043d1c2c2..ec222a7a3fa1 100644 --- a/arch/i386/mm/highmem.c +++ b/arch/i386/mm/highmem.c @@ -2,8 +2,7 @@ void *kmap(struct page *page) { - if (in_interrupt()) - BUG(); + might_sleep(); if (page < highmem_start_page) return page_address(page); return kmap_high(page); diff --git a/include/linux/highmem.h b/include/linux/highmem.h index b8334a2df0d8..8800a35efe74 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h @@ -18,7 +18,11 @@ unsigned int nr_free_highpages(void); static inline unsigned int nr_free_highpages(void) { return 0; } -static inline void *kmap(struct page *page) { return page_address(page); } +static inline void *kmap(struct page *page) +{ + might_sleep(); + return page_address(page); +} #define kunmap(page) do { (void) (page); } while (0) |
