All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jesper Juhl <jesper.juhl@gmail.com>
To: David Rientjes <rientjes@cs.washington.edu>
Cc: linux-kernel@vger.kernel.org, Giuliano Pochini <pochini@shiny.it>,
	Takashi Iwai <tiwai@suse.de>, Jesper Juhl <jesper.juhl@gmail.com>
Subject: Re: [PATCH] Fix potential NULL pointer dereference in echoaudio midi.
Date: Tue, 31 Oct 2006 23:26:31 +0100	[thread overview]
Message-ID: <200610312326.31526.jesper.juhl@gmail.com> (raw)
In-Reply-To: <Pine.LNX.4.64N.0610311411000.2572@attu4.cs.washington.edu>

On Tuesday 31 October 2006 23:13, David Rientjes wrote:
> On Tue, 31 Oct 2006, Jesper Juhl wrote:
> 
> > In sound/pci/echoaudio/midi.c::snd_echo_midi_output_write(), there's a risk
> > of dereferencing a NULL 'chip->midi_out'.
> > This patch contains the obvious fix as also used a bit higher up in the 
> > same function.
> > 
> 
> How about just adding an early test:
> 	if (!chip->midi_out)
> 		goto out;
> 
> and adding a label for out before the chip->lock unlock?  We still need to 
> clear chip->midi_full so we still require the spinlock, but there's no 
> reason we should be testing chip->midi_out multiple times since the 
> remaining code path in its entirety depends on it.
> 

Sure, that's an alternative solution. Probably a superiour one since, as 
you say, we'll then only be testing 'chip->midi_out' once.

Here's a patch that makes that change instead.
I'll leave it up to the powers-that-be to pick the one they like best :)


Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>
---

diff --git a/sound/pci/echoaudio/midi.c b/sound/pci/echoaudio/midi.c
index e31f0f1..0385b4e 100644
--- a/sound/pci/echoaudio/midi.c
+++ b/sound/pci/echoaudio/midi.c
@@ -213,7 +213,9 @@ static void snd_echo_midi_output_write(u
 	sent = bytes = 0;
 	spin_lock_irqsave(&chip->lock, flags);
 	chip->midi_full = 0;
-	if (chip->midi_out && !snd_rawmidi_transmit_empty(chip->midi_out)) {
+	if (!chip->midi_out)
+		goto out;
+	if (!snd_rawmidi_transmit_empty(chip->midi_out)) {
 		bytes = snd_rawmidi_transmit_peek(chip->midi_out, buf,
 						  MIDI_OUT_BUFFER_SIZE - 1);
 		DE_MID(("Try to send %d bytes...\n", bytes));
@@ -243,6 +245,7 @@ static void snd_echo_midi_output_write(u
 		mod_timer(&chip->timer, jiffies + (time * HZ + 999) / 1000);
 		DE_MID(("Timer armed(%d)\n", ((time * HZ + 999) / 1000)));
 	}
+ out:
 	spin_unlock_irqrestore(&chip->lock, flags);
 }
 



  reply	other threads:[~2006-10-31 22:24 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-31 21:21 [PATCH] Fix potential NULL pointer dereference in echoaudio midi Jesper Juhl
2006-10-31 22:13 ` David Rientjes
2006-10-31 22:26   ` Jesper Juhl [this message]
2006-11-02 20:16     ` Giuliano Pochini
2006-11-02 20:22       ` Jesper Juhl
2006-11-06 10:50         ` Takashi Iwai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200610312326.31526.jesper.juhl@gmail.com \
    --to=jesper.juhl@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pochini@shiny.it \
    --cc=rientjes@cs.washington.edu \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.