drivers: perf: Fix panic in riscv SBI mmap support
[platform/kernel/linux-starfive.git] / drivers / perf / riscv_pmu.c
index 80c052e..0dda70e 100644 (file)
@@ -23,7 +23,8 @@ static bool riscv_perf_user_access(struct perf_event *event)
        return ((event->attr.type == PERF_TYPE_HARDWARE) ||
                (event->attr.type == PERF_TYPE_HW_CACHE) ||
                (event->attr.type == PERF_TYPE_RAW)) &&
-               !!(event->hw.flags & PERF_EVENT_FLAG_USER_READ_CNT);
+               !!(event->hw.flags & PERF_EVENT_FLAG_USER_READ_CNT) &&
+               (event->hw.idx != -1);
 }
 
 void arch_perf_update_userpage(struct perf_event *event,
@@ -255,9 +256,6 @@ void riscv_pmu_start(struct perf_event *event, int flags)
        uint64_t max_period = riscv_pmu_ctr_get_width_mask(event);
        u64 init_val;
 
-       if (WARN_ON_ONCE(!(event->hw.state & PERF_HES_STOPPED)))
-               return;
-
        if (flags & PERF_EF_RELOAD)
                WARN_ON_ONCE(!(event->hw.state & PERF_HES_UPTODATE));