* [PATCH 1/1] xdp: compact the function xsk_map_inc
@ 2020-11-22 9:04 Zhu Yanjun
2020-11-23 10:09 ` Magnus Karlsson
0 siblings, 1 reply; 3+ messages in thread
From: Zhu Yanjun @ 2020-11-22 9:04 UTC (permalink / raw)
To: magnus.karlsson, bjorn.topel, davem, netdev; +Cc: Zhu Yanjun, Zhu Yanjun
From: Zhu Yanjun <zyjzyj2000@gmail.com>
The function xsk_map_inc always returns zero. As such, changing the
return type to void and removing the test code.
Signed-off-by: Zhu Yanjun <zyjzyj2000@gmail.com>
Signed-off-by: Zhu Yanjun <yanjunz@nvidia.com>
---
net/xdp/xsk.c | 1 -
net/xdp/xsk.h | 2 +-
net/xdp/xskmap.c | 10 ++--------
3 files changed, 3 insertions(+), 10 deletions(-)
diff --git a/net/xdp/xsk.c b/net/xdp/xsk.c
index cfbec39..c1b8a88 100644
--- a/net/xdp/xsk.c
+++ b/net/xdp/xsk.c
@@ -548,7 +548,6 @@ static void xsk_unbind_dev(struct xdp_sock *xs)
node = list_first_entry_or_null(&xs->map_list, struct xsk_map_node,
node);
if (node) {
- WARN_ON(xsk_map_inc(node->map));
map = node->map;
*map_entry = node->map_entry;
}
diff --git a/net/xdp/xsk.h b/net/xdp/xsk.h
index b9e896c..766b9e2 100644
--- a/net/xdp/xsk.h
+++ b/net/xdp/xsk.h
@@ -41,7 +41,7 @@ struct xsk_map_node {
void xsk_map_try_sock_delete(struct xsk_map *map, struct xdp_sock *xs,
struct xdp_sock **map_entry);
-int xsk_map_inc(struct xsk_map *map);
+void xsk_map_inc(struct xsk_map *map);
void xsk_map_put(struct xsk_map *map);
void xsk_clear_pool_at_qid(struct net_device *dev, u16 queue_id);
int xsk_reg_pool_at_qid(struct net_device *dev, struct xsk_buff_pool *pool,
diff --git a/net/xdp/xskmap.c b/net/xdp/xskmap.c
index 49da2b8..c7dd94a 100644
--- a/net/xdp/xskmap.c
+++ b/net/xdp/xskmap.c
@@ -11,10 +11,9 @@
#include "xsk.h"
-int xsk_map_inc(struct xsk_map *map)
+void xsk_map_inc(struct xsk_map *map)
{
bpf_map_inc(&map->map);
- return 0;
}
void xsk_map_put(struct xsk_map *map)
@@ -26,17 +25,12 @@ void xsk_map_put(struct xsk_map *map)
struct xdp_sock **map_entry)
{
struct xsk_map_node *node;
- int err;
node = kzalloc(sizeof(*node), GFP_ATOMIC | __GFP_NOWARN);
if (!node)
return ERR_PTR(-ENOMEM);
- err = xsk_map_inc(map);
- if (err) {
- kfree(node);
- return ERR_PTR(err);
- }
+ xsk_map_inc(map);
node->map = map;
node->map_entry = map_entry;
--
1.7.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 1/1] xdp: compact the function xsk_map_inc
2020-11-22 9:04 [PATCH 1/1] xdp: compact the function xsk_map_inc Zhu Yanjun
@ 2020-11-23 10:09 ` Magnus Karlsson
0 siblings, 0 replies; 3+ messages in thread
From: Magnus Karlsson @ 2020-11-23 10:09 UTC (permalink / raw)
To: Zhu Yanjun
Cc: Karlsson, Magnus, Björn Töpel, David S. Miller,
Network Development, Zhu Yanjun
On Sun, Nov 22, 2020 at 10:07 AM Zhu Yanjun <yanjunz@nvidia.com> wrote:
>
> From: Zhu Yanjun <zyjzyj2000@gmail.com>
>
> The function xsk_map_inc always returns zero. As such, changing the
> return type to void and removing the test code.
>
> Signed-off-by: Zhu Yanjun <zyjzyj2000@gmail.com>
> Signed-off-by: Zhu Yanjun <yanjunz@nvidia.com>
> ---
> net/xdp/xsk.c | 1 -
> net/xdp/xsk.h | 2 +-
> net/xdp/xskmap.c | 10 ++--------
> 3 files changed, 3 insertions(+), 10 deletions(-)
>
> diff --git a/net/xdp/xsk.c b/net/xdp/xsk.c
> index cfbec39..c1b8a88 100644
> --- a/net/xdp/xsk.c
> +++ b/net/xdp/xsk.c
> @@ -548,7 +548,6 @@ static void xsk_unbind_dev(struct xdp_sock *xs)
> node = list_first_entry_or_null(&xs->map_list, struct xsk_map_node,
> node);
> if (node) {
> - WARN_ON(xsk_map_inc(node->map));
> map = node->map;
> *map_entry = node->map_entry;
> }
> diff --git a/net/xdp/xsk.h b/net/xdp/xsk.h
> index b9e896c..766b9e2 100644
> --- a/net/xdp/xsk.h
> +++ b/net/xdp/xsk.h
> @@ -41,7 +41,7 @@ struct xsk_map_node {
>
> void xsk_map_try_sock_delete(struct xsk_map *map, struct xdp_sock *xs,
> struct xdp_sock **map_entry);
> -int xsk_map_inc(struct xsk_map *map);
> +void xsk_map_inc(struct xsk_map *map);
> void xsk_map_put(struct xsk_map *map);
> void xsk_clear_pool_at_qid(struct net_device *dev, u16 queue_id);
> int xsk_reg_pool_at_qid(struct net_device *dev, struct xsk_buff_pool *pool,
> diff --git a/net/xdp/xskmap.c b/net/xdp/xskmap.c
> index 49da2b8..c7dd94a 100644
> --- a/net/xdp/xskmap.c
> +++ b/net/xdp/xskmap.c
> @@ -11,10 +11,9 @@
>
> #include "xsk.h"
>
> -int xsk_map_inc(struct xsk_map *map)
> +void xsk_map_inc(struct xsk_map *map)
> {
> bpf_map_inc(&map->map);
> - return 0;
> }
Thank you Yanjun for your cleanup. I think we can take this one step
further and remove the function xsk_map_inc completely and use
bpf_map_inc directly in the code. Could you please do this and submit
a v2?
> void xsk_map_put(struct xsk_map *map)
> @@ -26,17 +25,12 @@ void xsk_map_put(struct xsk_map *map)
> struct xdp_sock **map_entry)
> {
> struct xsk_map_node *node;
> - int err;
>
> node = kzalloc(sizeof(*node), GFP_ATOMIC | __GFP_NOWARN);
> if (!node)
> return ERR_PTR(-ENOMEM);
>
> - err = xsk_map_inc(map);
> - if (err) {
> - kfree(node);
> - return ERR_PTR(err);
> - }
> + xsk_map_inc(map);
>
> node->map = map;
> node->map_entry = map_entry;
> --
> 1.7.1
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH 1/1] xdp: compact the function xsk_map_inc
@ 2020-11-22 10:12 kernel test robot
0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2020-11-22 10:12 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 6974 bytes --]
CC: kbuild-all(a)lists.01.org
In-Reply-To: <1606035891-6797-1-git-send-email-yanjunz@nvidia.com>
References: <1606035891-6797-1-git-send-email-yanjunz@nvidia.com>
TO: Zhu Yanjun <yanjunz@nvidia.com>
TO: magnus.karlsson(a)intel.com
TO: bjorn.topel(a)intel.com
TO: davem(a)davemloft.net
TO: netdev(a)vger.kernel.org
CC: Zhu Yanjun <zyjzyj2000@gmail.com>
Hi Zhu,
I love your patch! Perhaps something to improve:
[auto build test WARNING on linus/master]
[also build test WARNING on v5.10-rc4 next-20201120]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Zhu-Yanjun/xdp-compact-the-function-xsk_map_inc/20201122-171124
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git a349e4c659609fd20e4beea89e5c4a4038e33a95
:::::: branch date: 61 minutes ago
:::::: commit date: 61 minutes ago
config: h8300-randconfig-m031-20201122 (attached as .config)
compiler: h8300-linux-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
net/xdp/xskmap.c:186 xsk_map_update_elem() warn: passing a valid pointer to 'PTR_ERR'
vim +/PTR_ERR +186 net/xdp/xskmap.c
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 155
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 156 static int xsk_map_update_elem(struct bpf_map *map, void *key, void *value,
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 157 u64 map_flags)
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 158 {
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 159 struct xsk_map *m = container_of(map, struct xsk_map, map);
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 160 struct xdp_sock *xs, *old_xs, **map_entry;
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 161 u32 i = *(u32 *)key, fd = *(u32 *)value;
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 162 struct xsk_map_node *node;
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 163 struct socket *sock;
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 164 int err;
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 165
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 166 if (unlikely(map_flags > BPF_EXIST))
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 167 return -EINVAL;
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 168 if (unlikely(i >= m->map.max_entries))
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 169 return -E2BIG;
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 170
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 171 sock = sockfd_lookup(fd, &err);
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 172 if (!sock)
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 173 return err;
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 174
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 175 if (sock->sk->sk_family != PF_XDP) {
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 176 sockfd_put(sock);
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 177 return -EOPNOTSUPP;
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 178 }
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 179
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 180 xs = (struct xdp_sock *)sock->sk;
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 181
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 182 map_entry = &m->xsk_map[i];
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 183 node = xsk_map_node_alloc(m, map_entry);
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 184 if (IS_ERR(node)) {
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 185 sockfd_put(sock);
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 @186 return PTR_ERR(node);
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 187 }
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 188
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 189 spin_lock_bh(&m->lock);
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 190 old_xs = READ_ONCE(*map_entry);
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 191 if (old_xs == xs) {
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 192 err = 0;
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 193 goto out;
36cc34358caf631 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 194 } else if (old_xs && map_flags == BPF_NOEXIST) {
36cc34358caf631 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 195 err = -EEXIST;
36cc34358caf631 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 196 goto out;
36cc34358caf631 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 197 } else if (!old_xs && map_flags == BPF_EXIST) {
36cc34358caf631 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 198 err = -ENOENT;
36cc34358caf631 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 199 goto out;
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 200 }
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 201 xsk_map_sock_add(xs, node);
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 202 WRITE_ONCE(*map_entry, xs);
cee271678d0e317 kernel/bpf/xskmap.c Björn Töpel 2018-10-08 203 if (old_xs)
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 204 xsk_map_sock_delete(old_xs, map_entry);
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 205 spin_unlock_bh(&m->lock);
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 206 sockfd_put(sock);
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 207 return 0;
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 208
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 209 out:
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 210 spin_unlock_bh(&m->lock);
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 211 sockfd_put(sock);
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 212 xsk_map_node_free(node);
0402acd683c6788 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 213 return err;
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 214 }
fbfc504a24f53f7 kernel/bpf/xskmap.c Björn Töpel 2018-05-02 215
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 19668 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-11-23 10:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-22 9:04 [PATCH 1/1] xdp: compact the function xsk_map_inc Zhu Yanjun
2020-11-23 10:09 ` Magnus Karlsson
2020-11-22 10:12 kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.