From: Greg Kroah-Hartman <gregkh@suse.de>
To: linux-kernel@vger.kernel.org
Cc: Pekka Enberg <penberg@cs.helsinki.fi>,
David Rowe <david@rowetel.com>,
Steve Underwood <steveu@coppice.org>,
Greg Kroah-Hartman <gregkh@suse.de>
Subject: [PATCH 22/42] Staging: echo: fix kmalloc()/kfree() uses
Date: Wed, 22 Oct 2008 10:29:03 -0700 [thread overview]
Message-ID: <1224696563-5170-22-git-send-email-gregkh@suse.de> (raw)
In-Reply-To: <20081022172203.GA4000@kroah.com>
From: Pekka Enberg <penberg@cs.helsinki.fi>
This patch removes the malloc()/free() macro wrappers and converts
call-sites to use kcalloc() and kzalloc() where appropriate. I also
fixed up out-of-memory error handling in couple of places where it was
broken.
Cc: David Rowe <david@rowetel.com>
Cc: Steve Underwood <steveu@coppice.org>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/staging/echo/echo.c | 36 +++++++++++++++++-------------------
drivers/staging/echo/fir.h | 14 +++++---------
2 files changed, 22 insertions(+), 28 deletions(-)
diff --git a/drivers/staging/echo/echo.c b/drivers/staging/echo/echo.c
index 140f3f0..a2d3078 100644
--- a/drivers/staging/echo/echo.c
+++ b/drivers/staging/echo/echo.c
@@ -109,8 +109,6 @@
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/slab.h>
-#define malloc(a) kmalloc((a), GFP_KERNEL)
-#define free(a) kfree(a)
#include "bit_operations.h"
#include "echo.h"
@@ -238,27 +236,19 @@ struct oslec_state *oslec_create(int len, int adaption_mode)
{
struct oslec_state *ec;
int i;
- int j;
- ec = kmalloc(sizeof(*ec), GFP_KERNEL);
- if (ec == NULL)
- return NULL;
- memset(ec, 0, sizeof(*ec));
+ ec = kzalloc(sizeof(*ec), GFP_KERNEL);
+ if (!ec)
+ return NULL;
ec->taps = len;
ec->log2taps = top_bit(len);
ec->curr_pos = ec->taps - 1;
- for (i = 0; i < 2; i++)
- {
- if ((ec->fir_taps16[i] = (int16_t *) malloc((ec->taps)*sizeof(int16_t))) == NULL)
- {
- for (j = 0; j < i; j++)
- kfree(ec->fir_taps16[j]);
- kfree(ec);
- return NULL;
- }
- memset(ec->fir_taps16[i], 0, (ec->taps)*sizeof(int16_t));
+ for (i = 0; i < 2; i++) {
+ ec->fir_taps16[i] = kcalloc(ec->taps, sizeof(int16_t), GFP_KERNEL);
+ if (!ec->fir_taps16[i])
+ goto error_oom;
}
fir16_create(&ec->fir_state,
@@ -275,8 +265,9 @@ struct oslec_state *oslec_create(int len, int adaption_mode)
ec->cng_level = 1000;
oslec_adaption_mode(ec, adaption_mode);
- ec->snapshot = (int16_t*)malloc(ec->taps*sizeof(int16_t));
- memset(ec->snapshot, 0, sizeof(int16_t)*ec->taps);
+ ec->snapshot = kcalloc(ec->taps, sizeof(int16_t), GFP_KERNEL);
+ if (!ec->snapshot)
+ goto error_oom;
ec->cond_met = 0;
ec->Pstates = 0;
@@ -288,6 +279,13 @@ struct oslec_state *oslec_create(int len, int adaption_mode)
ec->Lbgn_upper_acc = ec->Lbgn_upper << 13;
return ec;
+
+error_oom:
+ for (i = 0; i < 2; i++)
+ kfree(ec->fir_taps16[i]);
+
+ kfree(ec);
+ return NULL;
}
EXPORT_SYMBOL_GPL(oslec_create);
/*- End of function --------------------------------------------------------*/
diff --git a/drivers/staging/echo/fir.h b/drivers/staging/echo/fir.h
index 277d20e..c29e1e2 100644
--- a/drivers/staging/echo/fir.h
+++ b/drivers/staging/echo/fir.h
@@ -117,11 +117,9 @@ static __inline__ const int16_t *fir16_create(fir16_state_t *fir,
fir->curr_pos = taps - 1;
fir->coeffs = coeffs;
#if defined(USE_MMX) || defined(USE_SSE2) || defined(__bfin__)
- if ((fir->history = malloc(2*taps*sizeof(int16_t))))
- memset(fir->history, 0, 2*taps*sizeof(int16_t));
+ fir->history = kcalloc(2*taps, sizeof(int16_t), GFP_KERNEL);
#else
- if ((fir->history = (int16_t *) malloc(taps*sizeof(int16_t))))
- memset(fir->history, 0, taps*sizeof(int16_t));
+ fir->history = kcalloc(taps, sizeof(int16_t), GFP_KERNEL);
#endif
return fir->history;
}
@@ -139,7 +137,7 @@ static __inline__ void fir16_flush(fir16_state_t *fir)
static __inline__ void fir16_free(fir16_state_t *fir)
{
- free(fir->history);
+ kfree(fir->history);
}
/*- End of function --------------------------------------------------------*/
@@ -275,9 +273,7 @@ static __inline__ const int16_t *fir32_create(fir32_state_t *fir,
fir->taps = taps;
fir->curr_pos = taps - 1;
fir->coeffs = coeffs;
- fir->history = (int16_t *) malloc(taps*sizeof(int16_t));
- if (fir->history)
- memset(fir->history, '\0', taps*sizeof(int16_t));
+ fir->history = kcalloc(taps, sizeof(int16_t), GFP_KERNEL);
return fir->history;
}
/*- End of function --------------------------------------------------------*/
@@ -290,7 +286,7 @@ static __inline__ void fir32_flush(fir32_state_t *fir)
static __inline__ void fir32_free(fir32_state_t *fir)
{
- free(fir->history);
+ kfree(fir->history);
}
/*- End of function --------------------------------------------------------*/
--
1.6.0.2
next prev parent reply other threads:[~2008-10-22 17:41 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-22 17:22 [GIT PATCH] more STAGING patches for 2.6.28 Greg KH
2008-10-22 17:28 ` [PATCH 01/42] Staging: add pcc-acpi driver Greg Kroah-Hartman
2008-10-22 18:37 ` Len Brown
2008-10-22 18:48 ` Greg KH
2008-10-23 2:49 ` Len Brown
2008-10-23 4:55 ` Greg KH
2008-10-23 19:26 ` [GIT PATCH] delete pcc_acpi Len Brown
2008-10-23 20:22 ` Greg KH
2008-10-22 17:28 ` [PATCH 02/42] Staging: W35UND should depend on USB Greg Kroah-Hartman
2008-10-22 17:28 ` [PATCH 03/42] linux-next: build failure Greg Kroah-Hartman
2008-10-22 17:28 ` [PATCH 04/42] Staging: document 4k stack problem for winbond driver Greg Kroah-Hartman
2008-10-22 17:28 ` [PATCH 05/42] Staging: Fix leak in drivers/staging/at76_usb.c Greg Kroah-Hartman
2008-10-22 17:28 ` [PATCH 06/42] staging: fix potential build error in slicoss driver Greg Kroah-Hartman
2008-10-22 17:28 ` [PATCH 07/42] staging: balance parenthesis in wlan-ng headers Greg Kroah-Hartman
2008-10-22 17:28 ` [PATCH 08/42] Staging: Fixes for me4000 pci data collection driver Greg Kroah-Hartman
2008-10-22 17:28 ` [PATCH 09/42] Staging: SLICOSS: remove duplicated #include's Greg Kroah-Hartman
2008-10-22 17:28 ` [PATCH 10/42] Staging: et131x: " Greg Kroah-Hartman
2008-10-22 17:28 ` [PATCH 11/42] Staging: wlan-ng: prism2: remove duplicated #include Greg Kroah-Hartman
2008-10-22 17:28 ` [PATCH 12/42] staging: wlan-ng: prism2: remove more " Greg Kroah-Hartman
2008-10-22 17:28 ` [PATCH 13/42] Staging: go7007: remove unused #include <version.h> Greg Kroah-Hartman
2008-10-22 17:28 ` [PATCH 14/42] Staging: SLICOSS: " Greg Kroah-Hartman
2008-10-22 17:28 ` [PATCH 15/42] Staging: w35und: remove some typedefs Greg Kroah-Hartman
2008-10-22 17:28 ` [PATCH 16/42] Staging: sxg: replace __FUNCTION__ with __func__ Greg Kroah-Hartman
2008-10-22 17:28 ` [PATCH 17/42] Staging: echo: A separate oslec.h for external interface Greg Kroah-Hartman
2008-10-22 17:28 ` [PATCH 18/42] Staging: echo: Export interface functions. Add module headers Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 19/42] Staging: echo: Replace echo_can_state_t with struct echo_can_state Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 20/42] Staging: echo: Changed preffix from echo_can_ to oslec_ Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 21/42] Staging: echo: Replace __BLACKFIN__ASM__ with __bfin__ Greg Kroah-Hartman
2008-10-22 17:29 ` Greg Kroah-Hartman [this message]
2008-10-22 17:29 ` [PATCH 23/42] Staging: echo: remove dead code Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 24/42] Staging: echo: remove __cplusplus macro magic Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 25/42] Staging: echo: remove annoying "end of function" markers Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 26/42] Staging: wlan-ng: fix build error if wireless networking is not enabled Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 27/42] Staging: add poch driver Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 28/42] Staging: remove remaining uses of __FUNCTION__ Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 29/42] Staging: Clean up sxg driver Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 30/42] Staging: pcc-acpi: update to latest version Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 31/42] Staging: PCC-ACPI: Fix all checkpatch errors Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 32/42] Staging: SLICOSS: Free multicast list at driver exit Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 33/42] Staging: Lindent the echo driver Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 34/42] Staging: sxg: clean up C99 comments Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 35/42] Staging: sxg: fix up unused function warnings Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 36/42] Staging: sxg: fix compiler warnings Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 37/42] Staging: w35und: remove spinlock wrappers Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 38/42] Staging: w35und: use gotos for error handling Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 39/42] Staging: w35und: module init cleanup Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 40/42] Staging: wbusb: fix a bunch of compiler warnings Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 41/42] Staging: me4000: remove some " Greg Kroah-Hartman
2008-10-22 17:29 ` [PATCH 42/42] Staging: usbip: fix build warning on 64bit kernels Greg Kroah-Hartman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1224696563-5170-22-git-send-email-gregkh@suse.de \
--to=gregkh@suse.de \
--cc=david@rowetel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=penberg@cs.helsinki.fi \
--cc=steveu@coppice.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox