[PW_SID:1155091] firmware: microchip: use kzalloc_objs() instead of kzalloc() with multiply - #2561
[PW_SID:1155091] firmware: microchip: use kzalloc_objs() instead of kzalloc() with multiply#2561linux-riscv-bot wants to merge 4 commits into
Conversation
Overflow status and restart masks are u64, but bits were built with BIT(). On RV32 that is an unsigned long shift, so indices >= 32 truncate or wrap and corrupt the mask. Use BIT_ULL() for those u64 bitops. Fixes: a862521 ("drivers/perf: riscv: Implement SBI PMU snapshot function") Assisted-by: DeepSeek:deepseek-v3 Signed-off-by: Xixin Liu <liuxixin@kylinos.cn> Link: https://patch.msgid.link/prpmask01bitul.v2.1786434000.git.liuxixin@kylinos.cn [pjw@kernel.org: updated to apply] Signed-off-by: Paul Walmsley <pjw@kernel.org>
The available-counter mask was a single unsigned long, but iteration uses RISCV_MAX_COUNTERS, which is 64. On RV32 that reads past the object. Filling with an unsigned-long bit at index 32 and above is also wrong. Use DECLARE_BITMAP and set_bit/bitmap helpers. Walk each bitmap word into CFG_MATCH when checking events, when allocating an index, and when stopping all counters. Set the counter base to i times BITS_PER_LONG. Share the CFG_MATCH ecall through a small helper so the 32-bit argument split is not duplicated. On qemu-system-riscv32 the probe bitmap has bits above XLEN set, so the first word alone is not enough. Fixes: e999143 ("RISC-V: Add perf platform driver based on SBI PMU extension") Assisted-by: DeepSeek:deepseek-v3 Signed-off-by: Xixin Liu <liuxixin@kylinos.cn> Link: https://patch.msgid.link/prpmask02cmap.v2.1786434000.git.liuxixin@kylinos.cn [pjw@kernel.org: updated to apply] Signed-off-by: Paul Walmsley <pjw@kernel.org>
…tiply response_msg is sized as AUTO_UPDATE_FEATURE_RESP_SIZE * sizeof(*response_msg) by hand in both call sites. Use kzalloc_objs() instead, matching the kzalloc_obj() already used elsewhere in this same file for the other allocations in these functions, and getting the same overflow-checked size computation kzalloc_obj() already benefits from. No functional change. Signed-off-by: Hrushiraj Gandhi <hrushirajg23@gmail.com> Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
|
Patch 1: "firmware: microchip: use kzalloc_objs() instead of kzalloc() with multiply" |
|
Patch 1: "firmware: microchip: use kzalloc_objs() instead of kzalloc() with multiply" |
|
Patch 1: "firmware: microchip: use kzalloc_objs() instead of kzalloc() with multiply" |
|
Patch 1: "firmware: microchip: use kzalloc_objs() instead of kzalloc() with multiply" |
|
Patch 1: "firmware: microchip: use kzalloc_objs() instead of kzalloc() with multiply" |
|
Patch 1: "firmware: microchip: use kzalloc_objs() instead of kzalloc() with multiply" |
|
Patch 1: "firmware: microchip: use kzalloc_objs() instead of kzalloc() with multiply" |
|
Patch 1: "firmware: microchip: use kzalloc_objs() instead of kzalloc() with multiply" |
|
Patch 1: "firmware: microchip: use kzalloc_objs() instead of kzalloc() with multiply" |
|
Patch 1: "firmware: microchip: use kzalloc_objs() instead of kzalloc() with multiply" |
|
Patch 1: "firmware: microchip: use kzalloc_objs() instead of kzalloc() with multiply" |
|
Patch 1: "firmware: microchip: use kzalloc_objs() instead of kzalloc() with multiply" |
9ed823f to
a54e736
Compare
PR for series 1155091 applied to workflow__riscv__fixes
Name: firmware: microchip: use kzalloc_objs() instead of kzalloc() with multiply
URL: https://patchwork.kernel.org/project/linux-riscv/list/?series=1155091
Version: 1