Message ID | 1600095036-23868-1-git-send-email-magnus.karlsson@gmail.com |
---|---|
State | New |
Headers | show |
Series | [bpf-next] xsk: fix refcount warning in xp_dma_map | expand |
On Mon, Sep 14, 2020 at 7:52 AM Magnus Karlsson <magnus.karlsson@gmail.com> wrote: > > From: Magnus Karlsson <magnus.karlsson@intel.com> > > Fix a potential refcount warning that a zero value is increased to one > in xp_dma_map, by initializing the refcount to one to start with, > instead of zero plus a refcount_inc(). > > Fixes: 921b68692abb ("xsk: Enable sharing of dma mappings") > Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com> Acked-by: Song Liu <songliubraving@fb.com>
On Mon, Sep 14, 2020 at 2:13 PM Song Liu <song@kernel.org> wrote: > > On Mon, Sep 14, 2020 at 7:52 AM Magnus Karlsson > <magnus.karlsson@gmail.com> wrote: > > > > From: Magnus Karlsson <magnus.karlsson@intel.com> > > > > Fix a potential refcount warning that a zero value is increased to one > > in xp_dma_map, by initializing the refcount to one to start with, > > instead of zero plus a refcount_inc(). > > > > Fixes: 921b68692abb ("xsk: Enable sharing of dma mappings") > > Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com> > > Acked-by: Song Liu <songliubraving@fb.com> Applied. Thanks
diff --git a/net/xdp/xsk_buff_pool.c b/net/xdp/xsk_buff_pool.c index 5b00bc5..e63fadd 100644 --- a/net/xdp/xsk_buff_pool.c +++ b/net/xdp/xsk_buff_pool.c @@ -296,7 +296,7 @@ static struct xsk_dma_map *xp_create_dma_map(struct device *dev, struct net_devi dma_map->dev = dev; dma_map->dma_need_sync = false; dma_map->dma_pages_cnt = nr_pages; - refcount_set(&dma_map->users, 0); + refcount_set(&dma_map->users, 1); list_add(&dma_map->list, &umem->xsk_dma_list); return dma_map; } @@ -369,7 +369,6 @@ static int xp_init_dma_info(struct xsk_buff_pool *pool, struct xsk_dma_map *dma_ pool->dev = dma_map->dev; pool->dma_pages_cnt = dma_map->dma_pages_cnt; pool->dma_need_sync = dma_map->dma_need_sync; - refcount_inc(&dma_map->users); memcpy(pool->dma_pages, dma_map->dma_pages, pool->dma_pages_cnt * sizeof(*pool->dma_pages)); @@ -390,6 +389,7 @@ int xp_dma_map(struct xsk_buff_pool *pool, struct device *dev, if (err) return err; + refcount_inc(&dma_map->users); return 0; }