> -----Original Message-----
> From: Jakub Kicinski <k...@kernel.org>
> Sent: Tuesday, April 28, 2020 7:02 PM
> To: da...@davemloft.net
> Cc: netdev@vger.kernel.org; kernel-t...@fb.com; j...@resnulli.us; Keller, 
> Jacob
> E <jacob.e.kel...@intel.com>; pa...@mellanox.com; Jakub Kicinski
> <k...@kernel.org>
> Subject: [PATCH net] devlink: fix return value after hitting end in region 
> read
> 
> Commit d5b90e99e1d5 ("devlink: report 0 after hitting end in region read")
> fixed region dump, but region read still returns a spurious error:
> 
> $ devlink region read netdevsim/netdevsim1/dummy snapshot 0 addr 0 len 128
> 0000000000000000 a6 f4 c4 1c 21 35 95 a6 9d 34 c3 5b 87 5b 35 79
> 0000000000000010 f3 a0 d7 ee 4f 2f 82 7f c6 dd c4 f6 a5 c3 1b ae
> 0000000000000020 a4 fd c8 62 07 59 48 03 70 3b c7 09 86 88 7f 68
> 0000000000000030 6f 45 5d 6d 7d 0e 16 38 a9 d0 7a 4b 1e 1e 2e a6
> 0000000000000040 e6 1d ae 06 d6 18 00 85 ca 62 e8 7e 11 7e f6 0f
> 0000000000000050 79 7e f7 0f f3 94 68 bd e6 40 22 85 b6 be 6f b1
> 0000000000000060 af db ef 5e 34 f0 98 4b 62 9a e3 1b 8b 93 fc 17
> devlink answers: Invalid argument
> 0000000000000070 61 e8 11 11 66 10 a5 f7 b1 ea 8d 40 60 53 ed 12
> 
> This is a minimal fix, I'll follow up with a restructuring
> so we don't have two checks for the same condition.
> 

Makes sense.

Reviewed-by: Jacob Keller <jacob.e.kel...@intel.com>

> Fixes: fdd41ec21e15 ("devlink: Return right error code in case of errors for 
> region
> read")
> Signed-off-by: Jakub Kicinski <k...@kernel.org>
> ---
>  net/core/devlink.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/net/core/devlink.c b/net/core/devlink.c
> index 80f97722f31f..1ec2e9fd8898 100644
> --- a/net/core/devlink.c
> +++ b/net/core/devlink.c
> @@ -4283,6 +4283,11 @@ static int devlink_nl_cmd_region_read_dumpit(struct
> sk_buff *skb,
>               end_offset =
> nla_get_u64(attrs[DEVLINK_ATTR_REGION_CHUNK_ADDR]);
>               end_offset +=
> nla_get_u64(attrs[DEVLINK_ATTR_REGION_CHUNK_LEN]);
>               dump = false;
> +
> +             if (start_offset == end_offset) {
> +                     err = 0;
> +                     goto nla_put_failure;
> +             }
>       }
> 
>       err = devlink_nl_region_read_snapshot_fill(skb, devlink,
> --
> 2.25.4

Reply via email to