On Fri, Dec 4, 2020 at 9:49 AM Zhang Changzhong <zhangchangzhong@xxxxxxxxxx> wrote: > > Fix to return a negative error code from the error handling > case instead of 0, as done elsewhere in this function. > > Fixes: 921b68692abb ("xsk: Enable sharing of dma mappings") > Reported-by: Hulk Robot <hulkci@xxxxxxxxxx> > Signed-off-by: Zhang Changzhong <zhangchangzhong@xxxxxxxxxx> > --- > net/xdp/xsk_buff_pool.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/net/xdp/xsk_buff_pool.c b/net/xdp/xsk_buff_pool.c > index 9287edd..d5adeee 100644 > --- a/net/xdp/xsk_buff_pool.c > +++ b/net/xdp/xsk_buff_pool.c > @@ -175,6 +175,7 @@ static int __xp_assign_dev(struct xsk_buff_pool *pool, > > if (!pool->dma_pages) { > WARN(1, "Driver did not DMA map zero-copy buffers"); > + err = -EINVAL; Good catch! My intention here by not setting err is that it should fall back to copy mode, which it does. The problem is that the force_zc flag is disregarded when err is not set (see exit code below) and your patch fixes that. If force_zc is set, we should exit out with an error, not fall back. Could you please write about this in your cover letter and send a v2? BTW, what is the "Hulk Robot" that is in your Reported-by tag? Thank you: Magnus err_unreg_xsk: xp_disable_drv_zc(pool); err_unreg_pool: if (!force_zc) err = 0; /* fallback to copy mode */ if (err) xsk_clear_pool_at_qid(netdev, queue_id); return err; > goto err_unreg_xsk; > } > pool->umem->zc = true; > -- > 2.9.5 >