Message ID | 1644395972-4303-1-git-send-email-wangqing@vivo.com (mailing list archive) |
---|---|
State | Awaiting Upstream |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: wireless: ath: use div64_u64() instead of do_div() | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
Qing Wang <wangqing@vivo.com> writes: > From: Wang Qing <wangqing@vivo.com> > > do_div() does a 64-by-32 division. > When the divisor is u64, do_div() truncates it to 32 bits, this means it > can test non-zero and be truncated to zero for division. > > fix do_div.cocci warning: > do_div() does a 64-by-32 division, please consider using div64_u64 instead. > > Signed-off-by: Wang Qing <wangqing@vivo.com> > --- > drivers/net/wireless/ath/wil6210/debugfs.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) The subject prefix should be "wil6210:", but I can fix that.
Qing Wang <wangqing@vivo.com> writes: > From: Wang Qing <wangqing@vivo.com> > > do_div() does a 64-by-32 division. > When the divisor is u64, do_div() truncates it to 32 bits, this means it > can test non-zero and be truncated to zero for division. > > fix do_div.cocci warning: > do_div() does a 64-by-32 division, please consider using div64_u64 instead. > > Signed-off-by: Wang Qing <wangqing@vivo.com> > --- > drivers/net/wireless/ath/wil6210/debugfs.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/wireless/ath/wil6210/debugfs.c b/drivers/net/wireless/ath/wil6210/debugfs.c > index 4c944e5..2cee9dd > --- a/drivers/net/wireless/ath/wil6210/debugfs.c > +++ b/drivers/net/wireless/ath/wil6210/debugfs.c > @@ -1766,7 +1766,7 @@ __acquires(&p->tid_rx_lock) __releases(&p->tid_rx_lock) > seq_puts(s, "\n"); > if (!num_packets) > continue; > - do_div(tx_latency_avg, num_packets); > + div64_u64(tx_latency_avg, num_packets); As you have been pointed out in your other patches, do_div() and div64_u64() work differently.
From: Kalle Valo > Sent: 10 February 2022 12:16 > > Qing Wang <wangqing@vivo.com> writes: > > > From: Wang Qing <wangqing@vivo.com> > > > > do_div() does a 64-by-32 division. > > When the divisor is u64, do_div() truncates it to 32 bits, this means it > > can test non-zero and be truncated to zero for division. > > > > fix do_div.cocci warning: > > do_div() does a 64-by-32 division, please consider using div64_u64 instead. > > > > Signed-off-by: Wang Qing <wangqing@vivo.com> > > --- > > drivers/net/wireless/ath/wil6210/debugfs.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/net/wireless/ath/wil6210/debugfs.c b/drivers/net/wireless/ath/wil6210/debugfs.c > > index 4c944e5..2cee9dd > > --- a/drivers/net/wireless/ath/wil6210/debugfs.c > > +++ b/drivers/net/wireless/ath/wil6210/debugfs.c > > @@ -1766,7 +1766,7 @@ __acquires(&p->tid_rx_lock) __releases(&p->tid_rx_lock) > > seq_puts(s, "\n"); > > if (!num_packets) > > continue; > > - do_div(tx_latency_avg, num_packets); > > + div64_u64(tx_latency_avg, num_packets); > > As you have been pointed out in your other patches, do_div() and > div64_u64() work differently. And how long does it take for num_packets to exceed 2^32. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)
diff --git a/drivers/net/wireless/ath/wil6210/debugfs.c b/drivers/net/wireless/ath/wil6210/debugfs.c index 4c944e5..2cee9dd --- a/drivers/net/wireless/ath/wil6210/debugfs.c +++ b/drivers/net/wireless/ath/wil6210/debugfs.c @@ -1766,7 +1766,7 @@ __acquires(&p->tid_rx_lock) __releases(&p->tid_rx_lock) seq_puts(s, "\n"); if (!num_packets) continue; - do_div(tx_latency_avg, num_packets); + div64_u64(tx_latency_avg, num_packets); seq_printf(s, "Tx/Latency min/avg/max (us): %d/%lld/%d", p->stats.tx_latency_min_us, tx_latency_avg,