ofono/drivers
Sergio Checa Blanco 6369cc902c hfpmodem: Fix crash with more than two calls
A periodic CLCC polling is started when there is an ongoing multiparty
call and a new call appears in the system. A simple way to reproduce
the crashing scenario is:

1. Place a call.
2. Place a second call.
3. Create a multiparty call with both calls.
4. Place a third call (incoming or outgoing does not matter).
5. Disconnect HFP from the modem.

Within the function ciev_callheld_notify, the AT+CLCC command is also
invoked, thus a new cyclic CLCC polling is started, and it overwrites
the timer resource identifier stored in voicecall_data.clcc_source.
This means that there are several timers doing the CLCC polling, but
only one of those is under control, i.e. it can be removed through its
source identifier, hence a timer source leak.

This has a fatal consequence when the HFP modem is disconnected. The
function hfp_voicecall_remove stops the timer that is under control
before freeing the voicecall_data struct. However there are other timers
that are still active and will execute its handler poll_clcc afterwards.
Inside poll_clcc the driver_data is accessed, which is already NULL.

A solution for this is to avoid starting a CLCC polling if there is
already one active, i.e. clcc_source is not 0. By doing this the
uncontrolled timers will not cycle forever.
2014-06-30 13:22:10 -05:00
..
atmodem atmodem: set the PPP authentication method to use 2014-06-21 12:02:51 -05:00
calypsomodem drivers: Update copyright information 2011-10-10 13:39:48 -07:00
cdmamodem cdma-connman: Turn off modem dormancy timeouts 2011-12-09 05:35:48 -06:00
dunmodem dunmodem: Add stub for gprs. 2011-08-03 22:34:04 +02:00
hfpmodem hfpmodem: Fix crash with more than two calls 2014-06-30 13:22:10 -05:00
hsomodem hsomodem: Remove atom if driver fails to init 2012-03-26 16:50:36 -05:00
huaweimodem huaweimodem: Use network interface from modem for GPRS context 2012-05-26 09:48:25 +02:00
iceramodem iceramodem: Read supported bands as part of radio settings 2012-05-25 20:54:21 +02:00
ifxmodem ifx: Fix the case of modem-originated call 2012-11-28 10:31:15 -06:00
isimodem isi: Update UICC driver to the new API 2012-11-22 10:26:34 -06:00
mbmmodem drivers: Update copyright information 2011-10-10 13:39:48 -07:00
nwmodem nwmodem: Remove atom if driver fails to init 2012-03-26 16:50:59 -05:00
qmimodem sim: Fix whitespace violation 2013-01-15 12:16:08 -06:00
speedupmodem speedup: No need to parse error 2012-04-16 13:15:52 -05:00
stemodem drivers: Update copyright information 2011-10-10 13:39:48 -07:00
swmodem swmodem: Add extra informational AT+CGCONTRDP command 2012-06-25 00:02:17 -07:00
ztemodem ztemodem: Remove atom if driver fails to init 2012-03-26 16:50:11 -05:00