Skip to content

Commit

Permalink
s390/monwriter: do not use stack buffers for hardware data
Browse files Browse the repository at this point in the history
With CONFIG_VMAP_STACK=y the stack is allocated from the vmalloc space.
Data structures passed to a hardware or a hypervisor interface that
requires V=R can not be allocated on the stack anymore.

Use kmalloc to get memory for the appldata_parameter_list and
appldata_product_id structures.

Reviewed-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
  • Loading branch information
Martin Schwidefsky committed Oct 9, 2018
1 parent 8ef9eda commit c0f07ff
Showing 1 changed file with 20 additions and 13 deletions.
33 changes: 20 additions & 13 deletions drivers/s390/char/monwriter.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,24 +58,31 @@ struct mon_private {

static int monwrite_diag(struct monwrite_hdr *myhdr, char *buffer, int fcn)
{
struct appldata_parameter_list parm_list;
struct appldata_product_id id;
struct appldata_parameter_list *parm_list;
struct appldata_product_id *id;
int rc;

memcpy(id.prod_nr, "LNXAPPL", 7);
id.prod_fn = myhdr->applid;
id.record_nr = myhdr->record_num;
id.version_nr = myhdr->version;
id.release_nr = myhdr->release;
id.mod_lvl = myhdr->mod_level;
rc = appldata_asm(&parm_list, &id, fcn,
id = kmalloc(sizeof(*id), GFP_KERNEL);
parm_list = kmalloc(sizeof(*parm_list), GFP_KERNEL);
rc = -ENOMEM;
if (!id || !parm_list)
goto out;
memcpy(id->prod_nr, "LNXAPPL", 7);
id->prod_fn = myhdr->applid;
id->record_nr = myhdr->record_num;
id->version_nr = myhdr->version;
id->release_nr = myhdr->release;
id->mod_lvl = myhdr->mod_level;
rc = appldata_asm(parm_list, id, fcn,
(void *) buffer, myhdr->datalen);
if (rc <= 0)
return rc;
goto out;
pr_err("Writing monitor data failed with rc=%i\n", rc);
if (rc == 5)
return -EPERM;
return -EINVAL;
rc = (rc == 5) ? -EPERM : -EINVAL;
out:
kfree(id);
kfree(parm_list);
return rc;
}

static struct mon_buf *monwrite_find_hdr(struct mon_private *monpriv,
Expand Down

0 comments on commit c0f07ff

Please sign in to comment.