2021-02-26 20:49:20

by Konrad Rzeszutek Wilk

[permalink] [raw]
Subject: [PATCH] cxl: Make loop variable be 'i' instead of 'j'

.. otherwise people spend extra cycles looking for the
inner loop and wondering 'why j'?

This was an over-sight when initial work was rebased
so lets fix it here.

Fixes: 583fa5e71cae ("cxl/mem: Add basic IOCTL interface")
Signed-off-by: Konrad Rzeszutek Wilk <[email protected]>
---
drivers/cxl/mem.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/cxl/mem.c b/drivers/cxl/mem.c
index 244cb7d89678..2b8265b03b0d 100644
--- a/drivers/cxl/mem.c
+++ b/drivers/cxl/mem.c
@@ -698,7 +698,7 @@ static int cxl_query_cmd(struct cxl_memdev *cxlmd,
struct device *dev = &cxlmd->dev;
struct cxl_mem_command *cmd;
u32 n_commands;
- int j = 0;
+ int i = 0;

dev_dbg(dev, "Query IOCTL\n");

@@ -716,10 +716,10 @@ static int cxl_query_cmd(struct cxl_memdev *cxlmd,
cxl_for_each_cmd(cmd) {
const struct cxl_command_info *info = &cmd->info;

- if (copy_to_user(&q->commands[j++], info, sizeof(*info)))
+ if (copy_to_user(&q->commands[i++], info, sizeof(*info)))
return -EFAULT;

- if (j == n_commands)
+ if (i == n_commands)
break;
}

--
2.13.6


2021-02-26 20:58:14

by Al Viro

[permalink] [raw]
Subject: Re: [PATCH] cxl: Make loop variable be 'i' instead of 'j'

On Fri, Feb 26, 2021 at 03:45:52PM -0500, Konrad Rzeszutek Wilk wrote:
> .. otherwise people spend extra cycles looking for the
> inner loop and wondering 'why j'?
>
> This was an over-sight when initial work was rebased
> so lets fix it here.
>
> Fixes: 583fa5e71cae ("cxl/mem: Add basic IOCTL interface")
^^^^^

34 days too early; otherwise, that's a damn good contender...

2021-02-26 20:58:25

by Dan Williams

[permalink] [raw]
Subject: Re: [PATCH] cxl: Make loop variable be 'i' instead of 'j'

On Fri, Feb 26, 2021 at 12:46 PM Konrad Rzeszutek Wilk
<[email protected]> wrote:
>

Hey, Konrad, thanks for fixing this up. Some more cosmetic changes to
fold in below...

> .. otherwise people spend extra cycles looking for the
> inner loop and wondering 'why j'?
>
> This was an over-sight when initial work was rebased

s/over-sight/oversight/

> so lets fix it here.

s/lets/let's/

> Fixes: 583fa5e71cae ("cxl/mem: Add basic IOCTL interface")

Since it's just cosmetic, I don't think it needs a "Fixes:". The
AUTOSEL-bot need not worry about this.

> Signed-off-by: Konrad Rzeszutek Wilk <[email protected]>
> ---
> drivers/cxl/mem.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/cxl/mem.c b/drivers/cxl/mem.c
> index 244cb7d89678..2b8265b03b0d 100644
> --- a/drivers/cxl/mem.c
> +++ b/drivers/cxl/mem.c
> @@ -698,7 +698,7 @@ static int cxl_query_cmd(struct cxl_memdev *cxlmd,
> struct device *dev = &cxlmd->dev;
> struct cxl_mem_command *cmd;
> u32 n_commands;
> - int j = 0;
> + int i = 0;

Let's move this initialization down to right before the loop. If this
ever gets refactored and @i gets reused this will break.

>
> dev_dbg(dev, "Query IOCTL\n");
>
> @@ -716,10 +716,10 @@ static int cxl_query_cmd(struct cxl_memdev *cxlmd,
> cxl_for_each_cmd(cmd) {
> const struct cxl_command_info *info = &cmd->info;
>
> - if (copy_to_user(&q->commands[j++], info, sizeof(*info)))
> + if (copy_to_user(&q->commands[i++], info, sizeof(*info)))
> return -EFAULT;
>
> - if (j == n_commands)
> + if (i == n_commands)
> break;
> }
>
> --
> 2.13.6
>

2021-02-26 21:20:46

by Konrad Rzeszutek Wilk

[permalink] [raw]
Subject: [PATCH v2] cxl: Make loop variable be 'i' instead of 'j'

.. otherwise people spend extra cycles looking for the
inner loop and wondering 'why j'?

This was an oversight when initial work was rebased
so let's fix it here.

Signed-off-by: Konrad Rzeszutek Wilk <[email protected]>
---
v1: Initial posting
v2: Fix per Dan's request
---
drivers/cxl/mem.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/cxl/mem.c b/drivers/cxl/mem.c
index 244cb7d89678..d43197a193ce 100644
--- a/drivers/cxl/mem.c
+++ b/drivers/cxl/mem.c
@@ -698,7 +698,6 @@ static int cxl_query_cmd(struct cxl_memdev *cxlmd,
struct device *dev = &cxlmd->dev;
struct cxl_mem_command *cmd;
u32 n_commands;
- int j = 0;

dev_dbg(dev, "Query IOCTL\n");

@@ -715,11 +714,12 @@ static int cxl_query_cmd(struct cxl_memdev *cxlmd,
*/
cxl_for_each_cmd(cmd) {
const struct cxl_command_info *info = &cmd->info;
+ int i = 0;

- if (copy_to_user(&q->commands[j++], info, sizeof(*info)))
+ if (copy_to_user(&q->commands[i++], info, sizeof(*info)))
return -EFAULT;

- if (j == n_commands)
+ if (i == n_commands)
break;
}

--
2.13.6

2021-02-26 22:25:18

by Konrad Rzeszutek Wilk

[permalink] [raw]
Subject: [PATCH v3] cxl: Make loop variable be 'i' instead of 'j'

.. otherwise people spend extra cycles looking for the
inner loop and wondering 'why j'?

This was an oversight when initial work was rebased
so let's fix it here.

Signed-off-by: Konrad Rzeszutek Wilk <[email protected]>
---
v1: Initial posting
v2: Fix per Dan's request
v3: Duh, don't initialize i in the loop, but do it outside of it.
---
drivers/cxl/mem.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/cxl/mem.c b/drivers/cxl/mem.c
index 244cb7d89678..e7246e585e62 100644
--- a/drivers/cxl/mem.c
+++ b/drivers/cxl/mem.c
@@ -698,7 +698,7 @@ static int cxl_query_cmd(struct cxl_memdev *cxlmd,
struct device *dev = &cxlmd->dev;
struct cxl_mem_command *cmd;
u32 n_commands;
- int j = 0;
+ int i;

dev_dbg(dev, "Query IOCTL\n");

@@ -713,13 +713,14 @@ static int cxl_query_cmd(struct cxl_memdev *cxlmd,
* otherwise, return max(n_commands, total commands) cxl_command_info
* structures.
*/
+ i = 0;
cxl_for_each_cmd(cmd) {
const struct cxl_command_info *info = &cmd->info;

- if (copy_to_user(&q->commands[j++], info, sizeof(*info)))
+ if (copy_to_user(&q->commands[i++], info, sizeof(*info)))
return -EFAULT;

- if (j == n_commands)
+ if (i == n_commands)
break;
}

--
2.29.2

2021-03-01 19:56:40

by David Laight

[permalink] [raw]
Subject: RE: [PATCH v2] cxl: Make loop variable be 'i' instead of 'j'

From: Konrad Rzeszutek Wilk
> Sent: 26 February 2021 21:17
>
> .. otherwise people spend extra cycles looking for the
> inner loop and wondering 'why j'?
>
> This was an oversight when initial work was rebased
> so let's fix it here.
>
> Signed-off-by: Konrad Rzeszutek Wilk <[email protected]>
> ---
> v1: Initial posting
> v2: Fix per Dan's request
> ---
> drivers/cxl/mem.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/cxl/mem.c b/drivers/cxl/mem.c
> index 244cb7d89678..d43197a193ce 100644
> --- a/drivers/cxl/mem.c
> +++ b/drivers/cxl/mem.c
> @@ -698,7 +698,6 @@ static int cxl_query_cmd(struct cxl_memdev *cxlmd,
> struct device *dev = &cxlmd->dev;
> struct cxl_mem_command *cmd;
> u32 n_commands;
> - int j = 0;
>
> dev_dbg(dev, "Query IOCTL\n");
>
> @@ -715,11 +714,12 @@ static int cxl_query_cmd(struct cxl_memdev *cxlmd,
> */
> cxl_for_each_cmd(cmd) {
> const struct cxl_command_info *info = &cmd->info;
> + int i = 0;
>
> - if (copy_to_user(&q->commands[j++], info, sizeof(*info)))
> + if (copy_to_user(&q->commands[i++], info, sizeof(*info)))
> return -EFAULT;
>
> - if (j == n_commands)
> + if (i == n_commands)
> break;


Did you test this?
Looks badly broken to me.

David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)

2021-03-04 12:44:54

by Konrad Rzeszutek Wilk

[permalink] [raw]
Subject: Re: [PATCH v2] cxl: Make loop variable be 'i' instead of 'j'

..snip..
> > cxl_for_each_cmd(cmd) {
> > const struct cxl_command_info *info = &cmd->info;
> > + int i = 0;
> >
> > - if (copy_to_user(&q->commands[j++], info, sizeof(*info)))
> > + if (copy_to_user(&q->commands[i++], info, sizeof(*info)))
> > return -EFAULT;
> >
> > - if (j == n_commands)
> > + if (i == n_commands)
> > break;
>
>
> Did you test this?
> Looks badly broken to me.

I sent out the v3 which had that fixed. See
https://lore.kernel.org/linux-cxl/[email protected]/T/#u