summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRabin Vincent <rabin.vincent@stericsson.com>2012-02-19 12:06:37 +0530
committerPhilippe Langlais <philippe.langlais@linaro.org>2012-03-19 09:03:02 +0100
commit025ddfad021effc8ea256d8aa09ddf3b1b8972e6 (patch)
tree36c7a185f6ff7f5cc3d85ea380d105f9bd5a6689
parent64619c48c2f1cfb7974b0f764a2ac863195cc053 (diff)
[ANDROID] logger: hold mutex while removing reader
The readers list is traversed under the log->mutex lock (for example from fix_up_readers()), but the deletion of elements from this list is not being done under this lock. ST-Ericsson ID: 418270 ST-Ericsson Linux next: NA ST-Ericsson FOSS-OUT ID: NA Change-Id: Ib99f2e02b211c17fe54c035e37e648d28be516bb Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/49546 Reviewed-by: Bibek BASU <bibek.basu@stericsson.com> Tested-by: Bibek BASU <bibek.basu@stericsson.com>
-rw-r--r--drivers/staging/android/logger.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/staging/android/logger.c b/drivers/staging/android/logger.c
index ffc2d043dd8..a45c3b04fc5 100644
--- a/drivers/staging/android/logger.c
+++ b/drivers/staging/android/logger.c
@@ -432,7 +432,12 @@ static int logger_release(struct inode *ignored, struct file *file)
{
if (file->f_mode & FMODE_READ) {
struct logger_reader *reader = file->private_data;
+ struct logger_log *log = reader->log;
+
+ mutex_lock(&log->mutex);
list_del(&reader->list);
+ mutex_unlock(&log->mutex);
+
kfree(reader);
}