On 2021/3/9 19:45, Satya Tangirala wrote:
On Tue, Mar 09, 2021 at 01:18:12AM -0800, Jia-Ju Bai wrote:When blk_ksm_find_keyslot() returns NULL to slot, no error return code of blk_ksm_evict_key() is assigned. To fix this bug, err is assigned with -ENOENT in this case. Fixes: 1b2628397058 ("block: Keyslot Manager for Inline Encryption") Reported-by: TOTE Robot <[email protected]> Signed-off-by: Jia-Ju Bai <[email protected]> --- block/keyslot-manager.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/block/keyslot-manager.c b/block/keyslot-manager.c index 2c4a55bea6ca..4dd5da0645bc 100644 --- a/block/keyslot-manager.c +++ b/block/keyslot-manager.c @@ -375,8 +375,10 @@ int blk_ksm_evict_key(struct blk_keyslot_manager *ksm,blk_ksm_hw_enter(ksm);slot = blk_ksm_find_keyslot(ksm, key); - if (!slot) + if (!slot) { + err = -ENOENT; goto out_unlock; + }if (WARN_ON_ONCE(atomic_read(&slot->slot_refs) != 0)) {err = -EBUSY; -- 2.17.1This function was deliberately designed to return 0 on success *and also* if there's no keyslot found with the specified key - i.e. it returns 0 if the key is no longer programmed into the keyslot manager, which is what the callers care about, so I don't think there's a bug here.
Thanks for the reply and explanation! It seems like a false positive here, and I am sorry for this false report. Best wishes, Jia-Ju Bai

