[tip: objtool/urgent] objtool, nvmet: Fix out-of-bounds stack access in nvmet_ctrl_state_show()

Chaitanya Kulkarni chaitanyak at nvidia.com
Tue Mar 25 15:20:48 PDT 2025


(+linux-nvme)

On 3/25/25 15:09, tip-bot2 for Josh Poimboeuf wrote:
> The following commit has been merged into the objtool/urgent branch of tip:
>
> Commit-ID:     107a23185d990e3df6638d9a84c835f963fe30a6
> Gitweb:        https://git.kernel.org/tip/107a23185d990e3df6638d9a84c835f963fe30a6
> Author:        Josh Poimboeuf <jpoimboe at kernel.org>
> AuthorDate:    Mon, 24 Mar 2025 14:56:05 -07:00
> Committer:     Ingo Molnar <mingo at kernel.org>
> CommitterDate: Tue, 25 Mar 2025 23:00:15 +01:00
>
> objtool, nvmet: Fix out-of-bounds stack access in nvmet_ctrl_state_show()
>
> The csts_state_names[] array only has six sparse entries, but the
> iteration code in nvmet_ctrl_state_show() iterates seven, resulting in a
> potential out-of-bounds stack read.  Fix that.
>
> Fixes the following warning with an UBSAN kernel:
>
>    vmlinux.o: warning: objtool: .text.nvmet_ctrl_state_show: unexpected end of section
>
> Fixes: 649fd41420a8 ("nvmet: add debugfs support")
> Reported-by: kernel test robot <lkp at intel.com>
> Signed-off-by: Josh Poimboeuf <jpoimboe at kernel.org>
> Signed-off-by: Ingo Molnar <mingo at kernel.org>
> Cc: Christoph Hellwig <hch at lst.de>
> Cc: Sagi Grimberg <sagi at grimberg.me>
> Cc: Chaitanya Kulkarni <kch at nvidia.com>
> Cc: Linus Torvalds <torvalds at linux-foundation.org>
> Link: https://lore.kernel.org/r/f1f60858ee7a941863dc7f5506c540cb9f97b5f6.1742852847.git.jpoimboe@kernel.org
> Closes: https://lore.kernel.org/oe-kbuild-all/202503171547.LlCTJLQL-lkp@intel.com/
> ---
>   drivers/nvme/target/debugfs.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/nvme/target/debugfs.c b/drivers/nvme/target/debugfs.c
> index 220c739..c6571fb 100644
> --- a/drivers/nvme/target/debugfs.c
> +++ b/drivers/nvme/target/debugfs.c
> @@ -78,7 +78,7 @@ static int nvmet_ctrl_state_show(struct seq_file *m, void *p)
>   	bool sep = false;
>   	int i;
>   
> -	for (i = 0; i < 7; i++) {
> +	for (i = 0; i < ARRAY_SIZE(csts_state_names); i++) {
>   		int state = BIT(i);
>   
>   		if (!(ctrl->csts & state))

Looks good.

Reviewed-by: Chaitanya Kulkarni <kch at nvidia.com>

-ck




More information about the Linux-nvme mailing list