Re: [PATCH 1/3] ALSA: timer: fix NULL pointer dereference in read()/ioctl() race

From: Vegard Nossum
Date: Mon Aug 29 2016 - 03:19:34 EST


This is a multi-part message in MIME format. On 08/29/2016 09:02 AM, Takashi Iwai wrote:
On Mon, 29 Aug 2016 00:33:49 +0200,
Vegard Nossum wrote:
@@ -1602,15 +1602,25 @@ static int snd_timer_user_tselect(struct file *file,
kfree(tu->tqueue);
tu->tqueue = NULL;
if (tu->tread) {
- tu->tqueue = kmalloc(tu->queue_size * sizeof(struct snd_timer_tread),
+ struct snd_timer_tread *ttr;
+ ttr = kmalloc(tu->queue_size * sizeof(struct snd_timer_tread),
GFP_KERNEL);
- if (tu->tqueue == NULL)
+ if (ttr) {
+ kfree(tu->tqueue);
+ tu->tqueue = ttr;

This looks like the double-tree, as you didn't remove the kfree() call
in the above. But, I guess this change is superfluous when you
introduce the mutex at...

You're right, this hunk is garbage.

Please see the new patch (attached), I also changed the patch
description slightly to match the changes.

I'll start running some tests on the new patch.

Thanks!


Vegard