}
 
        /* Everything went OK, save the parameters used. */
-       q->hicredit = qopt->hicredit;
-       q->locredit = qopt->locredit;
-       q->idleslope = qopt->idleslope * BYTES_PER_KBIT;
-       q->sendslope = qopt->sendslope * BYTES_PER_KBIT;
-       q->offload = qopt->offload;
+       WRITE_ONCE(q->hicredit, qopt->hicredit);
+       WRITE_ONCE(q->locredit, qopt->locredit);
+       WRITE_ONCE(q->idleslope, qopt->idleslope * BYTES_PER_KBIT);
+       WRITE_ONCE(q->sendslope, qopt->sendslope * BYTES_PER_KBIT);
+       WRITE_ONCE(q->offload, qopt->offload);
 
        return 0;
 }
        if (!nest)
                goto nla_put_failure;
 
-       opt.hicredit = q->hicredit;
-       opt.locredit = q->locredit;
-       opt.sendslope = div64_s64(q->sendslope, BYTES_PER_KBIT);
-       opt.idleslope = div64_s64(q->idleslope, BYTES_PER_KBIT);
-       opt.offload = q->offload;
+       opt.hicredit = READ_ONCE(q->hicredit);
+       opt.locredit = READ_ONCE(q->locredit);
+       opt.sendslope = div64_s64(READ_ONCE(q->sendslope), BYTES_PER_KBIT);
+       opt.idleslope = div64_s64(READ_ONCE(q->idleslope), BYTES_PER_KBIT);
+       opt.offload = READ_ONCE(q->offload);
 
        if (nla_put(skb, TCA_CBS_PARMS, sizeof(opt), &opt))
                goto nla_put_failure;