nfc: fix error handling of nfc_proto_register()
authorZiyang Xuan <william.xuanziyang@huawei.com>
Wed, 13 Oct 2021 03:49:32 +0000 (11:49 +0800)
committerJakub Kicinski <kuba@kernel.org>
Thu, 14 Oct 2021 00:32:38 +0000 (17:32 -0700)
When nfc proto id is using, nfc_proto_register() return -EBUSY error
code, but forgot to unregister proto. Fix it by adding proto_unregister()
in the error handling case.

Fixes: c7fe3b52c128 ("NFC: add NFC socket family")
Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Link: https://lore.kernel.org/r/20211013034932.2833737-1-william.xuanziyang@huawei.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/nfc/af_nfc.c

index 6024fad..dda323e 100644 (file)
@@ -60,6 +60,9 @@ int nfc_proto_register(const struct nfc_protocol *nfc_proto)
                proto_tab[nfc_proto->id] = nfc_proto;
        write_unlock(&proto_tab_lock);
 
+       if (rc)
+               proto_unregister(nfc_proto->proto);
+
        return rc;
 }
 EXPORT_SYMBOL(nfc_proto_register);