From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932862AbcE0IzH (ORCPT ); Fri, 27 May 2016 04:55:07 -0400 Received: from mout.gmx.net ([212.227.15.19]:51236 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932456AbcE0IzE (ORCPT ); Fri, 27 May 2016 04:55:04 -0400 Subject: Re: [PATCH] Input: pwm-beeper - fix: scheduling while atomic To: Dmitry Torokhov References: <56C4735E.6020300@gmx.at> <20160222194639.GD26177@dtor-ws> <20160512121852.GB26824@ulmo.ba.sec> <5735F4E3.20008@gmx.at> <573C8761.9070601@gmx.at> <20160520165918.GE14951@dtor-ws> <574411B5.2010407@gmx.at> <20160526003615.GE22369@dtor-ws> Cc: Thierry Reding , Manfred Schlaegl , Luis de Bethencourt , Olivier Sobrie , linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman From: Manfred Schlaegl X-Enigmail-Draft-Status: N1110 Message-ID: <57480B5C.7080409@gmx.at> Date: Fri, 27 May 2016 10:54:52 +0200 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:38.0) Gecko/20100101 Icedove/38.8.0 MIME-Version: 1.0 In-Reply-To: <20160526003615.GE22369@dtor-ws> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:sWV+HK1TzRCgycYXi0ra8OnX1E1vxrZ8Xztr5zXp2HLHkRg191U Wf9mTpYN6kJDi6310+3bOXsSPEIqoyEjdgRHRp1jaVhlL3LRIwJHlrPX9rICfBm9hj32tok rtg8MCWz97rfj6Ifz8H9c/2AI0AZnZ71+Ljo/FN041123eDHvz5FShlCbIvG7XJxrJTTOjX OWSxH7ClNOqt8WPZ4hbFA== X-UI-Out-Filterresults: notjunk:1;V01:K0:eVFfYEdqoJc=:uH3YmtZTVMaj6Q3+uw3/eC kvYRDB2C9nYP1QYo4CEJskJQiQveDJ3l2hz3BUoVkRlmKjvfQmN/ttnbTpjz+e4j1r9jDOdLR FV4rpzxMNWQIU0x8CZktJ1P0zfPfbgOPD0jX0iFWdWqPWMo2CgD4R92ygcrPDZH1TTbIsqpP2 UW0xD6palGLhu7ghGAhOnk8+pMcaqS1rmm3DXr42AmP1ep9eFGpUea2iAjycP8rBnJ1Eky7+h m3o6o/pO6iCHpThbo8hKwXo8GSl76eWZk9DNXIWgY107lOnpQUVSN+y2ku7Fgp72tkaErxzGS A9r6hqTssJB45hhqdd/0IKKe7Z5V2Q2e6+v7qi048TQVij2PM++KBzt58ahDWjOdmfHZ4mHuG U4/iGygg1NnIQGO+KFjRVjSiBP9D3+Lk6/6zaM7rUZooH8od7S1WUCPVScdH3eOHWTztuLnTb CCiWWMJ+uYpaM4vCHHrs1f7wCmMntkAcLanvMPMQM2vdL8YB/VFhdC9MjQvYU9hAoFg1gonPR 7GW2RD2VTx7adW9MkfvA+zARv5/c7UCrOk680/7ZejD1/dIalvvSJxlz4b78YAWtbBr7w+FZC 4ALSW6kN4xdiesLz4bl+W1vIHOV/UDPAPmDO7gKT/acsBhFnHZ5N04emnuvQTdDLx5jwFPxju vfRXoFWYwJnA471Isl7YjbY8nJKy1rYk80Sif7PGVE+K03T4fRt4YPtnSQIwlhcreGOXNvdM6 Vs0IxFGb+2xY0tPR6xXNPRdzhs7u/ynLpYO+2JuWpkEbp8v3ET/4agMaLkReX5G4D/a+A7XQd iMTsf1c Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2016-05-26 02:36, Dmitry Torokhov wrote: > On Tue, May 24, 2016 at 10:32:53AM +0200, Manfred Schlaegl wrote: >> On 2016-05-20 18:59, Dmitry Torokhov wrote: >>> Hi Manfred, >>> >>> On Wed, May 18, 2016 at 05:16:49PM +0200, Manfred Schlaegl wrote: >>>> @@ -133,6 +149,8 @@ static int pwm_beeper_remove(struct platform_device *pdev) >>>> { >>>> struct pwm_beeper *beeper = platform_get_drvdata(pdev); >>>> >>>> + cancel_work_sync(&beeper->work); >>>> + >>>> input_unregister_device(beeper->input); >>> >>> This is racy, request to play may come in after cancel_work_sync() >>> returns but before we unregistered input device. I think you want the >>> version below. >>> >> >> Hi Dmitry, >> >> yes you are right. Thank you for your feedback. >> I also see that point, but I think it would be a simpler change just >> to cancel the worker after unregistering the device (to reorder >> cancel_work_sync and input_unregister_device). > > That is an option, but I wanter to have close() because I also want to > convert the driver to used devm for allocating resources, and then we'd > need close() anyway so that we can get rid of remove() method. > > Thanks. > Ok. Thanks for clarification. I will send a patch with the modifications you suggested before. The following patch will also have some slight modifications in line numbers to make it apply after cfae56f18 (input: misc: pwm-beeper: Explicitly apply PWM config extracted from pwm_args). best regards, Manfred