Message ID | 20201120151443.105903-1-marekx.majtyka@intel.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 178648916e73e00de83150eb0c90c0d3a977a46a |
Delegated to: | BPF |
Headers | show |
Series | [bpf] xsk: fix incorrect netdev reference count | expand |
Context | Check | Description |
---|---|---|
netdev/cover_letter | success | Link |
netdev/fixes_present | success | Link |
netdev/patch_count | success | Link |
netdev/tree_selection | success | Clearly marked for bpf |
netdev/subject_prefix | success | Link |
netdev/source_inline | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Link |
netdev/module_param | success | Was 0 now: 0 |
netdev/build_32bit | success | Errors and warnings before: 1 this patch: 1 |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/verify_fixes | success | Link |
netdev/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 11 lines checked |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 1 this patch: 1 |
netdev/header_inline | success | Link |
netdev/stable | success | Stable not CCed |
On Fri, Nov 20, 2020 at 4:17 PM <alardam@gmail.com> wrote: > > From: Marek Majtyka <marekx.majtyka@intel.com> > > Fix incorrect netdev reference count in xsk_bind operation. Incorrect > reference count of the device appears when a user calls bind with the > XDP_ZEROCOPY flag on an interface which does not support zero-copy. > In such a case, an error is returned but the reference count is not > decreased. This change fixes the fault, by decreasing the reference count > in case of such an error. > > The problem being corrected appeared in '162c820ed896' for the first time, > and the code was moved to new file location over the time with commit > 'c2d3d6a47462'. This specific patch applies to all version starting > from 'c2d3d6a47462'. The same solution should be applied but on different > file (net/xdp/xdp_umem.c) and function (xdp_umem_assign_dev) for versions > from '162c820ed896' to 'c2d3d6a47462' excluded. > > Fixes: 162c820ed896 ("xdp: hold device for umem regardless of zero- ...") > Signed-off-by: Marek Majtyka <marekx.majtyka@intel.com> > --- > net/xdp/xsk_buff_pool.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/net/xdp/xsk_buff_pool.c b/net/xdp/xsk_buff_pool.c > index 8a3bf4e1318e..46d09bfb1923 100644 > --- a/net/xdp/xsk_buff_pool.c > +++ b/net/xdp/xsk_buff_pool.c > @@ -185,8 +185,10 @@ static int __xp_assign_dev(struct xsk_buff_pool *pool, > err_unreg_pool: > if (!force_zc) > err = 0; /* fallback to copy mode */ > - if (err) > + if (err) { > xsk_clear_pool_at_qid(netdev, queue_id); > + dev_put(netdev); > + } > return err; > } Thank you Marek for spotting and fixing this! Acked-by: Magnus Karlsson <magnus.karlsson@intel.com> > -- > 2.27.0 >
Hello: This patch was applied to bpf/bpf.git (refs/heads/master): On Fri, 20 Nov 2020 16:14:43 +0100 you wrote: > From: Marek Majtyka <marekx.majtyka@intel.com> > > Fix incorrect netdev reference count in xsk_bind operation. Incorrect > reference count of the device appears when a user calls bind with the > XDP_ZEROCOPY flag on an interface which does not support zero-copy. > In such a case, an error is returned but the reference count is not > decreased. This change fixes the fault, by decreasing the reference count > in case of such an error. > > [...] Here is the summary with links: - [bpf] xsk: fix incorrect netdev reference count https://git.kernel.org/bpf/bpf/c/178648916e73 You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html
diff --git a/net/xdp/xsk_buff_pool.c b/net/xdp/xsk_buff_pool.c index 8a3bf4e1318e..46d09bfb1923 100644 --- a/net/xdp/xsk_buff_pool.c +++ b/net/xdp/xsk_buff_pool.c @@ -185,8 +185,10 @@ static int __xp_assign_dev(struct xsk_buff_pool *pool, err_unreg_pool: if (!force_zc) err = 0; /* fallback to copy mode */ - if (err) + if (err) { xsk_clear_pool_at_qid(netdev, queue_id); + dev_put(netdev); + } return err; }