perf_evlist__should_poll(struct perf_evlist *evlist __maybe_unused,
                         struct perf_evsel *evsel)
 {
-       if (evsel->overwrite)
+       if (evsel->attr.write_backward)
                return false;
        return true;
 }
        evlist__for_each_entry(evlist, evsel) {
                int fd;
 
-               if (evsel->overwrite != (evlist->overwrite && evlist->backward))
+               if (!!evsel->attr.write_backward != (evlist->overwrite && evlist->backward))
                        continue;
 
                if (evsel->system_wide && thread)
 
        int pid = -1, err;
        enum { NO_CHANGE, SET_TO_MAX, INCREASED_MAX } set_rlimit = NO_CHANGE;
 
+       if (perf_missing_features.write_backward && evsel->attr.write_backward)
+               return -EINVAL;
+
        if (evsel->system_wide)
                nthreads = 1;
        else
        if (perf_missing_features.lbr_flags)
                evsel->attr.branch_sample_type &= ~(PERF_SAMPLE_BRANCH_NO_FLAGS |
                                     PERF_SAMPLE_BRANCH_NO_CYCLES);
-       if (perf_missing_features.write_backward) {
-               if (evsel->overwrite)
-                       return -EINVAL;
-               evsel->attr.write_backward = false;
-       }
 retry_sample_id:
        if (perf_missing_features.sample_id_all)
                evsel->attr.sample_id_all = 0;
         */
        if (!perf_missing_features.write_backward && evsel->attr.write_backward) {
                perf_missing_features.write_backward = true;
-               goto fallback_missing_features;
+               goto out_close;
        } else if (!perf_missing_features.clockid_wrong && evsel->attr.use_clockid) {
                perf_missing_features.clockid_wrong = true;
                goto fallback_missing_features;
        "We found oprofile daemon running, please stop it and try again.");
                break;
        case EINVAL:
-               if (evsel->overwrite && perf_missing_features.write_backward)
+               if (evsel->attr.write_backward && perf_missing_features.write_backward)
                        return scnprintf(msg, size, "Reading from overwrite event is not supported by this kernel.");
                if (perf_missing_features.clockid)
                        return scnprintf(msg, size, "clockid feature not supported.");