crypto: stm32/crc32 - fix parsing list of devices
authorThomas Bourgoin <thomas.bourgoin@foss.st.com>
Fri, 15 Dec 2023 11:17:24 +0000 (12:17 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 5 Feb 2024 20:14:16 +0000 (20:14 +0000)
[ Upstream commit 0eaef675b94c746900dcea7f6c41b9a103ed5d53 ]

smatch warnings:
drivers/crypto/stm32/stm32-crc32.c:108 stm32_crc_get_next_crc() warn:
can 'crc' even be NULL?

Use list_first_entry_or_null instead of list_first_entry to retrieve
the first device registered.
The function list_first_entry always return a non NULL pointer even if
the list is empty. Hence checking if the pointer returned is NULL does
not tell if the list is empty or not.

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/r/202311281111.ou2oUL2i-lkp@intel.com/
Reported-by: Dan Carpenter <error27@gmail.com>
Closes: https://lore.kernel.org/r/202311281111.ou2oUL2i-lkp@intel.com/
Signed-off-by: Thomas Bourgoin <thomas.bourgoin@foss.st.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/crypto/stm32/stm32-crc32.c

index 90a920e..c439be1 100644 (file)
@@ -104,7 +104,7 @@ static struct stm32_crc *stm32_crc_get_next_crc(void)
        struct stm32_crc *crc;
 
        spin_lock_bh(&crc_list.lock);
-       crc = list_first_entry(&crc_list.dev_list, struct stm32_crc, list);
+       crc = list_first_entry_or_null(&crc_list.dev_list, struct stm32_crc, list);
        if (crc)
                list_move_tail(&crc->list, &crc_list.dev_list);
        spin_unlock_bh(&crc_list.lock);