]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
accel/ethosu: fix wrong weight index in NPU_SET_SCALE1_LENGTH on U85
authorMuhammad Bilal <meatuni001@gmail.com>
Sat, 23 May 2026 21:07:53 +0000 (21:07 +0000)
committerRob Herring (Arm) <robh@kernel.org>
Thu, 4 Jun 2026 22:41:46 +0000 (17:41 -0500)
On non-U65 hardware (e.g. U85), opcode 0x4093 is NPU_SET_WEIGHT2_LENGTH.
The BASE handler for the same opcode correctly assigns to
st.weight[2].base, but the LENGTH handler mistakenly assigns cmds[1]
to st.weight[1].length instead of st.weight[2].length.

This leaves weight[2].length at its initialised sentinel value of
0xffffffff and corrupts weight[1].length with the user-supplied value,
breaking the software bounds-check state for both weight buffers on U85.

Fix the index to match the BASE handler.

Fixes: 5a5e9c0228e6 ("accel: Add Arm Ethos-U NPU driver")
Cc: stable@vger.kernel.org
Signed-off-by: Muhammad Bilal <meatuni001@gmail.com>
Link: https://patch.msgid.link/20260523210840.92039-3-meatuni001@gmail.com
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
drivers/accel/ethosu/ethosu_gem.c

index 863cdadb137a18b0c39c1d7889d006c2cf8efb5f..52b6a8752c750dcd1c1640255be45f30206f4701 100644 (file)
@@ -598,7 +598,7 @@ static int ethosu_gem_cmdstream_copy_and_validate(struct drm_device *ddev,
                        if (ethosu_is_u65(edev))
                                st.scale[1].length = cmds[1];
                        else
-                               st.weight[1].length = cmds[1];
+                               st.weight[2].length = cmds[1];
                        break;
                case NPU_SET_WEIGHT3_BASE:
                        st.weight[3].base = addr;