lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sat, 23 Jan 2021 19:52:19 -0800 From: Jakub Kicinski <kuba@...nel.org> To: Tony Nguyen <anthony.l.nguyen@...el.com> Cc: davem@...emloft.net, Piotr Raczynski <piotr.raczynski@...el.com>, netdev@...r.kernel.org, sassmann@...hat.com, George Kuruvinakunnel <george.kuruvinakunnel@...el.com>, Maciej Fijalkowski <maciej.fijalkowski@...el.com>, Björn Töpel <bjorn@...nel.org>, Magnus Karlsson <magnus.karlsson@...el.com> Subject: Re: [PATCH net 4/7] ice: use correct xdp_ring with XDP_TX action On Fri, 22 Jan 2021 15:57:31 -0800 Tony Nguyen wrote: > From: Piotr Raczynski <piotr.raczynski@...el.com> > > XDP queue number for XDP_TX action is used inconsistently > and may result with no packets transmitted. Fix queue number > used by the driver when doing XDP_TX, i.e. use receive queue > number as in ice_finalize_xdp_rx. > > Also, using smp_processor_id() is wrong here and won't > work with less queues. > > Fixes: efc2214b6047 ("ice: Add support for XDP") > Signed-off-by: Piotr Raczynski <piotr.raczynski@...el.com> > Tested-by: George Kuruvinakunnel <george.kuruvinakunnel@...el.com> > Signed-off-by: Tony Nguyen <anthony.l.nguyen@...el.com> > --- > drivers/net/ethernet/intel/ice/ice_txrx.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/intel/ice/ice_txrx.c b/drivers/net/ethernet/intel/ice/ice_txrx.c > index b6fa83c619dd..7946a90b2da7 100644 > --- a/drivers/net/ethernet/intel/ice/ice_txrx.c > +++ b/drivers/net/ethernet/intel/ice/ice_txrx.c > @@ -546,7 +546,7 @@ ice_run_xdp(struct ice_ring *rx_ring, struct xdp_buff *xdp, > case XDP_PASS: > break; > case XDP_TX: > - xdp_ring = rx_ring->vsi->xdp_rings[smp_processor_id()]; > + xdp_ring = rx_ring->vsi->xdp_rings[rx_ring->q_index]; But then what protects you from one CPU trying to use the tx ring from XDP_TX and another from ice_xdp_xmit() ? Also why does this code not check queue_index < vsi->num_xdp_txq like ice_xdp_xmit() does? Let me CC your local XDP experts whose tags I'm surprised not to see on this patch. > result = ice_xmit_xdp_buff(xdp, xdp_ring); > break; > case XDP_REDIRECT:
Powered by blists - more mailing lists