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
| ||
|
Message-Id: <20221215020155.1619839-13-kuba@kernel.org> Date: Wed, 14 Dec 2022 18:01:52 -0800 From: Jakub Kicinski <kuba@...nel.org> To: davem@...emloft.net Cc: netdev@...r.kernel.org, edumazet@...gle.com, pabeni@...hat.com, jiri@...nulli.us, jacob.e.keller@...el.com, leon@...nel.org, Jakub Kicinski <kuba@...nel.org> Subject: [RFC net-next 12/15] devlink: restart dump based on devlink instance ids (function) Use xarray id for cases of sub-objects which are iterated in a function. Signed-off-by: Jakub Kicinski <kuba@...nel.org> --- net/devlink/basic.c | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/net/devlink/basic.c b/net/devlink/basic.c index 028a763feb50..d01089b65ddc 100644 --- a/net/devlink/basic.c +++ b/net/devlink/basic.c @@ -2547,12 +2547,12 @@ static int devlink_nl_cmd_sb_pool_get_dumpit(struct sk_buff *msg, { struct devlink_nl_dump_state *dump = devl_dump_state(cb); struct devlink *devlink; - struct devlink_sb *devlink_sb; - unsigned long index; - int idx = 0; int err = 0; - devlinks_xa_for_each_registered_get(sock_net(msg->sk), index, devlink) { + devlink_dump_for_each_instance_get(msg, dump, devlink) { + struct devlink_sb *devlink_sb; + int idx = 0; + if (!devlink->ops->sb_pool_get) goto retry; @@ -2567,6 +2567,7 @@ static int devlink_nl_cmd_sb_pool_get_dumpit(struct sk_buff *msg, } else if (err) { devl_unlock(devlink); devlink_put(devlink); + dump->idx = idx; goto out; } } @@ -2578,7 +2579,6 @@ static int devlink_nl_cmd_sb_pool_get_dumpit(struct sk_buff *msg, if (err != -EMSGSIZE) return err; - dump->idx = idx; return msg->len; } @@ -2762,12 +2762,12 @@ static int devlink_nl_cmd_sb_port_pool_get_dumpit(struct sk_buff *msg, { struct devlink_nl_dump_state *dump = devl_dump_state(cb); struct devlink *devlink; - struct devlink_sb *devlink_sb; - unsigned long index; - int idx = 0; int err = 0; - devlinks_xa_for_each_registered_get(sock_net(msg->sk), index, devlink) { + devlink_dump_for_each_instance_get(msg, dump, devlink) { + struct devlink_sb *devlink_sb; + int idx = 0; + if (!devlink->ops->sb_port_pool_get) goto retry; @@ -2782,6 +2782,7 @@ static int devlink_nl_cmd_sb_port_pool_get_dumpit(struct sk_buff *msg, } else if (err) { devl_unlock(devlink); devlink_put(devlink); + dump->idx = idx; goto out; } } @@ -2793,7 +2794,6 @@ static int devlink_nl_cmd_sb_port_pool_get_dumpit(struct sk_buff *msg, if (err != -EMSGSIZE) return err; - dump->idx = idx; return msg->len; } @@ -3005,12 +3005,12 @@ devlink_nl_cmd_sb_tc_pool_bind_get_dumpit(struct sk_buff *msg, { struct devlink_nl_dump_state *dump = devl_dump_state(cb); struct devlink *devlink; - struct devlink_sb *devlink_sb; - unsigned long index; - int idx = 0; int err = 0; - devlinks_xa_for_each_registered_get(sock_net(msg->sk), index, devlink) { + devlink_dump_for_each_instance_get(msg, dump, devlink) { + struct devlink_sb *devlink_sb; + int idx = 0; + if (!devlink->ops->sb_tc_pool_bind_get) goto retry; @@ -3025,6 +3025,7 @@ devlink_nl_cmd_sb_tc_pool_bind_get_dumpit(struct sk_buff *msg, } else if (err) { devl_unlock(devlink); devlink_put(devlink); + dump->idx = idx; goto out; } } @@ -3036,7 +3037,6 @@ devlink_nl_cmd_sb_tc_pool_bind_get_dumpit(struct sk_buff *msg, if (err != -EMSGSIZE) return err; - dump->idx = idx; return msg->len; } @@ -6085,19 +6085,20 @@ static int devlink_nl_cmd_region_get_dumpit(struct sk_buff *msg, { struct devlink_nl_dump_state *dump = devl_dump_state(cb); struct devlink *devlink; - unsigned long index; - int idx = 0; int err = 0; - devlinks_xa_for_each_registered_get(sock_net(msg->sk), index, devlink) { + devlink_dump_for_each_instance_get(msg, dump, devlink) { + int idx = 0; + err = devlink_nl_cmd_region_get_devlink_dumpit(msg, cb, devlink, &idx, dump->idx); devlink_put(devlink); - if (err) + if (err) { + dump->idx = idx; goto out; + } } out: - dump->idx = idx; return msg->len; } -- 2.38.1
Powered by blists - more mailing lists