Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a248ce06 authored by Rickard Strandqvist's avatar Rickard Strandqvist Committed by Takashi Iwai
Browse files

staging: line6: toneport.c: Fix for possible null pointer dereference



The NULL check was done to late, and there it was a risk
of a possible null pointer dereference.

This was partially found by using a static code analysis program called cppcheck.

Signed-off-by: default avatarRickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
Reviewed-by: default avatarStefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent eaa27f34
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -433,12 +433,16 @@ void line6_toneport_reset_resume(struct usb_line6_toneport *toneport)
void line6_toneport_disconnect(struct usb_interface *interface)
{
	struct usb_line6_toneport *toneport;
	struct snd_line6_pcm *line6pcm;
	u16 idProduct;

	if (interface == NULL)
		return;

	toneport = usb_get_intfdata(interface);
	if (NULL == toneport)
		return;

	del_timer_sync(&toneport->timer);
	idProduct = le16_to_cpu(toneport->line6.usbdev->descriptor.idProduct);

@@ -447,14 +451,11 @@ void line6_toneport_disconnect(struct usb_interface *interface)
		device_remove_file(&interface->dev, &dev_attr_led_green);
	}

	if (toneport != NULL) {
		struct snd_line6_pcm *line6pcm = toneport->line6.line6pcm;

	line6pcm = toneport->line6.line6pcm;
	if (line6pcm != NULL) {
		line6_pcm_release(line6pcm, LINE6_BITS_PCM_MONITOR);
		line6_pcm_disconnect(line6pcm);
	}
	}

	toneport_destruct(interface);
}