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

Commit 7363cfc8 authored by Jesper Juhl's avatar Jesper Juhl Committed by Dmitry Torokhov
Browse files

Input: sidewinder - fix memory leak



In sw_connect we leak 'buf' and 'idbuf' when we do not leave via one of
the fail* labels. This was spotted by the coverity checker.

Patch is compile tested only due to lack of hardware.

Signed-off-by: default avatarJesper Juhl <jesper.juhl@gmail.com>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent f39b25be
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -589,7 +589,7 @@ static int sw_connect(struct gameport *gameport, struct gameport_driver *drv)
	struct sw *sw;
	struct input_dev *input_dev;
	int i, j, k, l;
	int err;
	int err = 0;
	unsigned char *buf = NULL;	/* [SW_LENGTH] */
	unsigned char *idbuf = NULL;	/* [SW_LENGTH] */
	unsigned char m = 1;
@@ -776,7 +776,10 @@ static int sw_connect(struct gameport *gameport, struct gameport_driver *drv)
			goto fail4;
	}

	return 0;
 out:	kfree(buf);
	kfree(idbuf);

	return err;

 fail4:	input_free_device(sw->dev[i]);
 fail3:	while (--i >= 0)
@@ -784,9 +787,7 @@ static int sw_connect(struct gameport *gameport, struct gameport_driver *drv)
 fail2:	gameport_close(gameport);
 fail1:	gameport_set_drvdata(gameport, NULL);
	kfree(sw);
	kfree(buf);
	kfree(idbuf);
	return err;
	goto out;
}

static void sw_disconnect(struct gameport *gameport)