diff options
| author | Sergey Shtylyov <s.shtylyov@auroraos.dev> | 2026-09-07 22:46:32 +0300 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2026-09-09 18:51:35 -0700 |
| commit | f217004a40c49e787372e798785aecb983828d35 (patch) | |
| tree | 3016de1220431e961390f7a884d545a737cacfe6 | |
| parent | 3bfa48d011fbf41b50480a12efa0e26990c43b36 (diff) | |
| download | linux-next-f217004a40c49e787372e798785aecb983828d35.tar.gz linux-next-f217004a40c49e787372e798785aecb983828d35.zip | |
r8152: simplify loops in generic_ocp_{read,write}()
In generic_ocp_{read,write}(), the *while* loops look very strange:
the last iteration is implemented differently to the previous ones
(doing some useless assignments before *break*) for no good reason.
Merge the different iterations into one, using the local variables
in the loop bodies...
Found by a static analysis tool.
Suggested-by: Michal Pecio <michal.pecio@gmail.com>
Signed-off-by: Sergey Shtylyov <s.shtylyov@auroraos.dev>
Link: https://patch.msgid.link/863dac62-89ef-42d7-9108-d4a0600913a4@auroraos.dev
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
| -rw-r--r-- | drivers/net/usb/r8152.c | 55 |
1 files changed, 17 insertions, 38 deletions
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c index f61686433031..af3d7dcb2f14 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@ -1432,24 +1432,15 @@ static int generic_ocp_read(struct r8152 *tp, u16 index, u16 size, return -EPERM; while (size) { - if (size > limit) { - ret = get_registers(tp, index, type, limit, data); - if (ret < 0) - break; - - index += limit; - data += limit; - size -= limit; - } else { - ret = get_registers(tp, index, type, size, data); - if (ret < 0) - break; + u16 n = min(size, limit); - index += size; - data += size; - size = 0; + ret = get_registers(tp, index, type, n, data); + if (ret < 0) break; - } + + index += n; + data += n; + size -= n; } if (ret == -ENODEV) @@ -1499,28 +1490,16 @@ static int generic_ocp_write(struct r8152 *tp, u16 index, u16 byteen, size -= 4; while (size) { - if (size > limit) { - ret = set_registers(tp, index, - type | BYTE_EN_DWORD, - limit, data); - if (ret < 0) - goto error1; - - index += limit; - data += limit; - size -= limit; - } else { - ret = set_registers(tp, index, - type | BYTE_EN_DWORD, - size, data); - if (ret < 0) - goto error1; - - index += size; - data += size; - size = 0; - break; - } + u16 n = min(size, limit); + + ret = set_registers(tp, index, type | BYTE_EN_DWORD, + n, data); + if (ret < 0) + goto error1; + + index += n; + data += n; + size -= n; } /* Set the last DWORD */ |
