diff options
author | Julian Andres Klode <jak@jak-linux.org> | 2011-09-27 19:00:58 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-09-29 17:41:36 -0700 |
commit | 198dd26714ba4a60ccc5ce70bc4506613b4f0c2d (patch) | |
tree | 52c5b0053a6c806d2552a7a7229b22c2a49eacb4 | |
parent | 391d2fa95c8e5e5ad3b06af235ce4aeae6514966 (diff) |
staging: nvec: Export nvec_msg_free() to clients
Client code wishing to make use of nvec_write_sync() must
have a way to free the returned pointer, otherwise we run
out of poool memory fairly soon.
Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/staging/nvec/nvec.c | 6 | ||||
-rw-r--r-- | drivers/staging/nvec/nvec.h | 3 |
2 files changed, 7 insertions, 2 deletions
diff --git a/drivers/staging/nvec/nvec.c b/drivers/staging/nvec/nvec.c index 3fa1c75bda8a..488d7dd78a2f 100644 --- a/drivers/staging/nvec/nvec.c +++ b/drivers/staging/nvec/nvec.c @@ -159,12 +159,13 @@ static struct nvec_msg *nvec_msg_alloc(struct nvec_chip *nvec) * * Free the given message */ -static void nvec_msg_free(struct nvec_chip *nvec, struct nvec_msg *msg) +inline void nvec_msg_free(struct nvec_chip *nvec, struct nvec_msg *msg) { if (msg != &nvec->tx_scratch) dev_vdbg(nvec->dev, "INFO: Free %ti\n", msg - nvec->msg_pool); atomic_set(&msg->used, 0); } +EXPORT_SYMBOL_GPL(nvec_msg_free); /** * nvec_msg_is_event - Return %true if @msg is an event @@ -259,7 +260,8 @@ EXPORT_SYMBOL(nvec_write_async); * interrupt handlers. * * Returns: A pointer to the response message on success, - * %NULL on failure. + * %NULL on failure. Free with nvec_msg_free() once no longer + * used. */ struct nvec_msg *nvec_write_sync(struct nvec_chip *nvec, const unsigned char *data, short size) diff --git a/drivers/staging/nvec/nvec.h b/drivers/staging/nvec/nvec.h index 44787535c0ea..f8ffe0002d1f 100644 --- a/drivers/staging/nvec/nvec.h +++ b/drivers/staging/nvec/nvec.h @@ -192,4 +192,7 @@ extern int nvec_register_notifier(struct nvec_chip *nvec, extern int nvec_unregister_notifier(struct device *dev, struct notifier_block *nb, unsigned int events); + +extern void nvec_msg_free(struct nvec_chip *nvec, struct nvec_msg *msg); + #endif |