find_vm_area() can return NULL if the given address is not a valid vmalloc area. Check the return value before dereferencing it to avoid a kernel crash.
Unified · Split
| @@ -265,7 +265,9 @@ static inline bool is_vm_area_hugepages(const void *addr) · 264 unmodified lines | ||
| 265 | 265 | * allocated in the vmalloc layer. |
| 266 | 266 | */ |
| 267 | 267 | #ifdef CONFIG_HAVE_ARCH_HUGE_VMALLOC |
| 268 | − return find_vm_area(addr)->page_order > 0; | |
| 268 | + struct vm_struct *area = find_vm_area(addr); | |
| 269 | + | |
| 270 | + return area && area->page_order > 0; | |
| 269 | 271 | #else |
| 270 | 272 | return false; |
| 271 | 273 | #endif |