linux/drivers/staging/greybus
Bryan O'Donoghue fece9c87cb greybus: Ensure gb->mutex is held when adding timer
Currently in loopback on the async path we issue an operation and then add
a timer to time-out that operation should it fail to complete. Looking at a
backtrace given in its feasible op_async->pending can be true and
del_timer() can run before add_timer() has run. In the callback handler we
already hold gb->mutex. This patch fixes that potential race by ensuring we
hold gb->mutex both when we are adding and when we are removing the
relevant timer.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reported-and-tested-by: Axel Haslam <ahaslam@baylibre.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-03-16 21:49:31 -07:00
..
Documentation greybus: Documentation/sysfs: make 1-5 a 2x2 module 2016-02-25 16:23:01 -08:00
tools greybus: loopback_test: Use timeout argument 2016-03-08 06:22:53 -08:00
.gitignore greybus: tools: Add tools directory to greybus repo and add loopback 2015-12-17 18:17:07 -08:00
LICENSE greybus: Initial commit 2014-08-11 15:29:23 +08:00
Makefile greybus: only build arche platform driver if usb3613 is enabled 2016-02-15 14:43:59 -08:00
README greybus: update README with info on how to build and contact me. 2014-08-11 15:44:51 +08:00
arche-apb-ctrl.c greybus: arche-platform: fix incorrect gpio variable type 2016-03-08 06:21:21 -08:00
arche-platform.c greybus: arche-platform: fix incorrect gpio variable type 2016-03-08 06:21:21 -08:00
arche_platform.h greybus: arche-apb-ctrl: Export operational fns from driver 2016-02-15 13:18:40 -08:00
audio_apbridgea.c greybus: audio: Split start and stop APBridgeA requests 2016-03-01 22:44:49 -08:00
audio_apbridgea.h greybus: audio: Split start and stop APBridgeA requests 2016-03-01 22:44:49 -08:00
audio_codec.c greybus: audio: Split start and stop APBridgeA requests 2016-03-01 22:44:49 -08:00
audio_codec.h greybus: audio: Split start and stop APBridgeA requests 2016-03-01 22:44:49 -08:00
audio_gb.c greybus: audio: Fix sparse warnings 2016-02-02 21:26:32 -08:00
audio_manager.c greybus: audio_manager: add missing header 2016-02-03 10:38:54 -08:00
audio_manager.h greybus: audio: Add Audio Manager 2016-01-13 16:12:56 -08:00
audio_manager_module.c greybus: audio: Add Audio Manager 2016-01-13 16:12:56 -08:00
audio_manager_private.h greybus: audio: Add Audio Manager 2016-01-13 16:12:56 -08:00
audio_manager_sysfs.c greybus: audio: Add Audio Manager 2016-01-13 16:12:56 -08:00
audio_topology.c greybus: audio: use variable 'is_connected' to maintain module state 2016-02-02 21:46:54 -08:00
bundle.c greybus: core: defer connection creation to driver probe 2016-01-21 22:45:09 -08:00
bundle.h greybus: bundle: remove private data field 2016-02-11 21:46:03 -08:00
camera.c greybus: camera: disable E2EFC on CSI connection 2016-03-04 18:32:00 -08:00
connection.c greybus: hd: rename CPort-features callbacks 2016-03-04 18:26:08 -08:00
connection.h greybus: connection: add CSD connection flag 2016-03-04 18:26:08 -08:00
control.c greybus: control: Add TimeSync control commands 2016-03-03 15:22:52 -08:00
control.h greybus: control: Add TimeSync control commands 2016-03-03 15:22:52 -08:00
core.c greybus: expose full 32 bits of vid/pid to userspace 2016-02-26 21:57:03 -08:00
debugfs.c greybus: core: add device prefix to error messages 2016-02-11 21:44:17 -08:00
devices greybus: devices: endpoint description of device 2014-09-13 17:31:27 -07:00
es2.c greybus: hd: rename CPort-features callbacks 2016-03-04 18:26:08 -08:00
firmware.c greybus: firmware: convert to bundle driver 2016-02-01 17:52:20 -08:00
firmware.h greybus: firmware: convert to bundle driver 2016-02-01 17:52:20 -08:00
gb-camera.h greybus: camera: Add support for configure streams flag in gb interface 2016-01-17 11:16:46 -08:00
gpbridge.c greybus: manifest: reserve the Bridged PHY class 2016-03-03 13:52:10 -08:00
gpbridge.h greybus: gpbridge.h: move protocol init/exit prototypes 2016-03-03 13:52:02 -08:00
gpio.c greybus: gpbridge.h: move protocol init/exit prototypes 2016-03-03 13:52:02 -08:00
greybus.h greybus: firmware: convert to bundle driver 2016-02-01 17:52:20 -08:00
greybus_id.h greybus: fix vendor and product matching 2015-11-21 17:15:35 -08:00
greybus_manifest.h greybus: greybus_manifest: remove unused SVC class 2016-03-09 22:31:13 -08:00
greybus_protocols.h greybus: greybus_protocols: remove svc-eject timeout define 2016-03-10 13:57:42 -08:00
greybus_trace.h greybus: use decimal notation for interfaces, bundles and cports 2015-12-08 15:31:14 -05:00
hd.c greybus: interface: move interface-removal helper 2016-03-10 13:57:42 -08:00
hd.h greybus: hd: rename CPort-features callbacks 2016-03-04 18:26:08 -08:00
hid.c greybus: hid: Replace WARN_ON() with dev_err() 2016-02-29 14:49:28 -08:00
i2c.c greybus: gpbridge.h: move protocol init/exit prototypes 2016-03-03 13:52:02 -08:00
interface.c greybus: interface: separate disabling from removal 2016-03-10 13:57:42 -08:00
interface.h greybus: interface: separate disabling from removal 2016-03-10 13:57:42 -08:00
kernel_ver.h greybus: spi: add device_type field to device config 2016-02-05 16:50:20 -08:00
legacy.c greybus: power_supply: convert to bundle driver 2016-02-15 14:53:43 -08:00
legacy.h greybus: legacy: add legacy-protocol bundle driver 2016-01-19 12:12:40 -08:00
light.c greybus: lights: remove unnecessary check 2016-02-25 16:54:11 -08:00
loopback.c greybus: Ensure gb->mutex is held when adding timer 2016-03-16 21:49:31 -07:00
manifest.c greybus: manifest: Parse cports (within a bundle) in the order from manifest blob 2016-02-15 15:08:22 -08:00
manifest.h greybus: manifest: Use interface descriptor instead of module descriptor to get information 2015-04-06 12:05:58 +02:00
operation.c greybus: operation: add support for short responses 2016-02-25 16:26:58 -08:00
operation.h greybus: operation: add support for short responses 2016-02-25 16:26:58 -08:00
power_supply.c greybus: power_supply: convert to bundle driver 2016-02-15 14:53:43 -08:00
protocol.c greybus: connection: move legacy-protocol handling to legacy driver 2016-01-19 12:17:13 -08:00
protocol.h greybus: gpbridge.h: move protocol init/exit prototypes 2016-03-03 13:52:02 -08:00
pwm.c greybus: gpbridge.h: move protocol init/exit prototypes 2016-03-03 13:52:02 -08:00
raw.c greybus: raw: use hexadecimal notation for request types 2016-03-03 10:02:48 -08:00
sdio.c greybus: gpbridge.h: move protocol init/exit prototypes 2016-03-03 13:52:02 -08:00
spi.c greybus: gpbridge.h: move protocol init/exit prototypes 2016-03-03 13:52:02 -08:00
svc.c greybus: greybus_protocols: remove svc-eject timeout define 2016-03-10 13:57:42 -08:00
svc.h greybus: connection: generalise CPortFlags handling 2016-03-04 18:26:08 -08:00
svc_watchdog.c greybus: svc watchdog: allow it to be enabled/disabled from userspace 2016-01-26 17:06:29 -08:00
uart.c greybus: gpbridge.h: move protocol init/exit prototypes 2016-03-03 13:52:02 -08:00
usb.c greybus: gpbridge.h: move protocol init/exit prototypes 2016-03-03 13:52:02 -08:00
vibrator.c greybus: vibrator: convert to bundle driver 2016-01-21 22:46:38 -08:00

README

Greybus kernel code

To build against the running kernel (odds are you don't want this):
	make

To build against a specific kernel source tree (odds are you want this):
	KERNELDIR=/home/some/random/place make

Any questions / concerns about this code base, please email:
	Greg Kroah-Hartman <greg@kroah.com>