nfp: don't pad strings in nfp_cpp_resource_find() to avoid gcc 8 warning
Once upon a time nfp_cpp_resource_find() took a name parameter, which could be any user-chosen string. Resources are identified by a CRC32 hash of a 8 byte string, so we had to pad user input with zeros to make sure CRC32 gave the correct result. Since then nfp_cpp_resource_find() was made to operate on allocated resources only (struct nfp_resource). We kzalloc those so there is no need to pad the strings and use memcmp. This avoids a GCC 8 stringop-truncation warning: In function ‘nfp_cpp_resource_find’, inlined from ‘nfp_resource_try_acquire’ at .../nfpcore/nfp_resource.c:153:8, inlined from ‘nfp_resource_acquire’ at .../nfpcore/nfp_resource.c:206:9: .../nfpcore/nfp_resource.c:108:2: warning: strncpy’ output may be truncated copying 8 bytes from a string of length 8 [-Wstringop-truncation] strncpy(name_pad, res->name, sizeof(name_pad)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
cdb8744d80
commit
f8d0efb112
|
@ -98,21 +98,18 @@ struct nfp_resource {
|
|||
|
||||
static int nfp_cpp_resource_find(struct nfp_cpp *cpp, struct nfp_resource *res)
|
||||
{
|
||||
char name_pad[NFP_RESOURCE_ENTRY_NAME_SZ] = {};
|
||||
struct nfp_resource_entry entry;
|
||||
u32 cpp_id, key;
|
||||
int ret, i;
|
||||
|
||||
cpp_id = NFP_CPP_ID(NFP_RESOURCE_TBL_TARGET, 3, 0); /* Atomic read */
|
||||
|
||||
strncpy(name_pad, res->name, sizeof(name_pad));
|
||||
|
||||
/* Search for a matching entry */
|
||||
if (!memcmp(name_pad, NFP_RESOURCE_TBL_NAME "\0\0\0\0\0\0\0\0", 8)) {
|
||||
if (!strcmp(res->name, NFP_RESOURCE_TBL_NAME)) {
|
||||
nfp_err(cpp, "Grabbing device lock not supported\n");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
key = crc32_posix(name_pad, sizeof(name_pad));
|
||||
key = crc32_posix(res->name, NFP_RESOURCE_ENTRY_NAME_SZ);
|
||||
|
||||
for (i = 0; i < NFP_RESOURCE_TBL_ENTRIES; i++) {
|
||||
u64 addr = NFP_RESOURCE_TBL_BASE +
|
||||
|
|
Loading…
Reference in New Issue