diff options
author | Paolo Abeni <pabeni@redhat.com> | 2024-02-06 15:36:09 +0100 |
---|---|---|
committer | Paolo Abeni <pabeni@redhat.com> | 2024-02-06 15:36:09 +0100 |
commit | 60b4dfcda647f86c62dc7b8219d2bfed19bb2698 (patch) | |
tree | bb91bb5363cafa206f4fbd36f82e4eb868dba776 | |
parent | 06e6bc1b7aafa309c38d9d6623e8be3846647207 (diff) | |
parent | 83cdd8db75085f3e415f420d6022f9c813ea50af (diff) |
Merge branch 'nfc-hci-save-a-few-bytes-of-memory-when-registering-a-nfc_llc-engine'
Christophe says:
====================
nfc: hci: Save a few bytes of memory when registering a 'nfc_llc' engine
nfc_llc_register() calls pass a string literal as the 'name' parameter.
So kstrdup_const() can be used instead of kfree() to avoid a memory
allocation in such cases.
====================
Link: https://lore.kernel.org/r/cover.1706946099.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
-rw-r--r-- | net/nfc/hci/llc.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/net/nfc/hci/llc.c b/net/nfc/hci/llc.c index 2140f6724644..ba91284f4086 100644 --- a/net/nfc/hci/llc.c +++ b/net/nfc/hci/llc.c @@ -30,15 +30,19 @@ exit: return r; } +static void nfc_llc_del_engine(struct nfc_llc_engine *llc_engine) +{ + list_del(&llc_engine->entry); + kfree_const(llc_engine->name); + kfree(llc_engine); +} + void nfc_llc_exit(void) { struct nfc_llc_engine *llc_engine, *n; - list_for_each_entry_safe(llc_engine, n, &llc_engines, entry) { - list_del(&llc_engine->entry); - kfree(llc_engine->name); - kfree(llc_engine); - } + list_for_each_entry_safe(llc_engine, n, &llc_engines, entry) + nfc_llc_del_engine(llc_engine); } int nfc_llc_register(const char *name, const struct nfc_llc_ops *ops) @@ -49,7 +53,7 @@ int nfc_llc_register(const char *name, const struct nfc_llc_ops *ops) if (llc_engine == NULL) return -ENOMEM; - llc_engine->name = kstrdup(name, GFP_KERNEL); + llc_engine->name = kstrdup_const(name, GFP_KERNEL); if (llc_engine->name == NULL) { kfree(llc_engine); return -ENOMEM; @@ -82,9 +86,7 @@ void nfc_llc_unregister(const char *name) if (llc_engine == NULL) return; - list_del(&llc_engine->entry); - kfree(llc_engine->name); - kfree(llc_engine); + nfc_llc_del_engine(llc_engine); } struct nfc_llc *nfc_llc_allocate(const char *name, struct nfc_hci_dev *hdev, |