diff options
author | Jarod Wilson | 2011-01-17 20:02:00 +0100 |
---|---|---|
committer | Mauro Carvalho Chehab | 2011-01-19 15:52:22 +0100 |
commit | 88914bdf8c677ebd7e797adac05e47303fd6ac77 (patch) | |
tree | 6ba8b683d9b19ee4d2d7aa0836b1f2cf7dc4d1f6 /drivers/staging/lirc/lirc_serial.c | |
parent | [media] hdpvr: reduce latency of i2c read/write w/recycled buffer (diff) | |
download | kernel-qcow2-linux-88914bdf8c677ebd7e797adac05e47303fd6ac77.tar.gz kernel-qcow2-linux-88914bdf8c677ebd7e797adac05e47303fd6ac77.tar.xz kernel-qcow2-linux-88914bdf8c677ebd7e797adac05e47303fd6ac77.zip |
[media] staging/lirc: fix mem leaks and ptr err usage
When the lirc drivers were converted over to using memdup_user, I
mistakenly also removed corresponding calls to kfree. Add those back. I
also screwed up on the allocation error check in lirc_serial, using if
(PTR_ERR()) instead of if (IS_ERR()), which broke transmit.
Reported-by: Jiri Fojtasek <jiri.fojtasek@hlohovec.net>
Signed-off-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/staging/lirc/lirc_serial.c')
-rw-r--r-- | drivers/staging/lirc/lirc_serial.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/staging/lirc/lirc_serial.c b/drivers/staging/lirc/lirc_serial.c index 9bcf149c4260..1c3099b388e0 100644 --- a/drivers/staging/lirc/lirc_serial.c +++ b/drivers/staging/lirc/lirc_serial.c @@ -966,7 +966,7 @@ static ssize_t lirc_write(struct file *file, const char *buf, if (n % sizeof(int) || count % 2 == 0) return -EINVAL; wbuf = memdup_user(buf, n); - if (PTR_ERR(wbuf)) + if (IS_ERR(wbuf)) return PTR_ERR(wbuf); spin_lock_irqsave(&hardware[type].lock, flags); if (type == LIRC_IRDEO) { @@ -981,6 +981,7 @@ static ssize_t lirc_write(struct file *file, const char *buf, } off(); spin_unlock_irqrestore(&hardware[type].lock, flags); + kfree(wbuf); return n; } |