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

Commit 852fef69 authored by Oliver Neukum's avatar Oliver Neukum Committed by Linus Torvalds
Browse files

fix for a memory leak in an error case introduced by fix for double free



The fix NULLed a pointer without freeing it.

Signed-off-by: default avatarOliver Neukum <oneukum@suse.de>
Reported-by: default avatarJuha Motorsportcom <juha_motorsportcom@luukku.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 9ee08c2d
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -651,15 +651,17 @@ static int ipaq_open(struct tty_struct *tty,
	 */

	kfree(port->bulk_in_buffer);
	kfree(port->bulk_out_buffer);
	/* make sure the generic serial code knows */
	port->bulk_out_buffer = NULL;

	port->bulk_in_buffer = kmalloc(URBDATA_SIZE, GFP_KERNEL);
	if (port->bulk_in_buffer == NULL) {
		port->bulk_out_buffer = NULL; /* prevent double free */
	if (port->bulk_in_buffer == NULL)
		goto enomem;
	}

	kfree(port->bulk_out_buffer);
	port->bulk_out_buffer = kmalloc(URBDATA_SIZE, GFP_KERNEL);
	if (port->bulk_out_buffer == NULL) {
		/* the buffer is useless, free it */
		kfree(port->bulk_in_buffer);
		port->bulk_in_buffer = NULL;
		goto enomem;