--- x/net/core/gen_estimator.c +++ y/net/core/gen_estimator.c @@ -90,10 +90,12 @@ static void est_timer(struct timer_list rate = (b_packets - est->last_packets) << (10 - est->intvl_log); rate = (rate >> est->ewma_log) - (est->avpps >> est->ewma_log); + preempt_disable(); write_seqcount_begin(&est->seq); est->avbps += brate; est->avpps += rate; write_seqcount_end(&est->seq); + preempt_enable(); est->last_bytes = b_bytes; est->last_packets = b_packets;