diff --git a/arch/riscv/kernel/vector.c b/arch/riscv/kernel/vector.c index 426556c0b2d7..ee75b57905a4 100644 --- a/arch/riscv/kernel/vector.c +++ b/arch/riscv/kernel/vector.c @@ -122,8 +122,13 @@ static int riscv_v_thread_zalloc(void) static int riscv_m_thread_zalloc(void) { void *datap; + size_t alloc_size; - datap = kzalloc(csr_read(CSR_XMLENB) * 8, GFP_KERNEL); + riscv_m_enable(); + alloc_size = csr_read(CSR_XMLENB) * 8; + riscv_m_disable(); + + datap = kzalloc(alloc_size, GFP_KERNEL); if (!datap) return -ENOMEM;