diff options
-rw-r--r-- | drivers/staging/comedi/comedi_fops.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c index f9f61bda92e2..9c32f0276009 100644 --- a/drivers/staging/comedi/comedi_fops.c +++ b/drivers/staging/comedi/comedi_fops.c | |||
@@ -1462,6 +1462,7 @@ static int __comedi_get_user_chanlist(struct comedi_device *dev, | |||
1462 | unsigned int *chanlist; | 1462 | unsigned int *chanlist; |
1463 | int ret; | 1463 | int ret; |
1464 | 1464 | ||
1465 | cmd->chanlist = NULL; | ||
1465 | chanlist = memdup_user(user_chanlist, | 1466 | chanlist = memdup_user(user_chanlist, |
1466 | cmd->chanlist_len * sizeof(unsigned int)); | 1467 | cmd->chanlist_len * sizeof(unsigned int)); |
1467 | if (IS_ERR(chanlist)) | 1468 | if (IS_ERR(chanlist)) |
@@ -1615,6 +1616,8 @@ static int do_cmdtest_ioctl(struct comedi_device *dev, | |||
1615 | 1616 | ||
1616 | ret = s->do_cmdtest(dev, s, &cmd); | 1617 | ret = s->do_cmdtest(dev, s, &cmd); |
1617 | 1618 | ||
1619 | kfree(cmd.chanlist); /* free kernel copy of user chanlist */ | ||
1620 | |||
1618 | /* restore chanlist pointer before copying back */ | 1621 | /* restore chanlist pointer before copying back */ |
1619 | cmd.chanlist = (unsigned int __force *)user_chanlist; | 1622 | cmd.chanlist = (unsigned int __force *)user_chanlist; |
1620 | 1623 | ||