Messages in this thread | | | Date | Mon, 5 Dec 2011 13:38:32 -0800 | From | Tejun Heo <> | Subject | Re: [PATCH 1/2] PM / Usermodehelper: Introduce reference counting to solve usermodehelper_disabled race |
| |
On Tue, Dec 06, 2011 at 02:56:15AM +0530, Srivatsa S. Bhat wrote: > This patch adds the necessary synchronization framework to fix the race > condition with the 'usermodehelper_disabled' flag, by implementing a > refcounting solution. Specifically, it introduces the pair get_usermodehelper() > and put_usermodehelper(), which can be used by the readers (those who want to > read the value of the usermodehelper_disabled flag, such as _request_firmware() > in this case). The writers (those who enable/disable usermodehelpers by > setting/resetting that flag) can use the pair umh_control_begin() and > umh_control_done(). > > The reason for using a refcounting solution and not just a plain mutex, is > that we don't want to unnecessarily serialize all users of request_firmware(), > which act as readers. But note that we cannot use reader-writer locks here > because the readers sleep (waiting for the firmware load from user-space), > and sleeping with spinlocks held is not allowed. So refcounting implemented > using mutex locks underneath, seems to be the best fit here.
I haven't really read the patch yet but, from the description, why not use rwsem?
Thanks.
-- tejun
| |