Commit 59c2e855 authored by Wei Yongjun's avatar Wei Yongjun Committed by Greg Kroah-Hartman
Browse files

serial: vt8500: fix possible memory leak in vt8500_serial_probe()

vt8500_port is malloced in vt8500_serial_probe() and should be freed
before leaving from the error handling cases, otherwise it will
cause memory leak.
Fix it by move the allocation of vt8500_port after those test.

dpatch engine is used to auto generate this patch.
(https://github.com/weiyj/dpatch

)

Signed-off-by: default avatarWei Yongjun <yongjun_wei@trendmicro.com.cn>
Acked-by: default avatarTony Prisk <linux@prisktech.co.nz>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 54ec52b6
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -567,10 +567,6 @@ static int __devinit vt8500_serial_probe(struct platform_device *pdev)
	if (!mmres || !irqres)
		return -ENODEV;

	vt8500_port = kzalloc(sizeof(struct vt8500_port), GFP_KERNEL);
	if (!vt8500_port)
		return -ENOMEM;

	if (np)
		port = of_alias_get_id(np, "serial");
		if (port > VT8500_MAX_PORTS)
@@ -593,6 +589,10 @@ static int __devinit vt8500_serial_probe(struct platform_device *pdev)
		return -EBUSY;
	}

	vt8500_port = kzalloc(sizeof(struct vt8500_port), GFP_KERNEL);
	if (!vt8500_port)
		return -ENOMEM;

	vt8500_port->uart.type = PORT_VT8500;
	vt8500_port->uart.iotype = UPIO_MEM;
	vt8500_port->uart.mapbase = mmres->start;