]> www.infradead.org Git - users/hch/misc.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>
Fri, 9 May 2025 05:03:42 +0000 (07:03 +0200)
commitec7931f326b90598af573e96de979fc2afd85d11
treec8b4c9cd2e87fbbff2582d4b7b7bab603854eda9
parentf47b4567677c45e63039281fda046e0deee75273
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