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 | * allocated in the vmalloc layer. | 265 | * allocated in the vmalloc layer. |
| 266 | */ | 266 | */ |
| 267 | #ifdef CONFIG_HAVE_ARCH_HUGE_VMALLOC | 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 | #else | 271 | #else |
| 270 | return false; | 272 | return false; |
| 271 | #endif | 273 | #endif |