From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S937707AbdAKMb5 (ORCPT ); Wed, 11 Jan 2017 07:31:57 -0500 Received: from mail1.bemta12.messagelabs.com ([216.82.251.1]:35905 "EHLO mail1.bemta12.messagelabs.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932300AbdAKMbz (ORCPT ); Wed, 11 Jan 2017 07:31:55 -0500 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupileJIrShJLcpLzFFi42I5fN1ile521bI IgxtXxSz+TjrGbrHp8TVWi8u75rBZ3Fi3j93iycIzTBY/Hk5nslh6/SKTxe2Jkxktbs14werA 6bFm3hpGj9+/JjF6XNss5rF5Sb3Hm9On2D36/xp47PzewO7xeZNcAEcUa2ZeUn5FAmvG26t3m Qt+clb8eLiYuYGxh6OLkYtDSGAZo8TsYzuYuhg5OYQFIiUeLJ3DDmKLCKhJNJ9qYQMpYha4zS Sx+OlCFoiO+UwSky6sYgGpYhMwkbh5/xyYzSvgLPFx8TxWEJtFQFXiwuo+sLioQILEinNzmCB qBCVOznwCFOfg4BRwkFgzNR0kzCygKdG6/Tc7hC0oseT1GkYIW15i+9s5zCC2kIC2xPuNi8HG SwgoSEyd3Mo8gVFgFpKps5CMmoVk1CwkoxYwsqxi1ChOLSpLLdI1NNNLKspMzyjJTczM0TU0N NLLTS0uTkxPzUlMKtZLzs/dxAiMo3oGBsYdjI3TvQ4xSnIwKYnynnldGiHEl5SfUpmRWJwRX1 Sak1p8iFGGg0NJgneuSlmEkGBRanpqRVpmDjCiYdISHDxKIrx6IGne4oLE3OLMdIjUKUZFKXF eNZCEAEgiozQPrg2WRC4xykoJ8zIyMDAI8RSkFuVmlqDKv2IU52BUEuYtBJnCk5lXAjf9FdBi JqDFkXbFIItLEhFSUg2MBukS0asM16S9e3006eK/JO1nd82rdz/hMQ67kOHTc/V1QuVTi5y7B UdmvFNZeE6fvZXX/aZ3yrlP2Rx9niujFNyX5F9k9hUM2uioqy1ymXOlVMbJF6/EmXujvj9VV6 jl/iMfzJVzvvLx9cV3lL5+WPBLMb++d3nujXMz9+e+avD90S0++XSdEktxRqKhFnNRcSIAc3X aoR0DAAA= X-Env-Sender: Marc_Gonzalez@sigmadesigns.com X-Msg-Ref: server-5.tower-219.messagelabs.com!1484137909!134447817!1 X-Originating-IP: [195.215.56.170] X-StarScan-Received: X-StarScan-Version: 9.1.1; banners=-,-,- X-VirusChecked: Checked Subject: Re: [PATCH 56/62] watchdog: tangox_wdt: Convert to use device managed functions To: Guenter Roeck CC: Wim Van Sebroeck , , , , Mans Rullgard , Thibaud Cornic , Mark Rutland , Uwe Kleine-Konig , Arnd Bergmann References: <1484091325-9199-1-git-send-email-linux@roeck-us.net> <1484100561-17638-1-git-send-email-linux@roeck-us.net> <1484100561-17638-5-git-send-email-linux@roeck-us.net> <94c4d5c0-f639-eab1-6706-335977690e88@roeck-us.net> From: Marc Gonzalez Message-ID: Date: Wed, 11 Jan 2017 13:31:47 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0 SeaMonkey/2.47 MIME-Version: 1.0 In-Reply-To: <94c4d5c0-f639-eab1-6706-335977690e88@roeck-us.net> Content-Type: text/plain; charset="UTF-8" Content-Language: Content-Transfer-Encoding: 7bit X-Originating-IP: [172.27.0.114] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/01/2017 11:52, Guenter Roeck wrote: > On 01/11/2017 01:07 AM, Marc Gonzalez wrote: > >>> @@ -134,12 +134,15 @@ static int tangox_wdt_probe(struct platform_device *pdev) >>> err = clk_prepare_enable(dev->clk); >>> if (err) >>> return err; >>> + err = devm_add_action_or_reset(&pdev->dev, >>> + (void(*)(void *))clk_disable_unprepare, >>> + dev->clk); >>> + if (err) >>> + return err; >> >> Hello Guenter, >> >> I would rather avoid the function pointer cast. >> How about defining an auxiliary function for the cleanup action? >> >> clk_disable_unprepare() is static inline, so gcc will have to >> define an auxiliary function either way. What do you think? > > Not really. It would just make it more complicated to replace the > call with devm_clk_prepare_enable(), should it ever find its way > into the light of day. More complicated, because the cleanup function will have to be deleted later? The compiler will warn if someone forgets to do that. In my opinion, it's not a good idea to rely on the fact that casting void(*)(struct clk *clk) to void(*)(void *) is likely to work as expected on most platforms. (It has undefined behavior, strictly speaking.) Do you really dislike the portable solution I suggested? :-( Regards.