diff options
author | Michael Buesch <mb@bu3sch.de> | 2009-07-19 21:40:39 +0200 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2009-09-12 14:48:40 +0200 |
commit | 64549e9357e5222a73e41aa87372b37abb047720 (patch) | |
tree | 0262ec2f55cd27294601e71fa0da14f90df9c8c2 | |
parent | 74fca6a42863ffacaf7ba6f1936a9f228950f657 (diff) | |
download | blackbird-op-linux-64549e9357e5222a73e41aa87372b37abb047720.tar.gz blackbird-op-linux-64549e9357e5222a73e41aa87372b37abb047720.zip |
ieee1394: raw1394: Do not leak memory on failed trylock.
Do not leak the allocated memory in case the mutex_trylock() failed
to acquire the lock.
Signed-off-by: Michael Buesch <mb@bu3sch.de>
This bug does not happen in practice: All raw1394 clients use
libraw1394, and accesses to a libraw1394 handle need to be serialized
by the client. This is documented in libraw1394's API reference.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
-rw-r--r-- | drivers/ieee1394/raw1394.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/ieee1394/raw1394.c b/drivers/ieee1394/raw1394.c index da5f8829b503..0bc3d78ce7b1 100644 --- a/drivers/ieee1394/raw1394.c +++ b/drivers/ieee1394/raw1394.c @@ -2272,8 +2272,10 @@ static ssize_t raw1394_write(struct file *file, const char __user * buffer, return -EFAULT; } - if (!mutex_trylock(&fi->state_mutex)) + if (!mutex_trylock(&fi->state_mutex)) { + free_pending_request(req); return -EAGAIN; + } switch (fi->state) { case opened: |