--- b/drivers/staging/slicoss/slicoss.c 2008-11-04 11:53:12.878116772 +0200
+++ a/drivers/staging/slicoss/slicoss.c 2008-11-04 12:08:40.800644774 +0200
@@ -2673,7 +2673,7 @@ static int slic_card_init(struct sliccar
#if SLIC_DUMP_ENABLED
if (!card->dumpbuffer) {
- card->dumpbuffer = kmalloc(DUMP_PAGE_SIZE, GFP_ATOMIC);
+ card->dumpbuffer = kzalloc(DUMP_PAGE_SIZE, GFP_ATOMIC);
ASSERT(card->dumpbuffer);
if (card->dumpbuffer == NULL)
@@ -2683,7 +2683,6 @@ static int slic_card_init(struct sliccar
* Smear the shared memory structure and then obtain
* the PHYSICAL address of this structure
*/
- memset(card->dumpbuffer, 0, DUMP_PAGE_SIZE);
card->dumpbuffer_phys = virt_to_bus(card->dumpbuffer);
card->dumpbuffer_physh = SLIC_GET_ADDR_HIGH(card->dumpbuffer_phys);
card->dumpbuffer_physl = SLIC_GET_ADDR_LOW(card->dumpbuffer_phys);
@@ -2692,7 +2691,7 @@ static int slic_card_init(struct sliccar
* Allocate COMMAND BUFFER
*/
if (!card->cmdbuffer) {
- card->cmdbuffer = kmalloc(sizeof(struct dump_cmd), GFP_ATOMIC);
+ card->cmdbuffer = kzalloc(sizeof(struct dump_cmd), GFP_ATOMIC);
ASSERT(card->cmdbuffer);
if (card->cmdbuffer == NULL)
@@ -2702,7 +2701,6 @@ static int slic_card_init(struct sliccar
* Smear the shared memory structure and then obtain
* the PHYSICAL address of this structure
*/
- memset(card->cmdbuffer, 0, sizeof(struct dump_cmd));
card->cmdbuffer_phys = virt_to_bus(card->cmdbuffer);
card->cmdbuffer_physh = SLIC_GET_ADDR_HIGH(card->cmdbuffer_phys);
card->cmdbuffer_physl = SLIC_GET_ADDR_LOW(card->cmdbuffer_phys);
@@ -2833,9 +2831,8 @@ static u32 slic_card_locate(struct adapt
}
if (!physcard) {
/* no structure allocated for this physical card yet */
- physcard = kmalloc(sizeof(struct physcard *), GFP_ATOMIC);
+ physcard = kzalloc(sizeof(struct physcard *), GFP_ATOMIC);
ASSERT(physcard);
- memset(physcard, 0, sizeof(struct physcard *));
DBG_MSG
("\n%s Allocate a PHYSICALcard:\n PHYSICAL_Card[%p]\n\
On 11/04/2008 05:27 PM, Lior Dotan wrote:
> This patch uses kzalloc() where applicable.
>
> Signed-off-by: Lior Dotan <[email protected]>
/drivers/staging/slicoss/slicoss.c
=======================================
--- b/drivers/staging/slicoss/slicoss.c 2008-11-04 11:53:12.878116772 +0200
+++ a/drivers/staging/slicoss/slicoss.c 2008-11-04 12:08:40.800644774 +0200
@@ -2673,8 +2673,8 @@
static·int·slic_card_init(struct·sliccar
#if·SLIC_DUMP_ENABLED
» if·(!card->dumpbuffer)·{
-» » card->dumpbuffer·=·kmalloc(DUMP_PAGE_SIZE,·GFP_ATOMIC);
+» » card->dumpbuffer·=·kzalloc(DUMP_PAGE_SIZE,·GFP_ATOMIC);
» » ASSERT(card->dumpbuffer);
» » if·(card->dumpbuffer·==·NULL)
@@ -2683,8 +2683,7 @@
static·int·slic_card_init(struct·sliccar
» ·*··Smear·the·shared·memory·structure·and·then·obtain
» ·*··the·PHYSICAL·address·of·this·structure
» ·*/
-» memset(card->dumpbuffer,·0,·DUMP_PAGE_SIZE);
It's wrong, the function in called multiple times, the memset was called every
time, now it would be called only for the first time.
--- b/drivers/staging/slicoss/slicoss.c 2008-11-05 11:21:13.697789873 +0200
+++ a/drivers/staging/slicoss/slicoss.c 2008-11-05 11:24:00.768399196 +0200
@@ -2833,9 +2833,8 @@ static u32 slic_card_locate(struct adapt
}
if (!physcard) {
/* no structure allocated for this physical card yet */
- physcard = kmalloc(sizeof(struct physcard *), GFP_ATOMIC);
+ physcard = kzalloc(sizeof(struct physcard *), GFP_ATOMIC);
ASSERT(physcard);
- memset(physcard, 0, sizeof(struct physcard *));
DBG_MSG
("\n%s Allocate a PHYSICALcard:\n PHYSICAL_Card[%p]\n\
On 11/05/2008 10:27 AM, Lior Dotan wrote:
> This patch uses kzalloc() where really applicable.
ack this, but there is another problem.
sizeof(struct physcard *) is wrong size for that allocation, care to send a fix
for this (and revice the rest of allocations)? I wonder how this could work with
SLAB_DEBUG on, maybe nobody tried...
--- b/drivers/staging/slicoss/slicoss.c 2008-11-05 11:39:42.017791088 +0200
+++ a/drivers/staging/slicoss/slicoss.c 2008-11-05 11:48:16.237808996 +0200
@@ -323,7 +323,7 @@ static void slic_init_adapter(struct net
index, pslic_handle, adapter->pfree_slic_handles, pslic_handle->next);*/
adapter->pshmem = (struct slic_shmem *)
pci_alloc_consistent(adapter->pcidev,
- sizeof(struct slic_shmem *),
+ sizeof(struct slic_shmem),
&adapter->
phys_shmem);
/*
@@ -1432,7 +1432,7 @@ static void slic_init_cleanup(struct ada
DBG_MSG("adapter[%p] port %d pshmem[%p] FreeShmem ",
adapter, adapter->port, (void *) adapter->pshmem);
pci_free_consistent(adapter->pcidev,
- sizeof(struct slic_shmem *),
+ sizeof(struct slic_shmem),
adapter->pshmem, adapter->phys_shmem);
adapter->pshmem = NULL;
adapter->phys_shmem = (dma_addr_t) NULL;
@@ -2833,7 +2833,7 @@ static u32 slic_card_locate(struct adapt
}
if (!physcard) {
/* no structure allocated for this physical card yet */
- physcard = kzalloc(sizeof(struct physcard *), GFP_ATOMIC);
+ physcard = kzalloc(sizeof(struct physcard), GFP_ATOMIC);
ASSERT(physcard);
DBG_MSG
On 11/05/2008 10:52 AM, Lior Dotan wrote:
> Fix sizeof to use the right type
Well, next step might be to investigate which allocs might be GFP_KERNEL instead
of GFP_ATOMIC if you want to play with that ;).