linux/drivers/staging/greybus
Dan Carpenter 329101244f staging: greybus: light: fix a couple double frees
The problem is in gb_lights_request_handler().  If we get a request to
change the config then we release the light with gb_lights_light_release()
and re-allocated it.  However, if the allocation fails part way through
then we call gb_lights_light_release() again.  This can lead to a couple
different double frees where we haven't cleared out the original values:

	gb_lights_light_v4l2_unregister(light);
	...
	kfree(light->channels);
	kfree(light->name);

I also made a small change to how we set "light->channels_count = 0;".
The original code handled this part fine and did not cause a use after
free but it was sort of complicated to read.

Fixes: 2870b52bae ("greybus: lights: add lights implementation")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Rui Miguel Silva <rmfrfs@gmail.com>
Link: https://lore.kernel.org/r/20190829122839.GA20116@mwanda
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-09-03 09:39:10 +02:00
..
Documentation staging: greybus: remove license "boilerplate" 2019-08-27 19:02:26 +02:00
tools staging: greybus: remove license "boilerplate" 2019-08-27 19:02:26 +02:00
Kconfig staging: greybus: move es2 to drivers/greybus/ 2019-08-27 19:03:08 +02:00
Makefile staging: greybus: move es2 to drivers/greybus/ 2019-08-27 19:03:08 +02:00
TODO staging: greybus: gpio: switch GPIO portions to use GPIOLIB_IRQCHIP 2019-01-15 16:18:14 +01:00
arche-apb-ctrl.c staging: greybus: arche-apb-ctrl.c: Switch to the gpio descriptor interface 2019-01-15 16:18:14 +01:00
arche-platform.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
arche_platform.h staging: greybus: correct SPDX License Identifier 2018-11-09 09:49:02 -08:00
audio_apbridgea.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
audio_apbridgea.h staging: greybus: remove license "boilerplate" 2019-08-27 19:02:26 +02:00
audio_codec.c staging: remove unneeded static set .owner field in platform_driver 2018-09-14 10:45:51 +02:00
audio_codec.h staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
audio_gb.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
audio_manager.c staging: greybus: remove redundant assignment to variable is_empty 2019-07-22 07:34:10 +02:00
audio_manager.h staging: greybus: correct SPDX License Identifier 2018-11-09 09:49:02 -08:00
audio_manager_module.c staging: greybus: Parenthesis alignment 2018-11-26 20:59:05 +01:00
audio_manager_private.h staging: greybus: correct SPDX License Identifier 2018-11-09 09:49:02 -08:00
audio_manager_sysfs.c staging: greybus: Parenthesis alignment 2018-11-26 20:59:05 +01:00
audio_module.c staging: greybus: Parenthesis alignment 2018-11-26 20:59:05 +01:00
audio_topology.c Staging: greybus: Blank lines not required before '}' 2019-02-26 11:46:51 +01:00
authentication.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
bootrom.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
camera.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
firmware.h staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
fw-core.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
fw-download.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
fw-management.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
gb-camera.h staging: greybus: fix up SPDX comment in .h files 2019-08-27 19:02:18 +02:00
gbphy.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
gbphy.h staging: greybus: fix up SPDX comment in .h files 2019-08-27 19:02:18 +02:00
gpio.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
greybus_authentication.h staging: greybus: remove license "boilerplate" 2019-08-27 19:02:26 +02:00
greybus_firmware.h staging: greybus: remove license "boilerplate" 2019-08-27 19:02:26 +02:00
hid.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
i2c.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
light.c staging: greybus: light: fix a couple double frees 2019-09-03 09:39:10 +02:00
log.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
loopback.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
power_supply.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
pwm.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
raw.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
sdio.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
spi.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
spilib.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
spilib.h staging: greybus: fix up SPDX comment in .h files 2019-08-27 19:02:18 +02:00
uart.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
usb.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
vibrator.c staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00