data->weight.full = intel_get_tsx_weight(pebs->tsx_tuning);
                        data->sample_flags |= PERF_SAMPLE_WEIGHT_TYPE;
                }
-               if (sample_type & PERF_SAMPLE_TRANSACTION)
+               if (sample_type & PERF_SAMPLE_TRANSACTION) {
                        data->txn = intel_get_tsx_transaction(pebs->tsx_tuning,
                                                              pebs->ax);
+                       data->sample_flags |= PERF_SAMPLE_TRANSACTION;
+               }
        }
 
        /*
                if (sample_type & PERF_SAMPLE_ADDR_TYPE)
                        data->addr = meminfo->address;
 
-               if (sample_type & PERF_SAMPLE_TRANSACTION)
+               if (sample_type & PERF_SAMPLE_TRANSACTION) {
                        data->txn = intel_get_tsx_transaction(meminfo->tsx_tuning,
                                                          gprs ? gprs->ax : 0);
+                       data->sample_flags |= PERF_SAMPLE_TRANSACTION;
+               }
        }
 
        if (format_size & PEBS_DATACFG_XMMS) {
 
        u64                             addr;
        struct perf_raw_record          *raw;
        u64                             period;
-       u64                             txn;
 
        /*
         * The other fields, optionally {set,used} by
        struct perf_branch_stack        *br_stack;
        union perf_sample_weight        weight;
        union  perf_mem_data_src        data_src;
+       u64                             txn;
 
        u64                             type;
        u64                             ip;
        data->addr = addr;
        data->raw  = NULL;
        data->period = period;
-       data->txn = 0;
 }
 
 /*
 
        if (filtered_sample_type & PERF_SAMPLE_DATA_SRC)
                data->data_src.val = PERF_MEM_NA;
 
+       if (filtered_sample_type & PERF_SAMPLE_TRANSACTION)
+               data->txn = 0;
+
        if (sample_type & PERF_SAMPLE_REGS_INTR) {
                /* regs dump ABI info */
                int size = sizeof(u64);