Messages in this thread | | | Date | Fri, 1 Apr 2016 12:43:33 +0200 | From | Pali Rohár <> | Subject | Race condition in TPA6130A2 (Was: Re: Nokia N900 - audio TPA6130A2 problems) |
| |
On Wednesday 16 March 2016 15:47:10 Sebastian Reichel wrote: > I just had another look at the driver and I think there is a race > condition for tpa6130a2_add_controls() and tpa6130a2_stereo_enable(). > > As far as I can see both functions check for "tpa6130a2_client != > NULL". tpa6130a2_client is set before the probe function has finished, > though. Simplified probe: > > ... > tpa6130a2_client = client; > set_default_regs(); > acquire_power_gpio(); > acquire_regulator(); > tpa6130a2_power(1); // needs tpa6130a2_client > check_device(); > tpa6130a2_power(0); // needs tpa6130a2_client > ... > > If tpa6130a2_add_controls() or tpa6130a2_stereo_enable() is called > after tpa6130a2 probe has started, but before probe has completed, > tpa6130a2_client is set, but not yet initialized. The race condition > can be fixed easily by moving the tpa6130a2_client assignment directly > after the regulator acquisition. > > -- Sebastian
Is this race condition really relevant? If yes, then it should be fixed.
-- Pali Rohár pali.rohar@gmail.com
| |