Skip to content

Commit

Permalink
[SCSI] zfcp: Fix mempool pointer for GID_PN request allocation
Browse files Browse the repository at this point in the history
When allocating memory for GID_PN nameserver requests, the allocation
function stores the pointer to the mempool, but then overwrites the
pointer via memset. Later, the wrong function to free the memory will
be called, since this is based on the stored pointer.

Fix this by first initializing the struct and then storing the pointer.

Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com>
Signed-off-by: Martin Peschke <mp3@de.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
  • Loading branch information
Christof Schmitt authored and James Bottomley committed Jun 5, 2008
1 parent d26ab06 commit 9dfe1cc
Showing 1 changed file with 3 additions and 6 deletions.
9 changes: 3 additions & 6 deletions drivers/s390/scsi/zfcp_aux.c
Original file line number Diff line number Diff line change
Expand Up @@ -1533,19 +1533,16 @@ zfcp_gid_pn_buffers_alloc(struct zfcp_gid_pn_data **gid_pn, mempool_t *pool)
{
struct zfcp_gid_pn_data *data;

if (pool != NULL) {
if (pool)
data = mempool_alloc(pool, GFP_ATOMIC);
if (likely(data != NULL)) {
data->ct.pool = pool;
}
} else {
else
data = kmem_cache_alloc(zfcp_data.gid_pn_cache, GFP_ATOMIC);
}

if (NULL == data)
return -ENOMEM;

memset(data, 0, sizeof(*data));
data->ct.pool = pool;
sg_init_table(&data->req , 1);
sg_init_table(&data->resp , 1);
data->ct.req = &data->req;
Expand Down

0 comments on commit 9dfe1cc

Please sign in to comment.