]> www.infradead.org Git - nvme.git/commit
nvmet: replace strncpy with strscpy
authorMarcelo Moreira <marcelomoreira1905@gmail.com>
Thu, 3 Apr 2025 23:23:56 +0000 (20:23 -0300)
committerChristoph Hellwig <hch@lst.de>
Tue, 22 Apr 2025 08:08:32 +0000 (10:08 +0200)
commit909ef21bec608f722ad16e950d68fc6787e9b00f
tree2858b0a8af87746ac7edfa28c4103cacbf487608
parent4b87ab1f99aa8cd2cc0594ee805958f2e8ed62fd
nvmet: replace strncpy with strscpy

The strncpy() function is deprecated for NUL-terminated strings as
explained in the "strncpy() on NUL-terminated strings" section of
Documentation/process/deprecated.rst.

The key issues are:
- strncpy() fails to guarantee NULL-termination when source > destination
- it unnecessarily zero-pads short strings, causing performance overhead

strscpy() is the proper replacement because:
- it guarantees NULL-termination
- it avoids redundant zero-padding
- it aligns with current kernel string-copying best practice

memcpy() was rejected because:
- NQN buffers (subsysnqn/hostnqn) are treated as NULL-terminated strings:
  - strcmp() usage in nvmet_host_allowed() (discovery.c)
  - strscpy() to copy subsysnqn in nvmet_execute_disc_identify()

seq_buf wasn't used because:
- this is a simple fixed-size buffer copy
- there is no need for progressive string construction features

Signed-off-by: Marcelo Moreira <marcelomoreira1905@gmail.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/target/discovery.c